azure - Azure Data Factor - 如何实现与复制任务的数据一致性
问题描述
使用 azure 数据工厂实现复制数据任务时处理事务一致性的最佳实践是什么?
例如,在将数据从源 sql server 数据库成功复制到 sink sql server 数据库后,需要在源中将数据标记为已复制。
- 将数据从源复制到接收器上的临时表
- 通过存储过程将临时表中的数据合并到最终目标表
- 将源中的数据标记为已复制
解决方案
我认为您可以按照此文档增量加载数据。
选择水印列。为源数据存储中的每个表选择一列,您可以识别每次运行的新记录或更新记录。通常,在创建或更新行时,此选定列中的数据(例如 last_modify_time 或 ID)会不断增加。此列中的最大值用作水印。
准备一个数据存储来存储水印值。在本教程中,您将水印值存储在 SQL 数据库中。
创建具有以下活动的管道
:创建一个 ForEach 活动,该活动遍历作为参数传递给管道的源表名称列表。对于每个源表,它调用以下活动来为该表执行增量加载。
湾。创建两个查找活动。使用第一个 Lookup 活动检索最后一个水印值。使用第二个查找活动来检索新的水印值。这些水印值被传递给 Copy 活动。
C。创建一个 Copy 活动,该活动从源数据存储复制行,其中水印列的值大于旧水印值且小于新水印值。然后,它将增量数据从源数据存储复制到 Azure Blob 存储作为新文件。
d。创建一个 StoredProcedure 活动,为下次运行的管道更新水印值。
推荐阅读
- javascript - AJAX 上传后 $_FILES 为空
- r - 在 mac 时区安装 lightgbm_r 时发生错误
- adobe-indesign - 在 Extendscript Indesign 中重新排序 XML 元素
- laravel - 部署 Laravel 代码时出错
- mariadb - CentOS 7 MariaDB 10 远程连接设置
- docker - 跨 Docker 容器共享内存:'--ipc=host' vs. '--ipc=shareable'
- json - 使用 jq 添加 JSON 对象时如何防止转义?
- java - java中的正则表达式匹配而不使用正则表达式
- bash - 当字符串包含 * 字符时,如何将 bash 字符串标记为数组?
- sql - 比较sql中同一列中的单元格1和单元格2