在ADF中如何将数组变量传入SQL的IN查询条件
Azure Synapse专用池拼接IN条件优化方案
提取ID值并生成合法IN条件:利用Azure Data Factory(ADF)的表达式函数直接处理Lookup活动返回的结果,无需逐条循环。使用
join函数遍历返回的对象数组,提取ID字段并格式化为符合SQL语法的格式:- 若ID为字符串类型,使用以下表达式:
@concat('select ID from source where ID in (', join(activity('Lookup1').output.value, ', ', (item) => concat('''', item.ID, '''')), ')') - 若ID为数值类型,无需添加单引号,表达式调整为:
@concat('select ID from source where ID in (', join(activity('Lookup1').output.value, ', ', (item) => string(item.ID)), ')')
该表达式会将Lookup返回的
[{"ID":"xxx"},...]格式数据,转换为('xxx','yyy')或(123,456)这类合法的IN条件参数。- 若ID为字符串类型,使用以下表达式:
关键注意点:
- 确保Lookup活动未勾选First row only选项,这样才能获取完整的ID列表
- 1-200条ID的场景下,此拼接方式不会触发SQL语句长度限制,比For-Each循环效率提升明显
内容的提问来源于stack exchange,提问作者Sam L
相关产品推荐
相关产品推荐

