Azure 数据工厂和 Azure Synapse Analytics 中的变更数据捕获
适用于:Azure 数据工厂 Azure Synapse Analytics
本文介绍 Azure 数据工厂中的变更数据捕获 (CDC)。
若要了解详细信息,请参阅 Azure 数据工厂概述或 Azure Synapse 概述。
概述
在云中执行数据集成和 ETL 流程时,如果你只读取自上次管道运行以来发生更改的源数据,作业会表现得更好且更有效,而不是始终在每次运行时查询整个数据集。 ADF 提供多种不同的方法,用于仅从上次运行中轻松获取增量数据。
映射数据流中的本机变更数据捕获
可以通过 ADF 映射数据流从源数据库中自动检测和提取插入、更新和删除的行等变更数据。 无需时间戳或 ID 列来标识更改,因为它使用数据库中的本机变更数据捕获技术。 只需将源转换与接收器转换引用链接到映射数据流中的数据库数据集,即可看到源数据库上发生的更改自动应用于目标数据库,这样就可以轻松地在两个表之间同步数据。 还可以在它们之间为任何业务逻辑添加任何转换,以处理增量数据。 定义接收器数据目标时,可以在接收器中设置插入、更新、更新插入和删除操作,而无需更改行转换,因为 ADF 能够自动检测行标记。
受支持的连接器
- SAP CDC
- Azure SQL 数据库
- SQL Server
- Azure SQL 托管实例
- Azure Cosmos DB (SQL API)
- Azure Cosmos DB 分析存储
- Snowflake
映射数据流中的自动增量提取
可以通过 ADF 映射数据流从源存储中自动检测和提取新更新的行或文件。 如果要从数据库中获取增量数据,则需要增量列来标识更改。 如果只想从存储加载新文件或更新的文件,ADF 映射数据流只需工作到文件的上次修改时间。
受支持的连接器
- Azure Blob 存储
- ADLS Gen2
- Azure SQL 数据库
- SQL Server
- Azure SQL 托管实例
- Azure Database for MySQL
- Azure Database for PostgreSQL
- 常见数据模型
管道中客户管理的增量数据提取
始终可以为 ADF 支持的所有数据存储生成自己的增量数据提取管道,包括使用查找活动获取存储在外部控制表中的水印值、复制活动或映射数据流活动,以针对时间戳或 ID 列查询增量数据,以及查询 SP 活动,以将新的水印值写回外部控制表供下一次运行。 如果只想从存储加载新文件,则可以在每次将文件成功移动到目标后删除该文件,或者利用以时间分区的文件夹名/文件名或上次修改时间来标识新文件。
最佳实践
从数据库进行变更数据捕获
- 始终建议使用本机变更数据捕获,这是获取变更数据的最简单方法。 若通过 ADF 提取变更数据进行进一步处理,还可以大大减轻源数据库的负担。
- 如果数据库存储不是支持本机变更数据捕获的 ADF 连接器列表的一部分,建议选中自动增量提取选项,使用该选项,只需输入增量列即可捕获变更。 ADF 将负责其余工作,包括为增量加载创建动态查询和管理每个活动运行的检查点。
- 管道中客户管理的增量数据提取涵盖 ADF 支持的所有数据库,可让你灵活地自行控制所有内容。
从基于文件的存储进行变更文件捕获
- 如果要从 Azure Blob 存储、Azure Data Lake Storage Gen2 加载数据,借助映射数据流,只需单击一下即可获取新文件或更新的文件。 这是在映射数据流中从这些基于文件的存储实现增量加载的最简单方法,也是推荐的方法。
- 可以获取更多最佳做法。
检查点
在 ADF 映射数据流中启用本机变更数据捕获或自动增量提取选项时,ADF 可帮助管理检查点,以确保每个活动运行都可自动仅读取自上次管道运行以来更改的源数据。 默认情况下,检查点与管道和活动名称结合。 如果更改管道名称或活动名称,检查点将重置,进而导致从头开始或是在下一次运行中开始获取现在开始的更改数据。 如果要更改管道名称或活动名称,但仍保留检查点,以自动从上次运行中获取变更的数据,请使用自己的数据流活动中的检查点密钥来实现此目的。 你自己的检查点密钥的命名规则与链接服务、数据集、管道和数据流的相同。
调试管道时,此功能都以相同的方式工作。 在调试运行期间刷新浏览器时,检查点将重置。 若对调试运行中的管道结果感到满意,可继续发布并触发管道。 首次触发已发布管道时,管道将自动从头开始重启,或者立即开始获取更改数据。
在监视部分,你始终有机会重新运行管道。 执行此操作时,始终可从所选管道运行的上一个检查点捕获已更改的数据。
教程
下面是在 Azure 数据工厂和 Azure Synapse Analytics 中启动变更数据捕获的教程。