我对 ADF 完全陌生。我正在使用现有的 ADF 设置,由于修改了源文件夹结构,需要对其进行修改以满足新的要求。
以前,源文件夹包含 TableName.TXT 类型的 txt 文件,管道由查找活动和后跟的 foreach 活动组成,该活动复制查找返回的所有文件。
当前的问题是源文件夹已更改,现在同一个表可以有多个文件,即“TableName_YYYYMMDD_HHMMSS.TXT”类型的文件。我想修改管道,以便仅复制最新的管道(使用文件名中的 YYYYMMDD_HHMMSS 时间戳)。我一直在尝试“获取元数据”活动,该活动成功返回感兴趣的 TableName 的不同文件名,但我在下一步中遇到了困难。如何从输出中选择最新的一个?
"childItems": [
{
"name": "Table1_20250115_115024.TXT",
"type": "File"
},
{
"name": "Table1_20250116_085717.TXT",
"type": "File"
}
]
请注意,我已经在 ForEach 中,据我了解,嵌套的 foreach 是不允许的。
我正在考虑解决方案,例如...
任何指导将不胜感激!
您可以在循环内尝试第一种方法。由于您已经获得具有相同表名的文件名列表,因此您将获得按字母顺序排列的文件名列表。由于日期格式也在
YYYYMMDD_HHMMSS
中,因此它将在数组的最后一项中给出最新日期。
"childItems": [
{
"name": "Table1_20250115_115024.txt",
"type": "File"
},
{
"name": "Table1_20250116_085717.txt",
"type": "File"
},
{
"name": "Table1_20250216_085717.txt",
"type": "File"
}
]
获取该数组后,使用以下表达式获取数组的最后一项(最新文件名)。在这里,作为示例,我给出了“获取元数据”活动输出,在您的情况下,它应该是您在循环内获得的上述数组。
@last(activity('Get Metadata1').output.childItems).name
最新文件名:
现在,您可以根据您的要求使用此变量。