Azure 数据工厂更改行 |在源和接收器之间匹配数据时跳过列

Azure Data Factory Alter Row | Skip Columns while matching Data Between Source and Sink

我们正在使用 ADF 管道和 Alter 行转换来更新接收器中的数据。在匹配源数据和目标数据时,我们想在评估目标和接收器之间的数据时忽略一列。

例如,在下面的例子中,我们想忽略源和目标之间匹配的 TimeStamp 列。因此,如果只有时间戳不同,我们不希望在接收器中更新数据。有没有办法通过改变行来实现这个?

Table A - 来源

TimeStamp First Last
04:01:2021 18:30 Leo Messi
03:08:2021 17:30 Neymar Jr

Table B - 现有目标

TimeStamp First Last
06:04:2022 18:30 Leo Messi
06:04:2022 17:30 Neymar Jr

在 Alter Row 转换中没有忽略列的选项。如果您只执行更新,最好的方法是删除接收器映射中 TimeStamp 列的映射,以便在更新条件匹配时该记录不是 changed/updated。

如果您在接收器转换中使用 Upsert,

选项 1:

您可以将table中的Timestamp列设置为默认值,这样即使您在Sink转换中删除了该列的映射,每次插入新记录时都会添加默认值,什么也没有更新时发生变化。

选项2:

• 您添加第二个源(目标 table)并左连接源和目标 tables。

来源 1:

来源 2:

加入变换:左外

• 然后使用派生列转换,仅在目标时间戳值为空时获取源时间戳值。这样即使在更新目标 table 中的数据时,相同的目标时间戳值也会 re-update 在接收器中。

• 使用 Select 转换,删除目标列和不需要的时间戳列

• 更改行:

• 接收器: