Azure数据工厂-Dataflow如何在单个事务中创建CRM相关实体记录?

bnlyeluc  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(84)

我正在尝试实现Azure数据工厂DATAFLOW,以便在单个事务中将CRM实体记录创建到多个实体中。如果第二个实体中发生任何错误,则应回滚第一个实体记录。请分享您的想法。
我尝试与Json文件作为输入与多个层次结构,代表多个CRM实体。我使用数据流源Json数据集和3 CRM汇。但是,我无法实现单一事务时,发生错误。

xn1cxnb4

xn1cxnb41#

ADF不支持回退选项。您可以在目标表中使用任何水印列或标志,以指明在当前管道运行期间插入的记录,并在出现错误时仅删除这些记录。
水印列可以具有插入行时的时间戳,也可以是递增键。在运行管道之前,将记录水印列的最大值。只要管道失败,就可以删除在最大水印值之后插入的行。
如果只需要删除某些实体中未复制的记录,而不是删除当前管道运行中的所有记录,那么根据关键字字段,我们可以删除行。方法如下:

  • Source1和source2分别带有实体1和实体2数据。


图像1:实体1数据

img2:实体2数据

  • Id=6未复制到entity2。因此,应从entity1中删除。
  • 增加Exist变换,左流和右流分别为source1和source2。Exists类型为不存在。Exists条件:source1@id = source2@id .


图像3:存在转换设置

  • 添加了更改行转换,条件为delete iftrue()


图像4:更改行转换设置

  • 在接收器设置中,选择允许删除,键列选择为id


图像5:接收器设置


图像6:接收数据预览。
运行具有此数据流的管道时,将删除实体1中但实体2中没有的所有行。

相关问题