大数据研发治理套件 DataLeap 支持在任务中使用多种参数,可根据您配置的参数,实现在实际调度运行时,自动替换为具体的值,本文将为您介绍平台时间参数、项目参数等相关使用说明。
Dataleap的参数分为以下三类,这三类参数均可以作为任务的输入。
说明
类型 | 适用范围 | 典型写法 | 典型场景 |
|---|---|---|---|
时间参数 | 所有离线调度任务 | ${date} | T+1的数据处理,写作 |
项目参数 | 所有离线调度任务、实时任务 | {{var}} | 将数据库名作为统一变量,在SQL中使用 |
任务间上下游参数传递 | 所有离线调度任务 | {{var}} | 下游任务接收上游传入的分区 |
Dataleap的时间参数可分为基本参数,以及基于基本参数的时间偏移计算。
Dataleap当前所有的时间参数(包含偏移),均以「业务日期」作为时间基准,例如,当前某个任务的业务日期 = 2026-02-05,那么${date}的取值为20260205。
对任意一种Dataleap的离线调度任务来说,时间基准与其调度周期存在固定偏移的关系,如下表:
调度周期 | 业务日期 | 举例 |
|---|---|---|
天、周、月 | 业务日期 = 任务的定时时间 - 1天 | 某任务定时每天00:00执行,在2月6日 00:00时,其业务日期为2026-02-05。 |
小时 | 业务日期 = 任务的定时时间向下取整小时 - 1小时 | 某任务设置为定时每天00:12开始执行,间隔4小时执行一次,那么其定时时间向下取整小时 = 00:00、04:00…… 。其定时时间与业务日期的关系举例: |
分钟 | 业务日期 = 任务的定时时间向下取整5分钟 - 5分钟 | 某任务设置为,00:07开始,间隔每10分钟执行一次,那么其定时时间向下取整5分钟 = 00:05、00:15…… 。其定时时间与业务日期的关系举例: |
准实时 | 准实时频率任务业务时间=定时时间 | |
⚠️注意
变量 | 含义 | 时间单位 | 格式 | 示例 |
|---|---|---|---|---|
${DATE} | 获取业务时间日期 | 天 | yyyy-MM-dd | 天任务:2019/01/02 8点执行,${DATE} =2019-01-01 |
${date} | 获取业务时间日期 | 天 | yyyyMMdd | 天任务:2019/01/02 8点执行,${date} =20190101 |
${day} | 获取业务时间日期 | 天 | dd | 天任务:2019/01/02 8点执行,${day} =01 |
${HOUR} | 获取业务时间整点 | 小时 | h(整数) | 天任务:2019/01/02 8点执行,${HOUR} =0 |
${hour} | 获取业务时间整点 | 小时 | hh | 天任务:2019/01/02 8点执行,${hour} =00 |
${MINUTE} | 获取业务时间整分钟 | 分钟 | m(整数) | 天任务:2019/01/02 08:10点执行,${MINUTE} =0 |
${minute} | 获取业务时间整分钟 | 分钟 | mm | 天任务:2019/01/02 08:10点执行,${minute} =00 |
${month} | 获取业务时间月份 | 月 | MM | 天任务:2019/01/02 8点执行,${month} =01 |
${year} | 获取业务时间年份 | 年 | yyyy | 天任务:2019/01/02 8点执行,${year} =2019 |
${timestamp} | 获取业务时间时间戳 | 秒 | XXXXXX...(整数) | 天任务:2019/01/02 8点执行,${timestamp} =1546272000 |
${week_of_year} | 获取当前时间是本年的第几周 | 周 | %02d | 天任务:2019/01/02 8点执行,${week_of_year} =01 |
${last_DATE} | 获取业务时间所处月份的最后一天 | 月 | yyyy-MM-dd | 天任务:2019/01/02 8点执行,${last_DATE} =2019-01-31 |
${last_date} | 获取业务时间所处月份的最后一天 | 月 | yyyyMMdd | 天任务:2019/01/02 8点执行,${last_date-1} =20181231 |
${last_day} | 获取业务时间所处月份的最后一天 | 月 | dd | 天任务:2019/01/02 8点执行,${last_day-1} =31 |
若上述时间格式无法满足要求,可基于内置格式进行时间格式自定义。
变量 | 含义 | 示例 |
|---|---|---|
${DTF-xxxx} | 自定义时间格式。 | 假设业务日期为 2026年02月05日 |
Dataleap支持基于时间参数的偏移计算,例如向前加减N天、加减N分钟等。时间偏移计算的用法:
1、指定偏移单位(复杂偏移):当需要对时间做多重处理时,例如先指定时间格式,再减1天,再加3个月,写法如下:${var+x+ym-zd+ph+qi}
即表示业务时间加 x 单位时间(如果 var=date,加 x 天),加 y 个月,减 z 天,加 p 小时,加 q 分钟,且最后按照 var 的输出格式输出,如:
2、不指定偏移单位(简单偏移):例如${date}日期的7天前
简单偏移,即不指定偏移的时间单位,平台将使用基本时间格式自带的时间单位,假设当前的业务时间 = 2026-02-05 16:05:05
时间偏移计算写法 | 计算结果 | 推导过程 |
|---|---|---|
${date+5} | 2026-02-10 | 在2月5日的基础上增加5个时间单位,时间单位 = 天 |
${hour-3} | 13 | 在16点的基础上减3小时,得到13点 |
${minute-3} | 02 | 在05分的基础上减3分钟,得到02分 |
${timestamp-3} | 1770307502 | 2026-02-05 16:05:05减去3秒,对应的时间戳为1770307502 |
${last_date-3} | 2025-11-30 | 2026-02-05减三个月,对应的月末为11月30日 |
这几个月末参数只能取值到月末,其会优先做日期加减,结束后计算那个日期的月末,所以其只能取到月末的参数。 例如2026-02-05的业务日期,${last_date-60d},计算过程是2月5日减60天(得到2025-12-07),再取那一日的月末为2025-12-31。
项目参数的定义可参考项目管理中的 参数信息设置,用户可以了项目参数之后,可在任务中引用项目参数。
项目参数可以与时间参数组合使用,例如定义一个项目参数 pt,此参数的赋值是 ${date}。
用户在代码中的写法如下:
select * from t where partition_name = {{pt}}
平台会首先识别pt为项目参数,替换为${date},再识别到${date}为时间变量,替换为对应的业务日期。
部分任务类型,在建立了上下游依赖之后,可接收上游任务传递过来的输出结果,可参考 输入输出参数设置。
三种参数类型(时间参数、项目参数、任务间上下游参数传递)的使用方式类似,可以在代码中直接使用,以SQL为例:
insert into {{dwd_db}}.t2 select id, name from t1 where pt = "${date}"
对于其他典型任务类型,常见可支持的参数填写方式如下:
引擎 | 任务类型 | 作用域 |
|---|---|---|
DataSail | 离线数据集成 |
|
通用 | Python、Shell |
|
EMR on ECS | HSQL |
|
Spark-Java |
| |
Spark-Python |
| |
MapReduce |
| |
HDFS-Sensor |
| |
Hive-Sensor | 无 |