如何从检索到的文件名中仅指定必要的文件并对其进行排序

问题描述 投票:0回答:1

我想使用 ADF 管道将一些文件从 FTP 服务器获取到 Azure Blob 存储中。

我想创建一个管道,其配置如下图所示(不是整个配置,而是其中的一部分)。 pipeline image

获取元数据:获取指定目录下的所有文件名。

设置变量:将检索到的文件名存储在数组类型的变量中。

For Each:从存储的变量中一项一项检索项目并复制数据。

我这里有一些问题。

  1. 是否可以过滤通过获取元数据检索到的文件名?
  2. 检索到的文件名可以自由重新排序并存储在变量中吗?

例如,获取元数据活动的返回值如下所示。

{
    "childItems": [
        {
            "name": "archive",
            "type": "Folder"
        },
        {
            "name": "Test_JP_20241110124416.zip",
            "type": "File"
        },
        {
            "name": "Test_JP_20241111123911.zip",
            "type": "File"
        },
        {
            "name": "Test_JP_20241111135003.zip",
            "type": "File"
        },
        {
            "name": "Test_JP_20241111023251.zip",
            "type": "File"
        }
    ],
    "effectiveIntegrationRuntime": "SelfHostedIntegrationRuntime",
    "executionDuration": 1,
    "durationInQueue": {
        "integrationRuntimeQueue": 3
    },
    "billingReference": {
        "activityType": "PipelineActivity",
        "billableDuration": [
            {
                "meterType": "SelfhostedIR",
                "duration": 0.016666666666666666,
                "unit": "Hours"
            }
        ]
    }
}

现在,我在同一目录中有 1 个文件夹和 4 个文件。 导入文件有4个条件。

  1. ChildItems 的类型是“File”。
  2. 文件名包含“JP”。
  3. 文件名时间戳中的日期是今天。
  4. 按照文件名时间戳从最旧到最新的顺序导入文件。

在这种情况下,我希望导入文件及其顺序如下。

  1. Test_JP_20241111023251.zip
  2. Test_JP_20241111123911.zip
  3. Test_JP_20241111135003.zip

可以看到Get Metadata的返回值和文件导入的顺序不一样吗?

有人知道任何提示吗? 任何答案都会有帮助。

谢谢你。 致以诚挚的问候。

azure azure-pipelines azure-data-factory
1个回答
0
投票

您可以按照以下方法来实现您的要求:

使用获取元数据活动列出源中的文件和文件夹,使用

@activity('Get Metadata1').output.childItems
项目和条件

将筛选器活动添加到元数据活动
 @and(
    equals(item().type, 'File'),
    and(
        contains(item().name, 'JP'),
        equals(substring(item().name, 8, 8), utcNow('yyyyMMdd'))
    )
)

enter image description here

添加具有顺序启用和项目的 foreach 活动

@activity('Filter1').output.Value

enter image description here

使用数据集参数文件名创建数据集,源值为

@item().name
,为接收器调试管道创建blob数据源,调试成功后所需文件将复制到blob存储帐户。复制文件后,在 Blob 存储中,它们将默认按升序排序,如下所示:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.