跳到主要内容
版本:4.x

Snowflake

适用版本 Cloud 功能TapData Cloud 为您提供了云端服务,适合需要快速部署、低前期投资场景,帮助您更好地专注于业务发展而非基础设施管理,注册账号即可领取免费的 Agent 实例,欢迎试用。 企业版功能TapData Enterprise 可部署在您的本地数据中心,适合对数据敏感性或网络隔离有严格要求的场景,可服务于构建实时数仓,实现实时数据交换,数据迁移等场景。 社区版功能TapData Community 是一个开源的数据集成平台,提供基础的数据同步和转换功能,可通过 Docker 一键部署,帮助您快速探索和实施数据集成项目。随着项目或企业发展,您可以平滑升级至 TapData Cloud 或 TapData Enterprise,以获得更多高级功能或服务支持。

Snowflake 是一款完全托管的云原生数据仓库,提供弹性伸缩的计算与存储能力。Tapdata 当前提供 Snowflake 连接器,支持将其作为源或目标节点使用,帮助您快速实现多源数据汇聚上云,为构建企业级云端数仓、数据共享及敏捷数据分析提供实时的数据流转支撑。

支持的版本

所有支持 JDBC 连接的 Snowflake 版本。

支持数据类型

类别数据类型
整数BIGINT
数值NUMBER、FLOAT、DECFLOAT
字符串TEXT、UUID
二进制BINARY、FILE
布尔BOOLEAN
日期/时间DATE、TIME、TIMESTAMP_NTZ、TIMESTAMP_TZ、TIMESTAMP_LTZ
半结构化OBJECT、ARRAY、VARIANT
地理空间GEOGRAPHY、GEOMETRY
提示

DECFLOATTIMESTAMP_LTZVARIANTGEOGRAPHYGEOMETRYUUID 仅用于查询侧识别,表示连接器可识别和读取这些类型,但不建议直接依赖其自动建表或写入能力。作为目标库写入时,如遇到写入侧不支持或自动建表不符合预期的字段类型,请在任务的字段映射中转换为兼容类型。

支持同步的操作

  • DML:INSERT、UPDATE、DELETE
  • DDL:作为源库时不支持采集 DDL;作为目标库时,在上游任务产生对应结构变更事件的前提下,可处理自动建表和字段级变更,包括新增字段、修改字段名、修改字段属性和删除字段。
提示
  • Snowflake 作为源库时,支持通过字段轮询实现增量同步;不支持基于日志、Snowflake Stream 或 Change Tracking 的 CDC 采集,也不支持采集 DDL 操作。字段轮询的配置方式,详见变更数据捕获(CDC)
  • Snowflake 作为目标库时,您可以通过任务节点的高级配置,选择 DML 写入策略,例如插入冲突时转为更新或忽略,更新无匹配记录时转为插入或记录日志。

注意事项

  • 作为源库读取数据或执行字段轮询增量同步时,会消耗所选 Snowflake Warehouse 的计算资源,建议为同步任务配置独立的 Warehouse,避免与业务查询争用资源。
  • 当前连接器发现和同步的对象以物理表为主,不将视图(View)作为可同步表对象。
  • 作为目标库自动建表时,默认创建标准表。如需使用混合表或动态表,请先确认业务场景满足 Snowflake 对应表类型的限制,更多介绍,见节点高级特性

准备工作

  1. 确保 TapData 所属服务端可访问 Snowflake 服务,即可访问 *.snowflakecomputing.com 域名和 443 端口。
  2. 登录 Snowflake 数据库,执行下述格式的命令,创建用于数据同步的账号与角色。
    -- 下例使用密码认证创建用户,请将 role_name、username、password、warehouse_name、database_name、schema_name 替换为实际值
    CREATE ROLE IF NOT EXISTS <role_name>;

    CREATE USER <username>
    PASSWORD = '<password>'
    DEFAULT_ROLE = <role_name>
    DEFAULT_WAREHOUSE = <warehouse_name>
    DEFAULT_NAMESPACE = <database_name>.<schema_name>
    MUST_CHANGE_PASSWORD = FALSE;

    GRANT ROLE <role_name> TO USER <username>;
    如需使用 PAT 令牌或密钥对认证,请先在 Snowflake 中为该用户准备对应凭据,并确保该用户仍具备下述角色和权限。使用 PAT 令牌时,请同时确认 Snowflake 账号已满足程序化访问令牌所需的网络策略或认证策略要求。

连接 Snowflake

  1. 登录 TapData 平台

  2. 在左侧导航栏,单击连接管理

  3. 单击页面右侧的创建

  4. 在弹出的对话框中,搜索并选择 Snowflake

  5. 在跳转到的页面,根据下述说明填写 Snowflake 的连接信息。

    连接 Snowflake

    • 基本设置
      • 连接名称:填写具有业务意义的独有名称。
      • 连接类型:支持将 Snowflake 作为源或目标节点。
      • 账户:Snowflake 账户标识,获取方式,请参考Snowflake 官网文档
      • 用户名:拥有连接权限的 Snowflake 用户名。
      • 认证方式:选择连接 Snowflake 的认证方式,支持普通密码PAT 令牌密钥对
      • 密码:选择普通密码认证时,填写用户名对应的密码。
      • PAT 令牌:选择 PAT 令牌认证时,填写已在 Snowflake 中创建的令牌。
      • 私钥私钥密码:选择密钥对认证时,上传或填写私钥;如果私钥已设置密码,还需填写私钥密码。
      • 仓库:指定连接使用的计算仓库名称。
      • 数据库:要连接的数据库(Database)名称。
      • 模式:数据库中的模式(Schema)名称,默认为 PUBLIC,如需使用其他模式请手动修改。
      • 角色:可选项,未填写时默认使用用户在 Snowflake 中配置的默认角色。
      • 时区:默认为 0 时区,如果更改为其他时区,不带时区的字段会受到影响。
    • 高级设置
      • 包含表:默认为全部,您也可以选择自定义并填写包含的表,多个表之间用英文逗号(,)分隔。
      • 排除表:打开该开关后,可以设定要排除的表,多个表之间用英文逗号(,)分隔。
      • Agent 设置:默认为平台自动分配,您也可以手动指定 Agent。
      • 模型加载时间:如果数据源中的模型数量少于10000个,则每小时更新一次模型信息。但如果模型数量超过10,000个,则刷新将在您指定的时间每天进行。
  6. 单击页面下方的连接测试,提示通过后单击保存

    提示

    如提示连接测试失败,请根据页面提示进行修复。

节点高级特性

在配置数据同步/转换任务时,如果将 Snowflake 作为目标节点,您可以在节点高级配置中选择目标端自动建表类型。该配置主要影响 TapData 自动创建的目标表;如果目标表已存在,TapData 会沿用目标表当前定义。

配置说明
建表类型创建目标表时使用的表类型,支持标准表(STANDARD,默认)、混合表(HYBRID)和动态表(DYNAMIC)。标准表适合大多数同步写入场景;混合表要求表具备主键,适合需要主键级更新和点查询的场景;动态表由查询语句定义,不适合作为承接普通 INSERT、UPDATE、DELETE 写入的目标表。
目标延迟仅当建表类型为动态表时生效,用于设置动态表的目标延迟,默认值为 1 minute,也可以按 Snowflake 语法填写 DOWNSTREAM 等值。
动态表查询仅当建表类型为动态表时生效,用于填写定义动态表内容的 AS SELECT 查询语句。使用动态表时该项不能为空,且查询语句需满足 Snowflake 对动态表的要求。

常见问题

  • 问:连接测试失败时应如何排查?

    答:请先确认 TapData 所属服务端可访问 *.snowflakecomputing.com 域名和 443 端口,然后检查账户标识、用户名、认证凭据、Warehouse、数据库、Schema 和角色是否正确。如使用 PAT 令牌或密钥对认证,请确认凭据已在 Snowflake 中配置并处于可用状态。

  • 问:字段类型或自动建表结果不符合预期时应如何处理?

    答:请先检查源端字段类型是否在支持数据类型范围内。对于读取侧可识别但写入侧不一定适合直接建表的类型,建议在任务的字段映射中转换为 Snowflake 目标端兼容的类型;如目标表需要特定表类型、字段定义或约束,也可以在同步前手动建表。