本教程介绍如何使用复制作业中的变更数据捕获(CDC)有效地将数据更改从 Snowflake 复制到目标。 这可确保目标数据自动保持最新状态。
先决条件
在开始之前,请确保具有以下各项:
Snowflake 要求:
- 有权访问包含源表的数据库和架构的 Snowflake 帐户。
- 启用更改跟踪的表上的 OWNERSHIP 权限。 或者,MODIFY 权限可用于启用更改跟踪。
- 包含表的数据库和架构的 USAGE 特权。
- 用于读取数据的表的 SELECT 权限。
- 表必须配置数据保留期(至少 0 天,最多 90 天)。 保留期应长于计划的复制作业间隔,以防止更改数据丢失。
有关 Snowflake 权限和更改跟踪的详细信息,请参阅 访问控制权限 和 Stream 简介。
构造要求:
- 具有创建复制作业所需的权限的 Fabric 工作区。
- 用于 CDC 复制的目标数据存储由复制作业支持。
小窍门
使用 Snowflake 中的 SECURITYADMIN 或 SYSADMIN 角色授予所需的对象特权。 某些帐户范围的配置可能需要该 ACCOUNTADMIN 角色。
在 Snowflake 中启用更改跟踪
Snowflake 使用表级更改跟踪来捕获数据更改。 必须单独在每个表上启用更改跟踪。 按照以下步骤在 Snowflake 表上启用更改跟踪:
使用 Snowflake Web 界面、SnowSQL 或其他 SQL 客户端连接到 Snowflake 帐户。
对要跟踪的每个表启用更改跟踪。对于每个表,请运行以下 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;(可选)创建新表时启用更改跟踪:
CREATE TABLE <schema_name>.<table_name> ( column1 STRING, column2 NUMBER ) CHANGE_TRACKING = TRUE;验证是否启用了更改跟踪。 运行以下命令来检查状态:
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 的数据引入到目标:
选择 “+ 新建项”,选择 “复制作业 ”图标,命名复制作业,然后选择“ 创建”。
选择要从中复制数据的数据存储。 在此示例中,选择 Snowflake。
输入 连接详细信息 和 凭据 以连接到 Snowflake。 可以使用本地网关或 VNET 网关在 VNET 环境中安全地复制数据。
应清楚地看到已启用 CDC 的源表。 选择 已启用 CDC 的表 进行复制。
启用了 CDC 的表:
未启用 CDC 的表:
选择目标商店。 选择支持 CDC 合并或更新插入操作的目标,以实现最佳的 CDC 复制。
选择 增量复制 ,你会发现无需为每个表输入增量列来跟踪更改。 默认 的 Update 方法 应设置为 “合并”,并且所需的键列将默认与源存储中定义的主键匹配。
注释
最初,复制作业执行一次完整加载,然后通过 CDC 在后续运行中执行增量副本。
查看作业摘要,将运行选项设置为按计划,然后选择“ 保存 + 运行”。
注释
确保 Snowflake 更改跟踪保留期长于计划运行之间的间隔;否则,如果保留期内未处理,则更改的数据可能会丢失。
复制作业会立即启动。 第一次运行复制初始完整快照。
通过插入、更新或删除行,在 Snowflake 中更新源表。
再次运行复制作业以获取并复制所有更改,包括插入、更新和删除的行,并将其复制到目标。