对于ETL相关的离线任务(hive,spark等)来说任务每次运行的区别就在于一个特定的时间或时间区间,同时这个时间或时间区间是与任务版本相关的,即基于时间版本来计算这个时间或时间区间
一、介绍
在离线任务中经常会看的一些动态参数,例如,任务A,每天需要通过hive来计算昨天一天的活跃用户:
select count(*) form daily_active_user where day=${time:yesterday}
其中,${time:yesterday}为动态变量,该变量是基于该任务的任务版本来计算,如果任务版本为20200102时,${time:yesterday}=2020-01-01,以此就实现了任务每次任务时能够正确生成hive sql,同时当任务修复时也能够生成正确的hive sql。
二、时间表达式格式
1、介绍
表达式是以"${time:格式化表达式,预设值,时间加减}"的方式处理,大致支持三种形式(以下动态表达式所使用的时间为"2019-01-31"):
1.一个参数
${time:yesterday}=2019-01-30,一般是指定一些预设值来实现
2.两个参数
1)${time:yesterday, -1d}=2019-01-29,通过时间加减方式,可以增减时间,然后通过格式化再输出数据
2)${time:yyyyMMdd