根据上次成功 运行 日期在数据工厂中过滤文件

File filtering in data factory based on last successful run date

我每周都会上传 SFTP 中的文件。这些文件的名称附加了日期。我只想每周将最新的文件复制到 adls 中。每当作业成功完成时,日期都会存储在 sql table 中,这样我就可以查找上次成功的 运行 日期。

在我看来,我认为我需要这样的东西:过滤名称中包含的日期大于或等于上次成功 运行 日期的文件....或过滤上次修改日期大于或等于的文件等于上次成功 运行 日期?

这样,如果作业在最后 运行 失败,它将抓取前几周和当前周的文件。

目前我的管道有一个查找可以显示最后一次成功 运行,获取显示 sftp 文件夹中所有文件的元数据、过滤器和每个(副本)。我知道副本有效,因为我为特定文件设置了过滤器并且它有效。我需要帮助的领域是过滤器。

我创建了一个示例进行测试,希望这对您有所帮助:

我设置了一个管道变量 LastRunDate 类型为 string,值为“2020-07-01”,这与您 lookup activity.

的输出类似

这是我的 GetMetaData Activity:

的输出
{
    "childItems": [
        {
            "name": "polo_2020-06-30.csv",
            "type": "File"
        },
        {
            "name": "polo_2020-07-01.csv",
            "type": "File"
        },
        {
            "name": "polo_2020-07-02.csv",
            "type": "File"
        }
    ]
}

Filter Activity的设置:

"项目":@activity('Get Metadata1').output.childItems

“条件”:@greater(split(split(item().name,'_')[1],'.')[0],variables('LastRunDate'))

这是 Filter Activity 的输出:

{
    "ItemsCount": 3,
    "FilteredItemsCount": 1,
    "Value": [
        {
            "name": "polo_2020-07-02.csv",
            "type": "File"
        }
    ]
}

我最终解决了我的问题,方法是使用翻滚 window 触发器将上次成功的 运行 日期和当前日期变量插入获取元数据中的最后修改参数 activity.我使用 this 作为指导