我想使用 ADF 管道将一些文件从 FTP 服务器获取到 Azure Blob 存储中。
我想创建一个管道,其配置如下图所示(不是整个配置,而是其中的一部分)。
获取元数据:获取指定目录下的所有文件名。
设置变量:将检索到的文件名存储在数组类型的变量中。
For Each:从存储的变量中一项一项检索项目并复制数据。
我这里有一些问题。
例如,获取元数据活动的返回值如下所示。
{
"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个条件。
在这种情况下,我希望导入文件及其顺序如下。
可以看到Get Metadata的返回值和文件导入的顺序不一样吗?
有人知道任何提示吗? 任何答案都会有帮助。
谢谢你。 致以诚挚的问候。
您可以按照以下方法来实现您的要求:
使用获取元数据活动列出源中的文件和文件夹,使用
@activity('Get Metadata1').output.childItems
项目和条件 将筛选器活动添加到元数据活动
@and(
equals(item().type, 'File'),
and(
contains(item().name, 'JP'),
equals(substring(item().name, 8, 8), utcNow('yyyyMMdd'))
)
)
添加具有顺序启用和项目的 foreach 活动
@activity('Filter1').output.Value
使用数据集参数文件名创建数据集,源值为
@item().name
,为接收器调试管道创建blob数据源,调试成功后所需文件将复制到blob存储帐户。复制文件后,在 Blob 存储中,它们将默认按升序排序,如下所示: