全部產品
Search
文件中心

Data Management:變數

更新時間:Jun 30, 2024

本文介紹任務編排功能涉及的變數。

變數介紹

變數是任務流中動態值,分為系統變數、時間變數、非時間變數,均可以在節點中以${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

一個任務節點運行失敗。

說明

在條件分支節點中使用運行狀態可以控制任務流在指定的運行狀態下執行後續任務。