繁体   English   中英

ADF Copy 活动中的数据一致性检查,Source 作为 Teradata 表上的查询,Sink 作为 Azure Blob 中的 CSV

[英]Data Consistency check in ADF Copy activity with Source as Query on Teradata Table and Sink as CSV in Azure Blob

来源:对 Teradata 表的查询

接收器:Azure Blob 存储中的 Csv 文件

目标:如果源查询中的计数和复制的行不匹配,我希望复制活动失败。

查看支持的数据存储和场景的文档,如果源到目标行数不匹配并且我没有在容错中设置任何内容,例如跳过不兼容的行(图片以供参考)

在启用数据一致性验证的单副本活动中复制表时,如果从源读取的行数不同于复制到目标的行数加上跳过的不兼容行数,则复制活动将失败。

微软文档 .

但是,我无法确定这一点,因为我无法在源头更改数据以进行测试。 因此,我的查询:-

  • 它提到了“桌子”。 希望确保 Teradata 表也被覆盖,而不仅仅是 Azure 资源,如 Sql DB。
  • 它提到“表”作为来源。 如果我在源中有一个查询而不是复制活动的整个表,它也会同样失败吗? (图片供参考)。
  • 如果我没有 select 任何“容错”,我是否正确理解它不会跳过任何行或任何其他异常,因此对所有内容进行行计数?

不同的来源会采取不同的行动(例如二进制副本、csv 副本等),但我主要关注作为源的 Teradata 查询和作为接收器的 Azure Blob 中的 csv。

感谢任何建议。 在此先感谢您的时间。 资源

下沉

数据一致性选择

容错选项

我试图重现上述但未成功启用一致性选项。

目标:如果源查询中的计数和复制的行不匹配,我希望复制活动失败

相反,您可以尝试这个用户定义的解决方法(在这种情况下)。

首先将您的源复制到临时表,然后在 If 活动中检查读取和复制的行是否相同。

在此处输入图像描述

在 if 活动表达式中,给出以下条件。

@equals(activity('Copy data1').output.rowsRead,activity('Copy data1').output.rowsCopied)

在此处输入图像描述

在 if 的 True 活动中,提供从源到目标的复制活动。

在此处输入图像描述

在 if 的 Failed 活动中,给出一个失败的活动。

在此处输入图像描述

在这种方法中,如果从源到目标类型的临时表的行不相等,则管道将失败并阻止复制到原始目标表

我已经使用来自源的查询检查了上述方法,它也适用于此。

如果结果为真,则可以将来自同一源的相同数量的行复制到您的目标表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM