如何在ADF中将一个Lookup活动的批量Id输出用于另一Lookup活动
解决方法
要把Lookup1返回的所有Id传入Lookup2的DELETE语句,你可以用ADF的join函数将Id数组拼接成符合SQL语法的字符串:
分两种场景处理:
1. Id为字符串类型
修改Lookup2的DELETE语句为:
DELETE FROM [SERVER2].[TABLE-A] WHERE Id NOT IN ('@{join(activity('Lookup1').output.value, "','")}')
join函数会遍历Lookup1返回的所有Id,用','作为分隔符拼接,最终生成类似('id1','id2','id3',...,'id70')的格式,完全适配SQL的IN子句要求。
2. Id为数字类型
无需添加单引号,直接使用:
DELETE FROM [SERVER2].[TABLE-A] WHERE Id NOT IN (@{join(activity('Lookup1').output.value, ",")})
最终生成(1,2,3,...,70)的合法数字列表格式。
额外补充
如果要彻底实现两表记录完全一致,除了删除SERVER2中不存在的记录,还需要同步SERVER1新增的记录。你可以新增一个Lookup活动获取SERVER2的Id列表,再通过Copy活动或SQL活动,将SERVER1有但SERVER2没有的记录插入到目标表。
内容的提问来源于stack exchange,提问作者Nason Thomas
相关产品推荐
相关产品推荐

