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

时间:2021-01-16 21:40:41

标签: azure azure-data-factory azure-data-factory-2 azure-data-factory-pipeline

是否可以将 Azure 数据工厂中复制活动的输出嵌入到一个数组中,以便在后续 ForEach 中迭代?

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

Image

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

1 个答案:

答案 0 :(得分:1)

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

enter image description here

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

  2. Append variable1活动中,我使用@json(concat('{"activityName":"Copy1","activityObject":',activity('Copy data1').output,'}'))保存Copy data1活动的输出并将其从String类型转换为Json类型。
    enter image description here

  3. Append variable2活动中,我使用@json(concat('{"activityName":"Copy2","activityObject":',activity('Copy data2').output,'}'))保存Copy data2活动的输出并将其从String类型转换为Json类型。
    enter image description here

  4. 然后我将变量 CopyInfo 的值赋给变量 JsonArray enter image description here

  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,
            ...
            }
    }
]