Skip to main content

Snowflake

Preparation

To allow Shaped to connect to your Snowflake database, you need to create a read-only user and share those credentials through the Create Dataset endpoint. You can create a read-only user on a Snowflake database instance with the following commands:

-- 1. Create a role that will be used to grant access to the specific table.
CREATE ROLE read_only_role;

-- 2. Create a user and grant the read-only role to the user.
CREATE USER read_only_user
PASSWORD = '<password>'
DEFAULT_ROLE = read_only_role
MUST_CHANGE_PASSWORD = FALSE;

-- 3. Grant the newly created role to the user.
GRANT ROLE read_only_role TO USER read_only_user;

-- 4. Grant the SELECT permission on the specific table to the read-only role.
GRANT SELECT ON TABLE <database_name>.<schema_name>.<table_name> TO ROLE read_only_role;

-- 5. Grant USAGE permission on the schema and database containing the table.
GRANT USAGE ON SCHEMA <database_name>.<schema_name> TO ROLE read_only_role;
GRANT USAGE ON DATABASE <database_name> TO ROLE read_only_role;

Replace password, database_name, schema_name, and table_name with the appropriate values for your Snowflake account.

Dataset Configuration

Below are the fields required for the Snowflake dataset connector:

FieldExampleDescription
schema_typeSNOWFLAKESpecifies the connector schema type, in this case "Snowflake".
config.tableeventsThe name of the table to sync.
config.useryour_userAccess account username.
config.passwordpAssw0rd1!Access account password.
config.accountsnowflake-accessYour Snowflake account identifier. See Account Identifiers.
config.databasemovielensThe name of the database that contains table to sync.
config.database_schemapublicOptional. The name of the schema that contains table to sync.
config.roleread_only_roleOptional. The name of the role to use when connecting to the database.
config.warehouseyour_warehouseOptional. The name of the warehouse to use when connecting to the database.
config.replication_keyupdated_atThe name of the column that contains a datetime key or ascending id for ordering data during incremental syncs.

Dataset Creation Example

Below is an example of a Snowflake dataset connector configuration:

dataset_name: your_snowflake_dataset
schema_type: SNOWFLAKE
config:
table: movies
user: your_user
password: pAssw0rd1!
account: snowflake-access
database: movielens
replication_key: updated_at

The following payload will create a Snowflake dataset and begin syncing data from Shaped using the Shaped CLI.

shaped create-dataset --file dataset.yaml