获取嵌套文件的最后修改时间

问题描述 投票:0回答:1

我正在尝试获取嵌套文件夹中文件的最后修改日期,并且仅复制最近 10 天内修改过的文件。

文件夹结构:

集装箱:家

产品数据/

|---------20221020/

|---------|---------20221020/

|---------|---------|---------product_data_20221020_20221020.parquet

|---------20221021/

|---------|---------20221021/

|---------|---------|---------product_data_20221021_20221021.parquet

|---------20231102/

|---------|---------20231102/

|---------|---------|---------product_data_20231102_20231102.parquet

20231102 parquet 文件是唯一应该复制的文件,因为该文件的最后修改日期是 11 月 7 日(最后修改日期与文件日期不匹配)。

我之前也遇到过类似的问题:使用 Azure 数据工厂获取分区数据的上次修改日期

我当前的问题是我根本无法过滤文件。

图 1: 管道概览

图2:获取元数据配置

图像 3: 父数据集(根文件夹)

图 4: For 循环

图 5: 在 for 循环中获取元数据

图 6: for 循环内用于获取元数据的数据集

图 7: for 循环内获取元数据的数据集参数

图 8: 在 for 循环中获取元数据输出

因为 foo 循环内的“获取元数据”上的“按上次修改进行过滤”似乎不起作用,我还尝试添加过滤器并尝试设置变量(首次亮相),但都失败了。

过滤器配置 项目:

@activity('Get Files Metadata').output.itemName
状况:
@greater(activity('Get Files Metadata').output.lastModified, addMinutes(utcNow(), -30))

图像 9: 过滤器输出(忽略项目计数)

图 10: 过滤器错误

图 11: 设置变量配置

图12:设置变量错误

azure-data-factory azure-blob-storage last-modified
1个回答
0
投票

要获取嵌套文件夹中文件的最后修改日期,您需要使用获取元数据活动和带有适当参数的 ForLoop。

  • 首先执行 GetMetadata 活动来获取 product_data 文件夹的子文件夹。 enter image description here 它的数据集: enter image description here
  • 将此活动的输出传递给 ForLoop 活动以迭代每个子文件夹。 enter image description here
  • 在 ForLoop 内部采用 GetMetadata 活动从 Product_data 文件夹的子文件夹中获取文件,并使用
    Filter by last modified
    参数获取过去 10 天内修改的文件,其中开始时间为
    @getPastTime(10,'Day')
    ,结束时间为
    utcNow()
    enter image description here 它的数据集: enter image description here

这将为您提供文件夹中最近 10 天内修改的文件数组。

© www.soinside.com 2019 - 2024. All rights reserved.