0

我正在使用 Data Factory v2,我目前有一个简单的复制活动,它将文件从 FTP 服务器复制到 blob 存储。此服务器上的文件名格式如下:

File_{Year}{Month}{Day}.zip

为了下载最新的文件,我将此过滤器添加到我的输入数据集 json 文件中:

"fileName": {
    "value": "@concat('File_',formatDateTime(utcnow(), 'yyyyMMdd'), '.zip')",
    "type": "Expression"
}

我现在希望能够下载昨天的文件,可以使用adddays().

但是,我希望能够在同一个复制活动中执行此操作,并且似乎 Data Factory v2 不允许我使用以下类型的正则表达式逻辑:

@concat('File_',formatDateTime(utcnow(), 'yyyyMMdd'), '.zip') || @concat('File_', formatDateTime(adddays(utcnow(), -1), 'yyyyMMdd'), '.zip')

这是可能的还是我需要一个单独的活动?

需要第二个活动似乎很奇怪,因为复制活动只能接受一个输入,但如果正则表达式足够简单,则多个文件被视为单个输入,如果不是,则多个文件被视为多个输入。

4

2 回答 2

1

'||' 将不起作用,因为它将被评估为单个字符串。但我可以为此提供两种解决方案。

  1. 使用翻滚窗口每日触发并将开始时间设置为昨天。所以它会触发两个管道运行。
  2. 使用Foreach 活动+ 复制活动。foreach 活动迭代一个数组以将昨天和今天传递给复制活动。

顺便说一句,您可以只使用字符串插值表达式而不是 concat。他们是一样的。

File_@{formatDateTime(utcnow(), 'yyyyMMdd')}.zip
于 2018-06-19T14:21:15.350 回答
0

我建议您阅读有关获取元数据活动的信息。我认为这对您的情况很有帮助。

https://docs.microsoft.com/en-us/azure/data-factory/control-flow-get-metadata-activity

你有 itemName 属性,lastModified 属性,检查一下。

于 2018-06-20T12:32:33.983 回答