You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Data Factory中按日期筛选ADLG2多文件(忽略时分秒)

解决ADF中Get Metadata仅提取单个当日文件的问题(忽略时间戳)

问题核心在于你之前的逻辑是匹配精确到时分秒的最后修改时间点,而非当日的时间区间,所以只能命中单个文件。以下是两种直接可行的解决方案:

方案1:在Get Metadata数据集里直接筛选当日时间区间

  1. 先通过Set Variable活动生成当日的时间边界:
    • 创建变量var_StartOfDay,表达式:@startOfDay(utcnow())(若需指定特定日期,替换utcnow()为你的日期参数)
    • 创建变量var_EndOfDay,表达式:@endOfDay(utcnow())
      这两个变量分别对应当日00:00:00和23:59:59的时间戳。
  2. 配置Get Metadata的ADLG2数据集:
    • 开启文件筛选,选择Last modified条件,设置为介于var_StartOfDay和var_EndOfDay之间。
    • 或者直接在数据集的动态表达式里写筛选逻辑:
      @greaterOrEquals(item().lastModified, variables('var_StartOfDay')) && @lessOrEquals(item().lastModified, variables('var_EndOfDay'))
      
    这样就能覆盖当日所有不同时分秒上传的文件。

方案2:用Filter活动过滤Get Metadata的文件列表

如果不想在数据集层面筛选,可以先获取全量文件再过滤:

  1. 配置Get Metadata活动,勾选Child items字段,获取ADLG2目标路径下的所有文件信息。
  2. 添加Filter活动,输入选择Get Metadata输出的childItems,过滤条件用日期格式化对比:
    @equals(formatDateTime(item().lastModified, 'yyyy-MM-dd'), formatDateTime(utcnow(), 'yyyy-MM-dd'))
    
    这个表达式会把每个文件的最后修改时间转为年-月-日格式,和目标日期完全匹配时保留该文件,最终得到当日所有文件集合。

注意事项

  • 时区一致性:如果ADLG2文件的最后修改时间是本地时区(而非UTC),需在表达式中加入时区转换,比如convertTimeZone(utcnow(), 'UTC', 'China Standard Time')。
  • 历史日期适配:若要提取非当日的历史日期文件,只需把utcnow()替换为你的目标日期变量即可。

内容的提问来源于stack exchange,提问作者Temidayo Omoniyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:38:19