From 5b2648d8ce04a671d226dcc0f2e57c9c24ecc845 Mon Sep 17 00:00:00 2001 From: Walter Date: Sat, 18 Apr 2026 12:54:16 +0800 Subject: [PATCH 1/4] Add Snowflake connector documentation --- docs/connectors/supported-data-sources.md | 11 +- .../warehouses-and-lake/snowflake.md | 140 ++++++++++++++++++ docs/images/connect_snowflake.png | Bin 0 -> 58127 bytes sidebars.js | 1 + 4 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 docs/connectors/warehouses-and-lake/snowflake.md create mode 100644 docs/images/connect_snowflake.png diff --git a/docs/connectors/supported-data-sources.md b/docs/connectors/supported-data-sources.md index dc148bd..2ffa1af 100644 --- a/docs/connectors/supported-data-sources.md +++ b/docs/connectors/supported-data-sources.md @@ -412,7 +412,16 @@ The beta version of the data sources is in public preview and has passed the bas ➖ 2.0.13 and above - + + Snowflake + ✅ + ➖ + ➖ + ✅ + ➖ + N/A + + StarRocks ➖ ➖ diff --git a/docs/connectors/warehouses-and-lake/snowflake.md b/docs/connectors/warehouses-and-lake/snowflake.md new file mode 100644 index 0000000..10d7f75 --- /dev/null +++ b/docs/connectors/warehouses-and-lake/snowflake.md @@ -0,0 +1,140 @@ +# Snowflake + +[Snowflake](https://www.snowflake.com/) is a fully managed cloud-native data warehouse that provides elastic, scalable compute and storage capabilities. Tapdata currently provides the Snowflake connector, which supports using it as a **source or target** database. This helps you quickly centralize data from multiple sources to the cloud, providing real-time data flow support for building enterprise cloud data warehouses, sharing data, and enabling agile data analytics. + + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +## Supported Data Types + +| Category | Data Types | +| ----- | ---------------------------- | +| Integer | BIGINT | +| Numeric | NUMBER, FLOAT | +| String | TEXT | +| Binary | BINARY, FILE | +| Boolean | BOOLEAN | +| Date/Time | DATE, TIME, TIMESTAMP_NTZ, TIMESTAMP_TZ | +| Complex Types | OBJECT, ARRAY | + +## SQL Operations for Sync + +INSERT, UPDATE, DELETE + +:::tip + +- When used as a source database, incremental data synchronization needs to be implemented through field polling and does not support capturing DDL operations. For more details, see [Change Data Capture (CDC)](../../introduction/change-data-capture-mechanism.md). +- When used as a target database, you can also configure DML write strategies through the advanced settings of the task node, such as whether to convert insert conflicts to updates. + +::: + +## Preparations + +1. Ensure that the server where Tapdata is deployed can access the Snowflake service, specifically the domain: `snowflakecomputing.com`. + +2. Log in to the Snowflake database and execute the following commands to create an account and role for data synchronization. + + ```sql + -- Please replace role_name, username, password, warehouse_name, database_name, schema_name with actual values + CREATE ROLE IF NOT EXISTS ; + + CREATE USER + PASSWORD = '' + DEFAULT_ROLE = + DEFAULT_WAREHOUSE = + DEFAULT_NAMESPACE = . + MUST_CHANGE_PASSWORD = FALSE; + + GRANT ROLE TO USER ; + ``` + +3. Grant permissions to the account we just created. You can also set more granular permissions control based on business needs. + + ```mdx-code-block + + + ``` + + ```sql + -- Please replace warehouse_name, database_name, schema_name, role_name according to the tips below + + -- Grant access to the compute resource, database, and schema + GRANT USAGE ON WAREHOUSE TO ROLE ; + GRANT USAGE ON DATABASE TO ROLE ; + GRANT USAGE ON SCHEMA . TO ROLE ; + + -- Grant query permissions on existing and future tables in the schema + GRANT SELECT ON ALL TABLES IN SCHEMA . TO ROLE ; + GRANT SELECT ON FUTURE TABLES IN SCHEMA . TO ROLE ; + ``` + + + + + ```sql + -- Please replace warehouse_name, database_name, schema_name, role_name according to the tips below + -- Grant access to the compute resource, database, and schema + GRANT USAGE ON WAREHOUSE TO ROLE ; + GRANT USAGE ON DATABASE TO ROLE ; + GRANT USAGE ON SCHEMA . TO ROLE ; + + -- Grant permission to create tables in the schema (used for automatic table creation during sync) + GRANT CREATE TABLE ON SCHEMA . TO ROLE ; + + -- Grant DML permissions on existing tables in the schema (TRUNCATE is used for full refresh scenarios) + GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE + ON ALL TABLES IN SCHEMA . + TO ROLE ; + + -- Grant DML permissions on future tables to ensure new tables can be written without re-authorization + GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE + ON FUTURE TABLES IN SCHEMA . + TO ROLE ; + ``` + + + +## Connect to Snowflake + +1. [Log into TapData platforms](../../user-guide/log-in.md). + + + +2. In the left navigation bar, click **Connections**. + +3. On the right side of the page, click **Create**. + +4. In the pop-up dialog, search for and select **Snowflake**. + +5. On the page that redirects, fill in the Snowflake connection information as described below. + + ![Connect to Snowflake](../../images/connect_snowflake.png) + + - **Basic Settings** + - **Name**: Enter a meaningful and unique name. + - **Type**: Supports using Snowflake as a source or target database. + - **Account**: The Snowflake account identifier. For how to obtain it, see the [Snowflake documentation](https://docs.snowflake.com/en/user-guide/admin-account-identifier). + - **User**: The Snowflake username with connection privileges. + - **Password**: The password for the username. + - **Warehouse**: The name of the compute warehouse to use for the connection. + - **Database**: The name of the database to connect to. + - **Schema**: The schema name in the database. Defaults to **PUBLIC**. Manually modify it if you need to use another schema. + - **Role**: Optional. If left empty, the default role configured for the user in Snowflake will be used. + - **Timezone**: The default timezone is 0 UTC. Changing to a different timezone will affect the synchronization of fields without timezone information. + + - **Advanced Settings** + - **Include Tables**: By default, all tables are included. You can choose to customize and specify the tables to include, separated by commas. + - **Exclude Tables**: When enabled, you can specify tables to exclude, separated by commas. + - **Agent Settings**: The default is automatic assignment by the platform. You can also manually specify an Agent. + - **Model Load Time**: If there are less than 10,000 models in the data source, their schema will be updated every hour. But if the number of models exceeds 10,000, the refresh will take place daily at the time you have specified. + +6. Click **Test** at the bottom of the page. After passing the test, click **Save**. + + :::tip + + If the connection test fails, please follow the prompts on the page to resolve the issue. + + ::: \ No newline at end of file diff --git a/docs/images/connect_snowflake.png b/docs/images/connect_snowflake.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9899b786bf27666aacce879a84ce70870c35de GIT binary patch literal 58127 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 Date: Sat, 18 Apr 2026 12:57:30 +0800 Subject: [PATCH 2/4] chore: add Snowflake-related terms to spelling allow list --- .github/actions/spelling/allow.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/actions/spelling/allow.txt b/.github/actions/spelling/allow.txt index 944150f..50ba613 100644 --- a/.github/actions/spelling/allow.txt +++ b/.github/actions/spelling/allow.txt @@ -783,5 +783,7 @@ AVRO Clob INOUT WSS - +executability +NTZ +snowflakecomputing From f5b99e6ade1ea830a6370f7baac6d295d6e2d874 Mon Sep 17 00:00:00 2001 From: Walter Date: Sat, 18 Apr 2026 13:37:13 +0800 Subject: [PATCH 3/4] Fix broken link --- docs/connectors/warehouses-and-lake/snowflake.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/connectors/warehouses-and-lake/snowflake.md b/docs/connectors/warehouses-and-lake/snowflake.md index 10d7f75..238ba42 100644 --- a/docs/connectors/warehouses-and-lake/snowflake.md +++ b/docs/connectors/warehouses-and-lake/snowflake.md @@ -99,9 +99,7 @@ INSERT, UPDATE, DELETE ## Connect to Snowflake -1. [Log into TapData platforms](../../user-guide/log-in.md). - - +1. Log into the TapData platform. 2. In the left navigation bar, click **Connections**. From c3768f0692c4b7ae47301332983eb3412f7b5949 Mon Sep 17 00:00:00 2001 From: Walter Date: Mon, 20 Apr 2026 10:42:07 +0800 Subject: [PATCH 4/4] remove BIGINT from Snowflake data types table --- docs/connectors/warehouses-and-lake/snowflake.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/connectors/warehouses-and-lake/snowflake.md b/docs/connectors/warehouses-and-lake/snowflake.md index 238ba42..66cdf07 100644 --- a/docs/connectors/warehouses-and-lake/snowflake.md +++ b/docs/connectors/warehouses-and-lake/snowflake.md @@ -12,7 +12,6 @@ import TabItem from '@theme/TabItem'; | Category | Data Types | | ----- | ---------------------------- | -| Integer | BIGINT | | Numeric | NUMBER, FLOAT | | String | TEXT | | Binary | BINARY, FILE |