Azure Data Factory V2复制活动文件筛选器

时间:2018-06-19 13:25:54

标签: azure azure-data-factory azure-data-factory-2

我正在使用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')

这是否可行,或者我需要进行单独的活动吗?

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

2 个答案:

答案 0 :(得分:1)

“ ||”将不起作用,因为它将作为单个字符串求值。 但是我可以为此提供两个解决方案。

  1. 使用每日a tumbling window触发器并将开始时间设置为昨天。因此它将触发两个管道运行。
  2. 使用Foreach activity +复制活动。 foreach活动迭代一个数组,以将昨天和今天传递给复制活动。

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

File_@{formatDateTime(utcnow(), 'yyyyMMdd')}.zip

答案 1 :(得分:0)

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

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

您拥有itemName属性,lastModified属性,请签出。