Azure 数据工厂和 Azure Synapse Analytics 中的变更数据捕获

适用于:Azure 数据工厂 Azure Synapse Analytics

本文介绍 Azure 数据工厂中的变更数据捕获 (CDC)。

若要了解详细信息,请参阅 Azure 数据工厂概述Azure Synapse 概述

概述

在云中执行数据集成和 ETL 流程时,如果仅读取自上次管道运行以来发生更改的源数据,而不是在每次运行时始终查询整个数据集,则可以提高作业的性能和效率。 ADF 提供了多种方法,可轻松仅获取自上次运行以来的增量数据。

映射数据流中的原生变更数据捕获

ADF 映射数据流可以自动检测和提取变更的数据,包括从源数据库插入、更新和删除的行。 无需时间戳或 ID 列来标识更改,因为它使用数据库中的本机变更数据捕获技术。 通过将源转换与接收器转换引用链接到映射数据流中的数据库数据集,可以看到源数据库更改会自动应用到目标数据库,从而可以轻松地在两个表之间同步数据。 还可以在它们之间为任何业务逻辑添加任意转换,以处理增量数据。 定义接收器数据目标时,可以在接收器中设置插入、更新、更新插入和删除操作,而无需更改行转换,因为 ADF 能够自动检测行标记。

受支持的连接器

映射数据流中的自动增量提取

可以通过 ADF 映射数据流从源存储中自动检测和提取新更新的行或文件。 如果要从数据库中获取增量数据,则需要增量列来标识更改。 如果只想从存储加载新文件或更新的文件,ADF 映射数据流只需工作到文件的上次修改时间。

受支持的连接器

管道中客户管理的增量数据提取

你始终可以为 ADF 支持的所有数据存储生成自己的增量数据提取管道,包括使用查找活动获取存储在外部控制表中的水印值、使用复制活动或映射数据流活动针对时间戳或 ID 列查询增量数据,以及使用查询 SP 活动将新的水印值写回外部控制表以进行下一次运行。 如果只想从存储加载新文件,则可以在每次将文件成功移动到目标后删除该文件,或者利用以时间分区的文件夹名、文件名或上次修改时间来标识新文件。

最佳实践

数据库中的变更数据捕获

  • 始终建议使用原生变更数据捕获,因为这是获取变更数据的最简单方法。 若通过 ADF 提取变更数据进行进一步处理,还可以大大减轻源数据库的负担。
  • 如果数据库存储不在支持原生变更数据捕获的 ADF 连接器列表中,我们建议选择自动增量提取选项,这样您只需输入用于增量的列即可捕获数据变更。 ADF 将负责其余工作,包括为增量加载创建动态查询,以及管理每个活动运行的检查点。
  • 管道中客户管理的增量数据提取涵盖 ADF 支持的所有数据库,可让你灵活地自行控制所有内容。

基于文件的存储中的变更文件捕获

  • 如果要从 Azure Blob 存储、Azure Data Lake Storage Gen2 加载数据,借助映射数据流,只需选择一次即可获取新文件或更新的文件。 这是在映射数据流中从这些基于文件的存储实现增量加载的最简单方法,也是建议采用的方法。
  • 可以获取更多最佳做法

检查点

在 ADF 映射数据流中启用原生变更数据捕获或自动增量提取选项后,ADF 能帮助管理检查点,以确保每次活动运行自动只读取自上次管道运行以来已更改的源数据。 默认情况下,检查点与管道和活动名称关联。 如果更改管道名称或活动名称,检查点将重置,进而导致从头开始或是在下一次运行中开始获取现在开始的更改数据。 如果要更改管道名称或活动名称,但仍保留检查点,以自动从上次运行中获取变更的数据,可在数据流活动中使用自己的检查点密钥来实现此目的。 自有检查点密钥的命名规则与链接服务、数据集、管道和数据流是相同的。

调试管道时,此功能同样有效。 在调试运行期间刷新浏览器时,检查点将重置。 若对调试运行中的管道结果感到满意,可继续发布并触发管道。 首次触发已发布的管道时,管道将自动从头开始重启,或者立即开始获取变更数据。

在监视部分,你可以随时重新运行管道。 执行此操作时,始终捕获自所选管道运行的上一个检查点以来发生更改的数据。

教程

下面是在 Azure 数据工厂和 Azure Synapse Analytics 中启动变更数据捕获的教程。