全部產品
Search
文件中心

Dataphin:變數分類與賦值

更新時間:Jan 25, 2025

本文為您介紹Dataphin中的變數分類及為本地變數賦值時,如何針對日期時間進行運算。

變數分類說明

Dataphin中存在以下類型的變數:

變數類型

描述

全域變數

在Dataphin規劃-公用定義-全域變數中事先聲明定義的變數,可以在租戶內任何節點或代碼中引用,系統初始內建的全域變數有${bizdate}

image

說明
  • 全域變數暫不支援整合同步任務(僅舊版本可用,新版本已不再支援)。

  • 全域變數設定。具體操作,請參見建立全域變數

空間名稱變數

${專案名稱}${板塊名稱}。下圖以計算任務為例。

image.png

  1. 在①處擷取專案名稱或板塊名稱。

  2. 在②處的編輯器中,您可以通過擷取的專案名稱或板塊名稱,使用${專案名稱或板塊名稱}文法進行引用。

  3. 在③的輸入參數中,系統將自動識別到參數類型。

說明

空間名稱變數不支援轉換為其他類型變數。

本地變數

無須事先聲明和定義,直接在代碼中使用${variable_name},即可定義一個名字為variable_name的本地變數。下圖以計算任務為例。

image.png

變數名建議只使用數字、字母和底線。且不要使用dp_glb_開頭,此為全域變數保留設定,長度不超過32位字元。

重要
  • 如果variable_name與某個全域變數名稱一致, 會被系統優先視作引用了全域變數, 可在參數配置中轉換類型為本地變數。

  • 如果variable_name與某個生產專案或者生產板塊的名稱一致,會被系統強制視作為空白間名稱變數。

  • 如果${variable_name}是代碼內容的一部分, 而不是變數, 可在參數類型配置中設定該變數為非變數

  • 如果${variable_name}是跨節點變數, 可在參數類型配置中設定該變數為跨節點變數

  • 若需將本地變數的參數值設定為空白值。可以單擊參數值處的設為空白值

跨節點變數

指當前變數為上遊節點透傳給本對象節點的變數參數。可用於以下情境:

  • 上遊節點A將某一個變數${var}傳遞給下遊節點B, ${var}被B的計算邏輯引用。 例如,在金融情境下,匯率通常存放在引擎的一張物理表, 有大量的節點在計算過程中都需要用到匯率.。可以通過一個Python節點讀取物理表中的匯率存放到一個變數中,將該變數傳遞給下遊的節點使用。

  • 上遊節點A將某一個變數${var}傳遞給下遊節點B,B將根據${var}的取值來決定運行策略。例如,上遊節點A擷取某遠程服務的狀態,如果遠程服務狀態為"停止",則A的下遊節點B將空跑運行;A需要將遠程服務的狀態以變數的方式傳遞給B。

重要
  • 跨節點變數暫不支援即時任務。

  • 引入跨節點參數變數後,對當前節點補資料時,建議同時補輸出跨節點參數的上遊節點和當前節點。

變數賦值說明

日期時間計算運算式

為本地變數賦值時,如果需要針對日期時間進行運算,Dataphin支援以下快捷日期計算操作符:

  • Dataphin 提供基於兩個日期時間的運算

    • 基於業務日期${bizdate}的方式:${(yyyyMMdd|yyyy/MM/dd|yyyy-MM-dd) (+|-) n}

    • 基於預計執行時間(即節點任務設定的起調時間)的方式:$[(yyyyMMddHHmmss|yyyy/MM/dd HH:mm:ss|yyyy-MM-dd HH:mm:ss) (+|-) n]

  • 日期時間各部分的標識符號

    • :yyyy。

    • :mm(日期時間只到天粒度時可使用)或MM(日期時間到分鐘粒度時必須使用大寫,以便和分鐘mm進行區分)。

    • :dd。

    • 小時:HH。

    • 分鐘:mm。

    • :ss。

  • 日期時間運算的單位 (interval) 是天

    • 1 小時使用1/24來表示,5小時為5/24。

    • 1 分鐘使用1/24/60來表示,30分鐘為30/24/60。

樣本參考

當前日期

基於業務日期(T-1)的配置

實際值

基於預計執行時間(T)的配置

實際值

2018-01-10

${yyyymmdd}

20180109

$[yyyymmdd]

20180110

2018-01-10

${yyyyMMdd}

20180109

$[yyyyMMdd]

20180110

2018-01-10

${yyyymmdd -1}

20180108

$[yyyymmdd -1]

20180109

2018-01-10

${yyyymmdd -7}

20180102

$[yyyymmdd -7]

20180103

2018-01-10

${yyyy-mm-dd}

2018-01-09

$[yyyy-mm-dd]

2018-01-10

2018-01-10

${yyyy-mm}

2018-01

$[yyyy-mm]

2018-01

2018-01-10

${yyyy-mm -1}

2017-12

$[yyyy-mm -1]

2017-12

2018-01-10

${yyyy}

2018

$[yyyy]

2018

2018-01-10

${yyyy+1}

2019

$[yyyy + 1]

2019

2018-01-10

${yyyy/MM/dd HH:mm:ss}

2018/01/09 00:00:00

$[yyyy/MM/dd HH:mm:ss]

2018/01/10 00:00:00

2018-01-10

${yyyy/MM/dd HH:mm:ss-1/24}

2018/01/08 23:00:00

$[HH:mm:ss-5/24/60]

23:55:00