首页 > 解决方案 > Azure 数据工厂从数组中获取对象属性

问题描述

我有一个获取元数据活动,它获取 blob 容器下的所有子项。有文件和文件夹,但我只需要文件。所以在一个过滤器活动中,它只过滤类型=文件的项目。这是我从过滤器活动中得到的:

    Output
    {
        "ItemsCount": 4,
        "FilteredItemsCount": 3,
        "Value": [
            {
                "name": "BRAND MAPPING.csv",
                "type": "File"
            },
            {
                "name": "ChinaBIHRA.csv",
                "type": "File"
            },
            {
                "name": "ChinaBIHRA.csv_20201021121500",
                "type": "File"
            }
        ]
    }

所以有一个包含 3 个对象的数组被返回。每个对象都有一个名称和类型属性。我只想将名称作为参数提供给存储过程活动。我已经使用这个表达式来尝试获取一个逗号分隔的列表作为参数。

    @join(activity('Filter1').output.Value.name, ',')

并得到这个错误:

            The expression 'join(activity('Filter1').output.Value.name, ',')' cannot be evaluated because property 'name' cannot be selected. Array elements can only be selected using an integer index.

那么我该如何实现呢?

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

解决方案


您可以在过滤活动之后创建 For Each 活动。在 For Each 活动中,附加文件名。

步:

1.创建两个变量。 在此处输入图像描述

2.For Each活动的设置 在此处输入图像描述

3.For Each活动中Append Variable活动的设置 在此处输入图像描述

4.Set变量的设置 在此处输入图像描述


推荐阅读