全部产品
Search
文档中心

数据管理 DMS:变量

更新时间:Oct 09, 2023

本文介绍任务编排功能涉及的变量。

变量介绍

变量是任务流中动态的值,分为系统变量、时间变量、非时间变量,均可以在节点中以${varName}的形式动态引用。

系统变量

系统预定义的变量。例如当前任务流ID、任务流的运行时间等。

说明

除系统变量外,其他变量统称为自定义变量,自定义变量名不可重复定义,若自定义变量和系统变量重名,则自定义变量的值会覆盖系统变量的值,即自定义变量的优先级更高。

时间变量

  • 任务流变量(全局变量):任务流变量基于业务时间(运行时间的前一天)进行偏移,在当前任务流的所有节点都可使用。

    说明

    您可以给任务流中的任一节点设置任务流变量,其他节点会自动同步该设置。

  • 节点变量:定义时间变量的方式是基于系统内置的时间变量bizdate(T-1)进行偏移。节点变量只能在该节点中使用。

    例如当前日期为2023年08月22日,变量的时间格式调整为+1日,则此时间变量表示2023年08月23日。

非时间变量

  • 任务流常量(全局变量):任务流常量为固定值,在当前任务流的所有节点中都可使用。

  • 输入变量:系统自动获取。您可使用 ${var_name} 的形式在当前节点的SQL语句中引用输入变量,或者将输入变量用于条件分支节点中作为判断变量。输入变量包括:

    • 上游变量:来自上游节点的输出变量。

    • 运行状态:具体请参见运行状态

    • 系统变量:具体请参见系统变量

  • 输出变量:输出变量由当前节点定义并赋值,可被下游节点查看和引用。

    例如,在脚本代码节点中增加输出变量,该输出变量可以在下游节点的SQL语句中被引用。

  • 单实例SQL赋值输出变量:通过该节点定义SQL查询的结果集,用该结果集充当二维矩阵,在变量定义过程中任意取出一个元素,或者基于任意一个行向量i、列向量j做基于字符的拼接。

  • 脚本输出变量:如果脚本最后一行输出的是JSON结构数据,结构格式为{ key1: value1, key2: value2, … },且value是String类型,脚本任务会自动获取JSON键值对,解析出变量名为key的变量,变量key的值为value。变量的引用方式为${key}

    例如,脚本的最后一行是echo {"hello": "world"},那么脚本任务会解析出变量hello,变量hello的值为world。

配置时间变量

配置项

说明

变量名

输入自定义变量的名称。

说明

如需删除已配置的变量,您可以单击右侧的删除-变量

变量规则

配置时间变量的规则。

  • 时间格式:输入您需要的时间格式。更多信息,请参见时间格式

  • 时间运算:时间变量以业务时间bizdate(当前日期的前一天)的时间点为基准进行偏移,即自定义的时间变量是基于bizdate做加减运算的。

    例如,变量名为6_month_ago,时间格式为yyyy-MM-dd,偏移量设置为-6月。如果当前日期为2021-8-12,则变量${6_month_ago}的值为2021-02-11。

    image.png
说明

配置时间变量后,您可以在SQL语句中引用该变量,格式为${var_name},同时您可以单击SQL预览来查看时间变量的值。

时间格式

变量支持的时间格式如下:

时间变量

描述

输入示例

返回示例

公元

G表示公元。

Gyyyy

公元2021年

  • y或yyyy表示当天所在的年份。

  • yy表示年份的后两位数字。

  • Y表示当前周结束时(周日为最后一天)的年份。

yyyy

2021

M当前年份的第N个月,M的返回值为[1,12],MM的返回值为[01,12]。

MM

08

  • w表示当前年份的第N周,w的返回值为[1,52],ww返回值为[01,52]。

  • W表示当前月份的第N周,返回值为[1,5]。

ww

13

  • D表示当前年份的第N天,D的返回值为[1,365],DD的返回值为[01,365],DDD的返回值为[001,365]。

  • d表示当前月份的第N天,d的返回值为[1,31],dd的返回值为[01,31]。

D

360

周几

  • E表示周几,将返回星期一至星期日。

  • e表示周几的数字表达,返回值为[1-7](默认1表示周一)。

    说明

    您可以在变量偏移中配置+1日,实现西方日历(即1为表示周日)。

e

1

上午、下午

a表示上午或下午。返回值为:上午(00:00-11:59)、下午(12:00-23:59)。

a

上午

小时

  • H表示当天的第N个小时,0表示0点。H的返回值为[0, 23],HH的返回值为[00, 23]。

  • h表示上午、下午的第N个小时,1表示0点,h的返回值为[1, 12],hh的返回值为[01, 12]。

  • K表示上午、下午的第N个小时,0表示0点,K的返回值为[0, 11],KK的返回值为[00, 11]。

  • k表示当天的第N个小时,1表示0点,k的返回值[1, 24],kk的返回值[01, 24]。

HH

10

分钟

m表示分钟数,m的返回值[0, 59],mm的返回值[00, 59]。

m

27

  • s表示秒数。

  • S表示毫秒数。

ss

08

时区

z表示时区。

z

UTC+08:00

时间格式的组合示例:

输入示例

返回示例

yyyy-MM-dd

2021-08-12

yyyyMM01

20210801

HH:mm:ss

11:05:21

yyyyMMdd HH:mm:ss

20210812 11:05:21

系统变量

变量名

描述

示例

sys.flow.start.timestamp

运行时间的时间戳。

2021-05-24T11:20:07.562+08:00

sys.flow.start.year

运行时间的年份。

2021

sys.flow.start.month

运行时间的月份。

5

sys.flow.start.day

运行时间的日期。

24

sys.flow.start.hour

运行时间的小时。

11

sys.flow.start.minute

运行时间的分钟。

20

sys.flow.start.second

运行时间的秒。

7

sys.flow.start.milliseconds

运行时间的毫秒数。

562

sys.flow.start.timezone

运行时间的时区。

Asia/Shanghai

sys.flow.biztime

业务时间,默认为运行时间减一天。

1621740007562

sys.flow.name

任务流名称。

dwd_activity日pv

sys.node.name

任务名称。

单实例SQL-1

运行状态

变量名

描述

all_success

任务全部运行成功。

all_failed

任务全部运行失败。

one_success

一个任务节点运行成功。

one_failed

一个任务节点运行失败。

说明

在条件分支节点中使用运行状态可以控制任务流在指定的运行状态下执行后续任务。