1. 概述
1.1 版本说明
FineDataLink 版本 | 功能变动 |
---|---|
1.7 | 增加内置参数:${cyctime}、${workname.opresult}、${jobname.opresult} |
4.0.3 | 1)增加内置参数:${prepose.successInfo}、${prepose.failedInfo} 2)${workname.opresult}内置参数输出的三个值中,fail 改成了 error 3)${jobname.opresult}内置参数,新增输出值 skipped |
4.0.3.1 | 新增参数:${loopTimes} |
4.1.0 | 新增参数:${workname.jobname.opresult}、${workname} |
4.1.2 | 优化内置参数 ${cyctime} 的取值逻辑 |
4.1.8.3 | 内置参数类型由默认的文本改为Date、int等,详情参见本文1.3 节。 |
1.2 应用场景
FDL 提供了一些内置参数,这些参数无需定义即可直接调用。
1.3 功能简介
目前可以使用的内置参数如下:
内置参数 | 生效范围 | 用法 | 定义 | 参数类型 |
---|---|---|---|---|
${cyctime} | 当前任务内 | 直接引用 | ${cyctime} 为 ETL 任务在 调度配置 中设置的每次运行的时间节点 格式为yyyy-mm-dd hh:mm:ss,输出的实际值格式为:2021-09-09 20:45:50,取值精确到时分秒 这个时间是任务进入运行队列的时间,并非实际运行的时间,实际运行的时间比进入运行队列的时间要晚一些 当需要使用任务运行的时间做一些操作时,就可以引用内置的 ${cyctime} 参数,例如: 某个任务 30 天运行一次,那每次只需更新运行时间节点( ${cyctime})前 30 天的数据就可以了 | Date |
${workname.opresult} | 所有任务 | 需选择任务 | 指定任务的最近一次运行结果; 示例:${任务1.opresult} 可以输出三个值:
这个参数一般用于设置 条件分支 节点的判断条件 | String |
${jobname.opresult} | 当前任务内 | 需选择节点 | 当前任务-指定节点的最近一次运行结果;
示例:${数据同步.opresult} 可以输出三个值:
| String |
${prepose.successInfo} | 当前任务内 | 直接引用 | 步骤流中,该节点上游节点中,所有执行成功的节点名称(数组字符串) 举例:[[SQL脚本],[数据转换]] | String |
${prepose.failedInfo} | 当前任务内 | 直接引用 | 步骤流中,该节点上游节点中,所有执行失败的节点名称(数组字符串) 举例:[[SQL脚本],[数据转换]] | String |
${loopTimes} | 循环容器内 | 直接引用 | 容器内当前循环次数,初次为 1 ,后续每次循环递增加 1 | int |
${workname.jobname.opresult} | 有定时任务管理权限的任务下的节点(除当前任务,当前任务节点还是现有参数jobname.opresult) | 需选择节点+任务 | 指定任务(非当前任务)-指定节点的最近一次运行结果; 示例:${任务1.数据同步.opresult} 可以输出三个值:
| String |
${workname} | 当前任务 | 直接引用 | 当前任务名称 | String |
2. ${cyctime}——调度配置任务运行时间
2.1 取值逻辑说明
如果实例是由「定时调度」触发生成,${cyctime} 值为每次调度开始的时间。
如果实例是用户「手动触发」\「事件调度」触发生成,或 重试 时未指定业务日期,则 ${cyctime} 的时间值为 实例开始构建时间
如果实例是用户「重试实例」触发生成,若指定了业务日期,则 ${cyctime} 的时间值为用户指定的时间。
${cyctime} 的格式为yyyy-mm-dd hh:mm:ss,输出的实际值格式为:2021-09-09 20:45:50,取值精确到时分秒。
2.2 示例
示例:实例是由「定时调度」触发生成。
使用内置参数 ${cyctime} ,实现每次运行任务时,只同步运行时间点前 31 天的数据。
1)新建定时任务,拖入一个「数据同步」节点。
2)如下图设置节点的数据来源,其中 SQL 语句的作用是:从表「出库临时表」中取出 前 31 天的数据。
SQL 语句如下:
SELECT * FROM `demo1`.`出库临时表`
where 出库日期>DATE_SUB('${cyctime}',interval 31 day)
点击「数据预览」,可看到取出的是系统当前时间前 31 天的数据。如下图所示:
注:点击「数据预览」时 cyctime 的默认值为系统的当前时间;而当任务运行时 cyctime 的值为任务调度执行的时间,所以数据预览的数据与实际运行写入到数据库的数据可能不一致。
3)后续步骤中用户根据实际情况设置「数据去向」、「执行频率」即可。「数据同步」节点的使用示例可参见:数据同步-数据库表
3. ${workname.opresult}——条件分支节点判断
内置参数 ${workname.opresult} 一般用于设置 条件分支 节点的判断条件。
示例:「数据复制和分流」定时任务执行成功后再执行「任务CC」。4.0.30 及之后版本,该场景可用 事件调度 实现
1)「任务CC」中是一个「数据同步」节点,实现跨库同步。如下图所示:
2)现希望「数据复制和分流」定时任务执行成功后再执行「任务CC」,使用内置参数 ${workname.opresult} 实现。
在「数据同步」节点前拖入「条件分支」节点,「条件分支」节点中判断条件设置为:${数据复制和分流.opresult}等于success
需注意,4.1.0 及之后版本,「条件分支」节点中使用该参数时,需要选择任务。如下图所示:
4.1.0 之前版本,「条件分支」节点中使用该参数时,参数栏直接填「数据复制和分流.opresult」然后回车,最右侧文本框填「success」。
4. ${jobname.opresult}——当前任务指定节点运行结果
注:该参数使用时,格式为:${上游节点名称.opresult}
1)「消息通知」节点消息内容修改为:${数据同步.opresult}。如下图所示:
2)「数据同步」节点执行成功后,企业微信群消息返回「success」,如下图所示:
5. ${prepose.successInfo}——上游运行成功节点名称
前期准备:参考 连线执行判断 文档中的 3.1、3.2、3.3.2 节内容。
1)「消息通知」节点消息内容修改为:${prepose.successInfo}。如下图所示:
2)任务执行后,企业微信群消息如下图所示:
消息通知内容为:「消息通知」上游节点中,所有执行成功的节点名称「销量表抽取数据」。
6. ${prepose.failedInfo}——上游运行失败节点名称
1)参考本文第五章示例,将「消息通知」节点消息内容修改为:${prepose.failedInfo}。如下图所示:
2)任务执行后,企业微信群消息如下图所示:
消息通知内容为:「消息通知」上游节点中,所有执行失败的节点名称「salesum」。
7. ${loopTimes}——循环容器当前循环次数
前期准备:参考 循环容器节点 文档
该在循环容器内部生效,容器内当前循环次数,初次为 1 ,后续每次循环递增加。
1)在「循环容器」节点内拖入「消息通知」节点。设置界面如下图所示:
2)任务执行后,返回循环次数,如下图所示:
8. ${workname}-当前任务名称
取当前任务名称。
示例:「消息通知」节点中使用该参数,通知任务执行成功。
1)任务「测试内置参数」中,存在一个「数据同步」节点和一个「消息通知」节点。
2)「消息通知」节点中,设置界面如下图所示:
3)任务执行成功后,通知内容如下图所示:
9. ${workname.jobname.opresult}-非当前任务(指定任务)节点运行结果
指定任务(非当前任务)-指定节点的最近一次运行结果; 示例:${任务1.数据同步.opresult}
注:若用户希望获取当前任务中的节点,建议使用${jobname.opresult}。
示例:「01数据同步」任务中的「数据同步」节点执行成功后,再执行「任务2」中的「数据同步」节点。
1)「任务2」中是一个「数据同步」节点,实现跨库同步。如下图所示:
2)现希望「01数据同步」任务中的「数据同步」节点执行成功后,再执行「任务2」中的「数据同步」节点。
在「数据同步」节点前拖入「条件分支」节点,「条件分支」节点中判断条件设置如下所示: