Send data to Snowflake (Azure)

Note

This topic contains information about configuring a destination that sends query results to Snowflake (Azure) using orchestrations. To configure a destination that sends audiences to Snowflake (Azure) using campaigns see this topic .

Snowflake is an analytic data warehouse that is fast, easy to use, and flexible. Snowflake uses a SQL database engine that is designed for the cloud.

Amperity can send data to customer-managed instances of Snowflake that are located in the same cloud platform as Amperity in the following ways:

  1. To stages that are configured in the customer-managed instance

  2. Sharing directly between an Amperity-managed and a customer-managed instances

Get details

Review the following details before configuring credentials for Snowflake (Azure) and before configuring Amperity to send email lists to Snowflake (Azure).

Detail 1.

Credential settings

Username

Required

A username with permission to access Snowflake (Azure).

Password

Required

The password for the username.

Account name

Required

The unique name of an account that exists within your brand’s Snowflake (Azure) organization.

Shared access signature

Required

The shared access signature that allows access to a Microsoft Azure Blob Storage container.

Detail 2.

Required configuration settings

Account name

The account name is contained within the URL for the Snowflake instance and is a character code located before snowflakecomputing.com. For example: “ab12345”.

Region ID

Required

The ID for the region in which the Snowflake account name is located. For example: “us-west-2”.

Stage

Required

The Snowflake stage name, which is created by the CREATE STAGE command. For example:

AMPERITY_ABCDEF.CUSTOMER_360.AMP_PROD_STAGE

Warehouse

Required

The name of the Snowflake data warehouse. This is created by the CREATE WAREHOUSE command. For example:

AMPERITY_WH

Snowflake location

The table to which data will be loaded. This location is defined using a period-delimited list of Snowflake database name, Snowflake schema name, and Snowflake table name. For example:

SNOWFLAKE_DATABASE_NAME.SNOWFLAKE_SCHEMA.TABLE_NAME

Create table?

Use the Create table option when the table should be created in Snowflake if it is not already there.

Truncate table?

Use the “Truncate table” option when the contents of the table should be emptied prior to loading data.

Drop table?

Use the Drop table option to overwrite the table and apply an updated schema when the upstream segment or table changes.

Configure credentials

Configure credentials for Snowflake (Azure) before adding a destination.

An individual with access to Snowflake (Azure) should use SnapPass to securely share “username”, “password”, “account name”, and “shared access signature” details with the individual who will configure Amperity.

To configure credentials for Snowflake (Azure)

Step 1.

From the Settings page, select the Credentials tab, and then click the Add credential button.

Step 2.

In the Credentials settings dialog box, do the following:

From the Plugin dropdown, select Snowflake (Azure).

Assign the credential a name and description that ensures other users of Amperity can recognize when to use this destination.

Step 3.

The settings that are available for a credential are determined by the credential type. For the “snowflake” credential type, configure settings, and then click Save.

Username

Required

A username with permission to access Snowflake (Azure).

Password

Required

The password for the username.

Account name

Required

The unique name of an account that exists within your brand’s Snowflake (Azure) organization.

Shared access signature

Required

The shared access signature that allows access to a Microsoft Azure Blob Storage container.

Snowflake secure data sharing

Snowflake secure data sharing is not enabled by default. If your organization wants to use secure data sharing, your instance of Snowflake must be in the same region as the Amperity instance and you must provide your Snowflake account identifier to Amperity.

Amperity supports the following regions for Microsoft Azure:

US West

west-us-2.azure

US East

east-us-2.azure

North Europe

north-europe.azure

Note

If your region is not listed you may make a request through your Amperity representative for Amperity engineering to add support for that region.

Configure objects

Amperity requires access to the customer’s instance of Snowflake. This requires write permissions to a warehouse object in Snowflake via a role and a user.

The following objects must be created in the customer’s instance of Snowflake:

  1. A role via CREATE ROLE .

    The role must be granted permission to the warehouse via GRANT USAGE .

  2. A stage via CREATE STAGE .

    Note

    The external stage is used by the Amperity destination to stage data that is sent from Amperity in the Azure container. Snowflake picks data up from this location.

    The CREATE STAGE command defaults to CSV file types.

    When sending data from Amperity to Snowflake you must configure an external stage that points to the URL for the Azure container that is included with Amperity. (URL = 'azure://account.blob.core.windows.net/container[/path/]').

  3. A warehouse via CREATE WAREHOUSE .

  4. A user via CREATE USER .

    The user must be added to the role via GRANT ROLE .

To configure Snowflake objects

To configure Snowflake objects use a Data Definition Language (DDL) command similar to:

CREATE ROLE AMPERITY;

CREATE DATABASE AMPERITY_DATABASE;

CREATE SCHEMA AMPERITY_SCHEMA.CUSTOMER_360;

CREATE STAGE AMPERITY_SCHEMA.CUSTOMER_360.AMPERITY_STAGE;

CREATE WAREHOUSE AMPERITY_WAREHOUSE WITH
  WAREHOUSE_SIZE = 'XSMALL'
  WAREHOUSE_TYPE = 'STANDARD'
  AUTO_SUSPEND = 600
  AUTO_RESUME = TRUE
  MIN_CLUSTER_COUNT = 1
  MAX_CLUSTER_COUNT = 2
  SCALING_POLICY = 'ECONOMY';

GRANT USAGE ON STAGE AMPERITY_STAGE TO ROLE AMPERITY;

GRANT USAGE ON WAREHOUSE AMPERITY_WAREHOUSE TO ROLE AMPERITY;

CREATE USER amperity
  PASSWORD = '********************'
  DEFAULT_WAREHOUSE = AMPERITY_WAREHOUSE
  DEFAULT_ROLE = AMPERITY;

GRANT ROLE AMPERITY TO USER amperity;

Note

You must send a customer who will connect directly to the Snowflake data warehouse the following information using a SnapPass link:

  1. The URL for the Snowflake data warehouse.

  2. The Snowflake username.

  3. The password for that username.

  4. Snowflake data warehouse name.

Configure user access

Users that will connect to Snowflake to use data in external applications, such as Tableau, Microsoft Power BI, and Databricks, will need to be granted read-only access to the Snowflake data warehouse.

To configure user access to a Snowflake data warehouse

CREATE ROLE USER_READ;

GRANT SELECT ON ALL TABLES IN SCHEMA AMPERITY_DATABASE.CUSTOMER_360 TO ROLE USER_READ;
GRANT SELECT ON FUTURE TABLES IN SCHEMA AMPERITY_DATABASE.CUSTOMER_360 TO ROLE USER_READ;
GRANT USAGE ON WAREHOUSE AMPERITY_WAREHOUSE ROLE USER_READ;
GRANT USAGE ON DATABASE AMPERITY_DATABASE TO ROLE USER_READ;
GRANT USAGE ON SCHEMA AMPERITY_DATABASE.CUSTOMER_360 TO ROLE USER_READ;

CREATE USER USERNAME
  PASSWORD = 'PASSWORD'
  DEFAULT_WAREHOUSE = AMPERITY_WAREHOUSE
  DEFAULT_ROLE = USER_READ
  FIRST_NAME = 'USER_FIRST_NAME'
  LAST_NAME = 'USER_LAST_NAME'
  EMAIL = 'USER_EMAIL_ADDRESS';

GRANT ROLE USER_READ TO USER USERNAME

Configure storage integration

Amperity can send database table data to Snowflake. This output should be written to Azure Blob Storage via a storage integration configured in Snowflake. This requires the Azure tenant ID and the full path to each allowed storage location.

For each database and schema to be output to the Amazon S3 bucket, specify a database and schema via USE , create a stage via CREATE , and then GRANT USAGE .

To configure Snowflake storage integration

To configure Snowflake storage integration use a Data Definition Language (DDL) command similar to:

USE DATABASE <database-name>
USE SCHEMA <schema-name>
CREATE STORAGE INTEGRATION <storage-integration-name>
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = AZURE
  ENABLED = TRUE
  AZURE_TENANT_ID = '<tenant-id>'
  STORAGE_ALLOWED_LOCATIONS = ('PATH', 'PATH', 'PATH')
GRANT USAGE ON STAGE <storage-integration-name> TO ROLE AMPERITY;
DESC STAGE <stage-name>;

where each PATH is similar to azure://<account>.blob.core.windows.net/<container>/<path>/.

Configure tables

For each table to be sent from Amperity, the Amperity role in Snowflake must be given permission. This requires permissions on both the database and the schema that contain the table. Usage rights to the database and schema do not grant access to the entire database or schema. Additional table-specific grants are required via a combination of GRANT USAGE , USE , and GRANT SELECT .

To configure Snowflake tables

To configure Snowflake tables use a Data Definition Language (DDL) command similar to:

GRANT USAGE ON DATABASE <database-name> TO ROLE AMPERITY;
USE DATABASE <database-name>
GRANT USAGE ON SCHEMA <schema-name> TO ROLE AMPERITY;
USE SCHEMA <schema-name>;
GRANT SELECT ON TABLE <table-name> TO ROLE AMPERITY;

Define a database export

Database tables (or even entire databases) can be sent from Amperity to Snowflake as a database export. A database export is configured from the Customer 360 page, and then added to an orchestration from the Destinations page. A database export can be an ad hoc process or be scheduled as a regular drop to an external filedrop location or data warehouse.

Add destination

Use a sandbox to configure a destination for Snowflake (Azure). Before promoting your changes, send a test audience, and then verify the the results in Snowflake (Azure). After the end-to-end workflow has been verified, push the destination from the sandbox to production.

To add a destination for Snowflake (Azure)

Step 1.

Open the Destinations page, and then click the Add destination button.

Add

To configure a destination for Snowflake (Azure), do one of the following:

  1. Click the row in which Snowflake (Azure) is located. Destinations are listed alphabetically and you can scroll up and down the list.

  2. Search for Snowflake (Azure). Start typing “snow”. The list will filter to show only matching destinations. Select “Snowflake”.

Step 2.

Select the credential for Snowflake (Azure) from the Credential drop-down, and then click Continue.

Tip

Click the “Test connection” link on the “Configure destination” page to verify that Amperity can connect to Snowflake (Azure).

Step 3.

In the “Destination settings” dialog box, assign the destination a name and description that ensures other users of Amperity can recognize when to use this destination.

Configure business user access

By default a destination is available to all users who have permission to view personally identifiable information (PII).

Enable the Admin only checkbox to restrict access to only users assigned to the Datagrid Operator and Datagrid Administrator policies.

Enable the PII setting checkbox to allow users with limited access to PII access to this destination.

Restricted PII access is enabled when the Restrict PII access policy option that prevents users who are assigned to that option from viewing data that is marked as PII anywhere in Amperity and from sending that data to any downstream workflow.

Step 4.

Configure the following settings, and then click “Save”.

Account name

The account name is contained within the URL for the Snowflake instance and is a character code located before snowflakecomputing.com. For example: “ab12345”.

Region ID

Required

The ID for the region in which the Snowflake account name is located. For example: “us-west-2”.

Note

The Amperity instance of Snowflake should be located in the same region as the customer’s instance of Snowflake.

Stage

Required

The Snowflake stage name, which is created by the CREATE STAGE command. For example:

AMPERITY_ABCDEF.CUSTOMER_360.AMP_PROD_STAGE

Warehouse

Required

The name of the Snowflake data warehouse. This is created by the CREATE WAREHOUSE command. For example:

AMPERITY_WH

Snowflake location

The table to which data will be loaded. This location is defined using a period-delimited list of Snowflake database name, Snowflake schema name, and Snowflake table name. For example:

SNOWFLAKE_DATABASE_NAME.SNOWFLAKE_SCHEMA.TABLE_NAME

Create table?

Use the Create table option when the table should be created in Snowflake if it is not already there.

Truncate table?

Use the “Truncate table” option when the contents of the table should be emptied prior to loading data.

Drop table?

Use the Drop table option to overwrite the table and apply an updated schema when the upstream segment or table changes.

Step 5.

After this destination is configured, users may configure Amperity to:

  • Use orchestrations to send query results

  • Use orchestrations and campaigns to send audiences

  • Use orchestrations and campaigns to send offline events

to Snowflake (Azure).