我正在使用数据工厂 v2,目前有一个简单的复制活动,可将文件从 FTP 服务器复制到 blob 存储。此服务器上的文件名采用以下形式:
File_{Year}{Month}{Day}.zip
为了下载最新的文件,我将这个过滤器添加到我的输入数据集json文件中:
"fileName": {
"value": "@concat('File_',formatDateTime(utcnow(), 'yyyyMMdd'), '.zip')",
"type": "Expression"
}
我现在希望能够下载昨天的文件,可以使用adddays()
.
但是,我希望能够在同一复制活动中执行此操作,并且数据工厂 v2 似乎不允许我使用以下类型的正则表达式逻辑:
@concat('File_',formatDateTime(utcnow(), 'yyyyMMdd'), '.zip') || @concat('File_', formatDateTime(adddays(utcnow(), -1), 'yyyyMMdd'), '.zip')
这可能还是我需要单独的活动?
需要第二个活动似乎很奇怪,因为复制活动只能接受单个输入,但如果正则表达式足够简单,则多个文件被视为单个输入,如果不是,则多个文件被视为多个输入。
"||"将不起作用,因为它将被评估为单个字符串。 但我可以为此提供两种解决方案。
- 使用翻转窗口每日触发器并将开始时间设置为昨天。因此,它将触发两个管道运行。
- 使用 Foreach 活动 + 复制活动。foreach 活动迭代一个数组,以将昨天和今天传递给复制活动。
顺便说一句,你可以只使用字符串插值表达式而不是连接。它们是一样的。
File_@{formatDateTime(utcnow(), 'yyyyMMdd')}.zip
我建议您阅读有关获取元数据活动的信息。我认为这在您的场景中会有所帮助。
https://learn.microsoft.com/en-us/azure/data-factory/control-flow-get-metadata-activity
你有itemName属性,lastModified属性,签出来。