Azure Data Factory ForEach活动重复复制问题:如何仅复制11行数据?
解决Azure Data Factory中ForEach循环重复复制全部数据的问题
你的问题出在ForEach循环内的Copy活动没有针对当前迭代项做数据过滤,每次都读取Lookup返回的完整数据集,导致11次循环每次插入11条数据,最终得到121条重复数据。按以下步骤修改即可:
配置ForEach迭代项:确保ForEach活动的
Items属性设置为@activity('你的Lookup活动名称').output.value,这样循环会逐条遍历Lookup输出的11条数据。修改Copy活动的数据源过滤逻辑:
- 如果你的Copy活动源是SQL类数据源(比如和Lookup同数据源),在源的查询或筛选条件中,用当前循环项的唯一标识字段过滤数据。例如,假设每条数据的唯一标识是
ID,则查询语句写为:SELECT * FROM 你的源表 WHERE ID = @item().ID - 如果Lookup已经返回了单条完整数据,也可以将Copy活动的源设置为内联数据集,直接把
@item()作为源数据内容,这样每次循环仅处理当前这一条记录。
- 如果你的Copy活动源是SQL类数据源(比如和Lookup同数据源),在源的查询或筛选条件中,用当前循环项的唯一标识字段过滤数据。例如,假设每条数据的唯一标识是
确认Sink写入行为:根据需求将Azure SQL DB Sink的写入行为设置为
Append(仅新增)或Upsert(需指定主键去重),确保数据不会因为重复写入产生额外条目(这一步是辅助,核心还是数据源的过滤)。
内容的提问来源于stack exchange,提问作者Regazzi
相关产品推荐
相关产品推荐

