Azure Data Factory中Filter活动如何过滤当前及未来日期文件?
修改Filter活动表达式实现排除当前及未来日期文件
核心思路
原表达式仅排除当前日期的文件,要实现排除当前及之后所有日期的文件,需要从文件名中提取日期并转换为可比较的日期类型,再与当前时区的日期做对比,仅保留早于当前日期的文件。
修改后的完整表达式
@and( equals(item().type, 'File'), startswith(item().name, 'BBN_TX1_'), endswith(item().name, '.csv'), not(greaterOrEquals( convertToDateTime(substring(item().name, length('BBN_TX1_'), 10)), convertTimeZone(utcNow(), 'UTC', 'GMT Standard Time') )) )
表达式拆解说明
- 基础条件保留:保留原有的文件类型校验、文件名前缀/后缀匹配逻辑,确保只筛选目标格式的文件
- 日期提取与转换:
substring(item().name, length('BBN_TX1_'), 10):从固定格式的文件名中截取10位日期字符串(对应yyyy-MM-dd格式)convertToDateTime(...):将截取的字符串转换为日期类型,用于后续的日期比较
- 日期对比逻辑:
convertTimeZone(utcNow(), 'UTC', 'GMT Standard Time'):沿用原逻辑的时区转换,得到当前GMT标准时间greaterOrEquals(提取的日期, 当前日期):判断文件日期是否为当前或未来日期not(...):对上述判断取反,最终仅保留文件日期早于当前日期的文件,实现排除当前及未来日期的需求
注意事项
- 需确保所有目标文件名严格遵循
BBN_TX1_yyyy-MM-dd.csv格式,否则日期截取会出现错误 - 若需调整时区,直接修改
convertTimeZone函数的时区参数即可
内容的提问来源于stack exchange,提问作者Vivek KB
相关产品推荐
相关产品推荐

