使用变更数据捕获资源将已更改且存在架构演变的数据从 Azure SQL 数据库捕获到 Delta 接收器

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

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

在本文中,你将使用 Azure 数据工厂用户界面创建变更数据捕获 (CDC) 资源。 该资源会从 Azure SQL 数据库源中选取已更改的数据,并将其实时添加到存储在 Azure Data Lake Storage Gen2 中的 Delta Lake。 此活动通过在源和接收器之间使用 CDC 资源来展示对架构演变的支持。

在本文中,学习如何:

  • 创建 CDC 资源。
  • 对源表进行动态架构更改。
  • 验证目标 Delta 接收器处的架构更改。

可以修改和扩展本文中的配置模式。

先决条件

在开始本文的过程之前,请确保具有以下资源:

  • Azure 订阅。 如果没有 Azure 订阅,请创建一个试用 Azure 帐户
  • SQL 数据库。 使用 Azure SQL 数据库作为源数据存储。 如果没有 SQL 数据库,请在 Azure 门户中创建一个。
  • 存储帐户: 使用存储在 Azure Data Lake Storage Gen2 中的 Delta Lake 作为目标数据存储。 如果没有存储帐户,请参阅创建存储帐户以获取创建步骤。

创建 CDC 项目

  1. 转到数据工厂中的“创作”窗格。 在“管道”下,会出现一个名为“变更数据捕获(预览版)”的新顶级项目。

    Screenshot of a new top-level artifact for change data capture on the Factory Resources pane.

  2. 将光标悬停在“变更数据捕获(预览版)”上,直到出现三个点。 然后,选择“变更数据捕获(预览版)操作”。

    Screenshot of the button for change data capture actions appearing over the new top-level artifact.

  3. 选择“新建 CDC(预览版)”。 此步骤会打开用于开始引导式过程的浮出控件。

    Screenshot of a list of change data capture actions.

  4. 系统会提示你为 CDC 资源命名。 默认情况下,名称为“adfcdc”,还带有一个按 1 递增的数字。 可以将此默认名称替换为自己想要的名称。

    Screenshot of the text box to update the name of a resource.

  5. 使用下拉列表选择数据源。 对于本文,请选择“Azure SQL 数据库”。

    Screenshot of the guided process flyout with source options in a dropdown list.

  6. 系统会提示你选择链接服务。 创建新的或选择现有的链接服务。

    Screenshot of the box to choose or create a linked service.

  7. 选择链接服务后,系统会提示选择源表。 使用复选框选择源表,然后使用下拉列表选择“增量列”值。

    Screenshot that shows selection of a source table and an incremental column.

    该窗格仅列出具有支持的增量列数据类型的表。

    注意

    若要在 Azure SQL 数据库源中启用架构演变的 CDC,请根据水印列而不是启用了本机 SQL CDC 的表来选择表。

  8. 选择源表后,选择“继续”以设置数据目标。

    Screenshot of the Continue button in the guided process to select a data target.

  9. 使用下拉列表选择“目标类型”值。 对于本文,请选择“Delta”。

    Screenshot of a dropdown menu of all data target types.

  10. 系统会提示你选择链接服务。 创建新的或选择现有的链接服务。

    Screenshot of the box to choose or create a linked service to your data target.

  11. 选择目标数据文件夹。 你可以使用:

    • “目标基路径”下的“浏览”按钮,它会帮助你自动填充为源选择的所有新表的浏览路径。
    • 外部的“浏览”按钮,它可以单独选择文件夹路径。

    Screenshot of a folder icon to browse for a folder path.

  12. 选择文件夹路径后,选择“继续”按钮。

    Screenshot of the Continue button in the guided process to proceed to the next step.

  13. 此时会显示一个用于捕获变更数据的新选项卡。 此选项卡是 CDC 工作室,可在这里配置新资源。

    Screenshot of the change data capture studio.

    系统会自动为你创建新映射。 可使用下拉列表来更新为映射选择的源表和目标表。

    Screenshot of the source-to-target mapping in the change data capture studio.

  14. 选择表后,默认情况下会映射表的列,并启用“自动映射”开关。 自动映射会在接收器中自动按名称映射列,在源架构演变时拾取新的列更改,并将此信息流向受支持的接收器类型。

    Screenshot of the toggle for automatic mapping turned on.

    注意

    仅当“自动映射”开关处于打开状态时,架构演变才有效。 若要了解如何编辑列映射或包含转换,请参阅使用变更数据捕获资源捕获已更改的数据

  15. 选择“键”链接,然后选择用于跟踪删除操作的“键”列。

    Screenshot of the link to enable Keys column selection.

    Screenshot of selecting a Keys column for the selected source.

  16. 映射完成后,使用“设置延迟”按钮来设置 CDC 延迟。

    Screenshot of the Set Latency button at the top of the canvas.

  17. 选择 CDC 延迟,然后选择“应用”以进行更改。

    默认情况下,延迟设置为“15 分钟”。 本文中的示例使用“实时”选项作为延迟设置。 实时延迟以小于 1 分钟的间隔持续拾取源数据中的更改。

    对于其他延迟(例如,如果选择 15 分钟),变更数据捕获将处理源数据,并拾取自上次处理时间以来更改的所有数据。

    Screenshot of the options for setting latency.

  18. 配置 CDC 后,选择“全部发布”来发布更改。

    Screenshot of the publish button at the top of the canvas.

    注意

    如果不发布更改,将无法启动 CDC 资源。 下一步中的“开始”按钮将不可用。

  19. 选择“开始”,开始运行变更数据捕获。

    Screenshot of the Start button at the top of the canvas.

现在,更改数据捕获正在运行,你可以:

  • 使用监视页查看已读取和已写入的更改(插入、更新或删除)的数量和其他诊断信息。

    Screenshot of the monitoring page of a selected change data capture.

    Screenshot of the monitoring page of a selected change data capture with a detailed view.

  • 验证更改数据是否以 Delta 格式到达存储在 Azure Data Lake Storage Gen2 中的 Delta Lake 中。

    Screenshot of a target Delta folder.

  • 验证到达的更改数据的架构。

    Screenshot of a Delta file.

对源表进行动态架构级更改

  1. 使用 ALTER TABLE T-SQL 语句将新的“PersonalEmail”列添加到源表,如以下示例所示。

    Screenshot of the ALTER command in Azure Data Studio.

  2. 验证新的“PersonalEmail”列是否显示在现有表中。

    Screenshot of a new table design with a column added for personal email.

验证 Delta 接收器处的架构更改

确认新列“PersonalEmail”是否出现在 Delta 接收器中。 现在,你已知道存在架构更改的变更数据已到达目标。

Screenshot of a Delta file with a schema change.