Azure Data Factory动态日期处理:导出CSV文件名追加上周日日期
Azure Data Factory 文件名动态生成方案
直接使用ADF动态内容操作日期(推荐方案)
完全可以在ADF动态内容中通过内置日期函数完成日期计算,不需要额外组件。
你要的日期后缀逻辑可以直接用以下表达式实现,拼接后完全匹配Filename_11_07的格式要求:
@concat( <你的文件名前缀动态内容>, '_', formatDateTime( addDays(utcnow(), -dayOfWeek(utcnow())), 'MM_dd' ) )
表达式逻辑说明:
dayOfWeek()函数返回值为0(周日)到6(周六),当前日期减去该返回值的天数,即可得到最近一个周日的日期,符合你“上周日”的要求formatDateTime()用MM格式输出两位月份,dd输出两位日期- 如果需要适配本地时区,把
utcnow()替换为convertTimeZone(utcnow(), 'UTC', '你对应的时区ID')即可 - 若业务逻辑要求当天为周日时取前一周的周日而非当天,把表达式里的
-dayOfWeek(utcnow())改为-if(equals(dayOfWeek(utcnow()),0),7,dayOfWeek(utcnow()))即可
其他可选实现方式
- 触发器参数传入:如果是定时触发的管道,可以直接在触发器的动态参数中预先计算好日期后缀,作为管道参数传入复制活动,无需在活动内额外写逻辑
- Lookup活动预取文件名:如果日期计算逻辑更复杂,可以在Azure SQL中写SQL语句直接生成完整文件名,通过Lookup活动查询结果后直接给复制活动使用,示例SQL:
SELECT CONCAT('你的文件名前缀', '_', FORMAT(DATEADD(day, -DATEPART(weekday, GETDATE()), GETDATE()), 'MM_dd')) AS target_filename - 映射数据流生成:如果使用映射数据流做数据同步,可以在派生列中生成目标文件名列,接收器设置文件名来源为该列即可
内容的提问来源于stack exchange,提问作者Santosh V
相关产品推荐
相关产品推荐

