如何在ADF管道中获取列数据并实现循环遍历?
在ADF管道中提取单列数据并循环遍历的解决方案
方法一:用Lookup活动(推荐,最省心)
Lookup是ADF专门用来获取数据集的原生组件,比Script活动更适配取单列循环的场景:
- 新建Lookup活动,关联你的SQL Server数据源
- 编写查询:
SELECT 目标列名 FROM 目标表 WHERE 过滤条件(需要去重就加DISTINCT) - 关闭「第一行仅」开关(默认开启,关闭后才能获取所有行数据)
- 配置ForEach活动,将遍历项设为
@activity('Lookup_你的活动名').output.value - 在ForEach内部的子活动中,用
@item().目标列名即可拿到每一行的列值
方法二:若已使用Script活动,处理嵌套数组
Script活动执行SQL后返回的resultSets[0].rows是嵌套数组结构(比如[[值1],[值2]]),可以用ADF表达式转成扁平数组:
- 先定位到嵌套数组:
@activity('Script_你的活动名').output.resultSets[0].rows - 用
map函数提取每个子数组的第一个元素(即目标列值):@map(activity('Script_你的活动名').output.resultSets[0].rows, item()[0]) - 将上述表达式填入ForEach活动的「遍历项」,循环内部直接用
@item()就能拿到单个列值
注意事项
- Lookup活动默认最多返回5000行,若数据量超出,需在Lookup的「设置」中开启分页,或在SQL查询里用
OFFSET ... FETCH NEXT ...实现分页 - 若Script活动返回多组结果集,需调整
resultSets的索引(比如resultSets[1])匹配目标数据集
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

