使用多个复制活动输出对象在 Azure 数据工厂中创建 JSON 数组

Creating JSON Array in Azure Data Factory with multiple Copy Activities output objects

是否可以将 Azure 数据工厂中副本 activity 的输出嵌入到一个数组中,该数组将在后续的 ForEach 中迭代?

我的目标是创建一个数组,其中包含多个复制活动的输出,然后在 ForEach 中,使用点表示法访问这些复制活动的属性(例如:item().rowsRead)。图像显示代码详细信息。

Image

具体来说,我有 7 个复制活动,它们的输出 JSON 对象(描述为 here)将存储在一个数组中,然后我对其进行迭代。在 ForEach 中,我将检查每个复制活动(rowsRead、rowsCopied 等)的属性以进行验证。 https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-monitoring

我认为我们可以将副本 activity 的输出嵌入到数组中的 Azure 数据工厂中。我创建了一个测试,将 2 个 Copy 活动的输出保存到一个数组中。我们需要concat一个字符串类型,然后将其转换为json类型。请看我的step2.

  1. 我们可以声明一个名为CopyInfo的数组类型变量来存储输出。另一个名为 JsonArray 的数组类型变量用于在调试模式下查看测试结果。

  2. Append variable1activity中,我用@json(concat('{"activityName":"Copy1","activityObject":',activity('Copy data1').output,'}'))保存了Copy data1activity的输出,从String类型转成到 Json 类型。

  3. Append variable2activity中,我用@json(concat('{"activityName":"Copy2","activityObject":',activity('Copy data2').output,'}'))保存Copy data2activity的输出,从String类型转到 Json 类型。

  4. 然后我把变量CopyInfo的值赋值给变量JsonArray

  5. 最后,我们可以看到 json 数组如下:

"name": "JsonArray",
"value": [
    {
        "activityName": "Copy1",
        "activityObject": {
            "dataRead": 643,
            "dataWritten": 643,
            "filesRead": 1,
            "filesWritten": 1,
            ...
    },
    {
        "activityName": "Copy2",
        "activityObject": {
            "dataRead": 643,
            "dataWritten": 643,
            "filesRead": 1,
            "filesWritten": 1,
            ...
            }
    }
]