使用复制作业从 Snowflake 更改数据捕获(预览版)

本教程介绍如何使用复制作业中的变更数据捕获(CDC)有效地将数据更改从 Snowflake 复制到目标。 这可确保目标数据自动保持最新状态。

先决条件

在开始之前,请确保具有以下各项:

Snowflake 要求:

  • 有权访问包含源表的数据库和架构的 Snowflake 帐户。
  • 启用更改跟踪的表上的 OWNERSHIP 权限。 或者,MODIFY 权限可用于启用更改跟踪。
  • 包含表的数据库和架构的 USAGE 特权。
  • 用于读取数据的表的 SELECT 权限。
  • 表必须配置数据保留期(至少 0 天,最多 90 天)。 保留期应长于计划的复制作业间隔,以防止更改数据丢失。

有关 Snowflake 权限和更改跟踪的详细信息,请参阅 访问控制权限Stream 简介

构造要求:

  • 具有创建复制作业所需的权限的 Fabric 工作区。
  • 用于 CDC 复制的目标数据存储由复制作业支持。

小窍门

使用 Snowflake 中的 SECURITYADMINSYSADMIN 角色授予所需的对象特权。 某些帐户范围的配置可能需要该 ACCOUNTADMIN 角色。

在 Snowflake 中启用更改跟踪

Snowflake 使用表级更改跟踪来捕获数据更改。 必须单独在每个表上启用更改跟踪。 按照以下步骤在 Snowflake 表上启用更改跟踪:

  1. 使用 Snowflake Web 界面、SnowSQL 或其他 SQL 客户端连接到 Snowflake 帐户。

  2. 对要跟踪的每个表启用更改跟踪。对于每个表,请运行以下 SQL 命令:

    ALTER TABLE <schema_name>.<table_name> SET CHANGE_TRACKING = TRUE;
    

    替换 <schema_name><table_name> 为你的架构和表名。

    示例:

    ALTER TABLE sales.customers SET CHANGE_TRACKING = TRUE;
    ALTER TABLE sales.orders SET CHANGE_TRACKING = TRUE;
    
  3. (可选)创建新表时启用更改跟踪:

    CREATE TABLE <schema_name>.<table_name> (
      column1 STRING,
      column2 NUMBER
    ) CHANGE_TRACKING = TRUE;
    
  4. 验证是否启用了更改跟踪。 运行以下命令来检查状态:

    SHOW TABLES LIKE '<table_name>' IN SCHEMA <schema_name>;
    

    在输出中,找到列 change_tracking 并确认它显示 ON

    或者,查询 INFORMATION_SCHEMA

    SELECT table_catalog, table_schema, table_name, change_tracking
    FROM <database_name>.INFORMATION_SCHEMA.TABLES
    WHERE table_schema = '<schema_name>'
      AND table_name = '<table_name>';
    

注释

  • 变更跟踪是 Snowflake 中的一种表级属性,用于跟踪 INSERT、UPDATE 和 DELETE 操作。
  • 必须具有表的 OWNERSHIP 权限或 MODIFY 权限才能启用更改跟踪。
  • 更改跟踪会为元数据消耗额外存储,但对于诸如流和 CDC 模式之类的功能是必需的。
  • Snowflake 根据表的数据保留期(最少 0 天,最多 90 天)保留更改跟踪数据。 确保保留期长于计划的复制作业间隔,以避免数据丢失。

有关 Snowflake 更改跟踪的详细信息,请参阅官方 Snowflake 文档 - ALTER TABLE管理流

使用 Snowflake CDC 创建复制作业

注释

  • 以下步骤与使用复制作业通过 CDC 将数据从 Azure SQL DB 引入到另一个 Azure SQL DB时执行的步骤非常相似。

完成以下步骤,创建新的复制任务,通过 CDC 将 Snowflake 的数据引入到目标:

  1. 选择 “+ 新建项”,选择 “复制作业 ”图标,命名复制作业,然后选择“ 创建”。

    展示如何导航到数据工厂主页并创建新复制作业的屏幕截图。

  2. 选择要从中复制数据的数据存储。 在此示例中,选择 Snowflake

  3. 输入 连接详细信息凭据 以连接到 Snowflake。 可以使用本地网关或 VNET 网关在 VNET 环境中安全地复制数据。

  4. 应清楚地看到已启用 CDC 的源表。 选择 已启用 CDC 的表 进行复制。

    启用了 CDC 的表: 显示 cdc 表图标的屏幕截图。

    未启用 CDC 的表: 显示无 cdc 表图标的屏幕截图。

    显示复制作业的 cdc 表选择位置的屏幕截图。

  5. 选择目标商店。 选择支持 CDC 合并或更新插入操作的目标,以实现最佳的 CDC 复制。

    屏幕截图显示在哪里选择复制作业的目标存储位置。

  6. 选择 增量复制 ,你会发现无需为每个表输入增量列来跟踪更改。 默认 的 Update 方法 应设置为 “合并”,并且所需的键列将默认与源存储中定义的主键匹配。

    注释

    最初,复制作业执行一次完整加载,然后通过 CDC 在后续运行中执行增量副本。

    屏幕截图显示如何选择 CDC。

  7. 查看作业摘要,将运行选项设置为按计划,然后选择“ 保存 + 运行”。

    注释

    确保 Snowflake 更改跟踪保留期长于计划运行之间的间隔;否则,如果保留期内未处理,则更改的数据可能会丢失。

  8. 复制作业会立即启动。 第一次运行复制初始完整快照。

  9. 通过插入、更新或删除行,在 Snowflake 中更新源表。

  10. 再次运行复制作业以获取并复制所有更改,包括插入、更新和删除的行,并将其复制到目标。

后续步骤