You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Data Factory中遍历LOOKUP活动的数据(已用Foreach)

问题场景

我正在使用Azure Data Factory读取指定文件夹下的所有CSV文件,已创建包含对应步骤的管道,相关步骤截图如下:

管道整体步骤

管道步骤截图

Copy活动配置

Copy活动截图

我的LOOKUP活动返回的数据如下,希望读取所有数据并通过脚本变量处理:

{
    "count": 2,
    "value": [
        {
            "Prop_0": "ABC",
            "Prop_1": "DEF",
            "Prop_2": "XYZ'",
            "Prop_3": "123456789",
            "Prop_4": "10/19/1991",
            "Prop_5": "Male",
            "Prop_6": "Married",
            "Prop_7": "City",
            "Prop_8": "AB",
            "Prop_9": "6226",
            "Prop_10": "",
            "Prop_11": null,
            "Prop_12": "",
            "Prop_13": null,
            "Prop_14": "",
            "Prop_15": "",
            "Prop_16": null,
            "Prop_17": null,
            "Prop_18": null,
            "Prop_19": null,
            "Prop_20": null,
            "Prop_21": null,
            "Prop_22": null,
            "Prop_23": null,
            "Prop_24": null,
            "Prop_25": "11/28/2023 07:43 AM",
            "Prop_26": "11/27/2023 02:20 PM",
            "Prop_27": "12/01/2023 02:37 PM"
        },
        {
            "Prop_0": "PQR",
            "Prop_1": "DEF",
            "Prop_2": "XYZ'",
            "Prop_3": "234567890",
            "Prop_4": "10/19/1991",
            "Prop_5": "Male",
            "Prop_6": "Married",
            "Prop_7": "City",
            "Prop_8": "AB",
            "Prop_9": "6226",
            "Prop_10": "",
            "Prop_11": null,
            "Prop_12": "",
            "Prop_13": null,
            "Prop_14": "",
            "Prop_15": "",
            "Prop_16": null,
            "Prop_17": null,
            "Prop_18": null,
            "Prop_19": null,
            "Prop_20": null,
            "Prop_21": null,
            "Prop_22": null,
            "Prop_23": null,
            "Prop_24": null,
            "Prop_25": "11/28/2023 07:43 AM",
            "Prop_26": "11/27/2023 02:20 PM",
            "Prop_27": "12/01/2023 02:37 PM"
        }
    ]
}

我希望根据count值读取各Prop字段并处理,但因已使用Foreach活动无法再次使用,恳请指导如何读取并处理这些数据。

解决方案

1. 直接通过ADF表达式访问指定数据

无需额外迭代活动,直接用表达式提取LOOKUP返回结果中的内容:

  • 获取count值:@activity('你的LOOKUP活动名称').output.count
  • 获取指定索引对象的Prop字段:@activity('你的LOOKUP活动名称').output.value[0].Prop_0(0为第一个对象的索引,可替换为其他数字)
  • 若需批量遍历所有对象,结合range()函数生成索引序列:
    @range(0, activity('你的LOOKUP活动名称').output.count)
    
    将此表达式用于变量或Set Variable活动,配合@activity('你的LOOKUP活动名称').output.value[item()].Prop_X动态提取对应字段。

2. 使用Execute Script活动批量处理

如果需要复杂逻辑处理,添加Execute Script活动,选择Azure SQL Database或Azure Functions作为运行环境,将LOOKUP输出作为参数传入后批量处理:

  • 在活动参数中传入LOOKUP结果:@activity('你的LOOKUP活动名称').output.value
  • 以SQL脚本为例,用OPENJSON解析数组并处理:
    DECLARE @json NVARCHAR(MAX) = ?
    SELECT 
        Prop_0, Prop_1, Prop_3,
        CONVERT(DATE, Prop_4, 101) AS Prop_4
        -- 按需添加其他*Prop*字段及处理逻辑
    FROM OPENJSON(@json)
    WITH (
        Prop_0 VARCHAR(50),
        Prop_1 VARCHAR(50),
        Prop_3 VARCHAR(50),
        Prop_4 VARCHAR(20)
    )
    

3. 嵌套Foreach活动(场景允许时)

ADF支持Foreach活动嵌套,只要内外层迭代对象不冲突即可。若之前的Foreach用于处理文件,内层可专门遍历LOOKUP返回的value数组:

  • 内层Foreach的迭代项设置为:@activity('你的LOOKUP活动名称').output.value
  • 在Foreach内部添加Set Variable或其他处理活动,用@item().Prop_X访问当前对象的对应字段。

内容的提问来源于stack exchange,提问作者Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 09:27:03