日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

do-while節點邏輯原理介紹

DataWorks為您提供循環節點(do-while節點),您可根據業務需要重新編排循環節點內部業務流程,將需要循環執行的業務邏輯放入循環節點內部,并通過循環節點內部的End節點來定義循環條件,即確認不滿足何種條件的情況下退出循環。循環節點可單獨使用,也可結合賦值節點來循環遍歷賦值節點傳遞的結果集。本文為您介紹do-while節點的組成與應用邏輯。

背景信息

您可通過以下內容了解循環節點(do-while節點)的使用:

說明

相關文檔

了解循環節點(do-while節點)的使用限制與注意事項。例如,循環次數上限、如何測試與如何查看日志。

使用限制注意事項

了解循環節點(do-while節點)內部可根據業務需要自定義循環節點內部業務流程,但要求待循環業務流程開始節點需要為自帶的Start節點,業務流程結束節點需要為節點自帶的End節點。

節點組成與流程編排

了解循環節點(do-while節點)提供內置變量可獲取每次循環的相關參數,并提供取值案例加強理解。

內置變量取值案例

了解循環節點通過End節點控制是否退出循環,并提供退出循環的End節點代碼示例。

退出循環示例:End節點代碼樣例

推薦循環節點(do-while節點)典型應用場景。

應用場景1:與賦值節點聯合使用、應用場景2:與分支節點、歸并節點聯合應用

使用限制

  • 僅DataWorks標準版及以上版本支持使用do-while節點。詳情請參見DataWorks各版本詳解

  • do-while節點循環次數上限為1024次。

  • 不支持并發執行。即上次循環完成后才可進入下一次循環。

注意事項

維度

分類

說明

循環支持

循環次數上限

do-while節點最多支持循環1024次,End節點控制循環次數時,如果超過了1024次,則運行會報錯。

內部節點

流程編排

  • 自定義循環任務節點時,您可以刪除內部節點間的依賴關系,重新編排循環節點內部業務流程,但需要分別將Start節點End節點作為do-while節點內部業務流程的首末節點。

  • 在do-while節點的內部節點使用分支節點進行邏輯判斷或者結果遍歷時,需要同時使用歸并節點

  • do-while節點的內部節點End節點在代碼開發時,不支持添加注釋。

取值

提供內置變量來取上游賦值節點的指定的值。

調試運行

任務調試

DataWorks為標準模式時,不支持在DataStudio界面直接測試運行do-while節點。

如果您想測試驗證do-while節點的運行結果,您需要將包含do-while節點的任務發布提交到開發環境運維中心,在開發環境運維中心頁面運行do-while節點任務。

查看日志

在運維中心查看do-while節點的執行日志時,您需要右鍵實例,單擊查看內部節點來查看內部節點的執行日志。

上下游依賴

依賴設置

循環節點可單獨使用,也可結合賦值節點使用,在運維中心執行任務時,選擇補數據功能,并同時選中執行賦值節點與循環節點,單獨運行循環節點將無法獲取到賦值節點傳遞的值。

節點組成與流程編排

DataWorks的do-while節點是包含內部節點的一種特殊節點,您在創建完成do-while節點時,同時也自動創建完成了三個內部節點:Start節點(循環開始節點)、Shell節點(循環任務節點)、End節點(循環結束判斷節點),通過內部節點組織成內部節點流程,實現任務的循環運行。循環節點如上圖所示:

  • Start節點

    代表循環開始,不承載具體的任務代碼,循環節點內部具體待循環執行的任務節點均需要直接或間接依賴該Start節點,且不支持刪除。

  • 循環邏輯

    DataWorks默認為您創建一個Shell類型的內部任務運行節點,您也可以刪除默認的Shell節點,根據實際情況重新構建循環節點內部待循環的業務流程。

    通常循環任務的業務流程會與賦值節點、分支節點、歸并節點聯合使用,自定義循環任務節點時,可刪除內部節點間的依賴關系,重新編排循環節點內部業務流程,但需要分別將Start節點End節點作為do-while節點內部業務流程的首末節點。

  • End節點

    • End節點是do-while節點的循環判斷節點,來控制do-while節點循環次數,其本質上是一個賦值節點,輸出truefalse兩種字符串,分別代表繼續下一個循環和不再繼續循環。

    • End節點支持使用ODPS SQL、Shell和Python(Python2)三種語言進行循環判斷代碼開發,同時do-while節點為您提供了便利的內置變量,便于您進行End代碼開發。內置變量的介紹請參見內置變量取值案例,不同語言開發的樣例代碼請參見退出循環示例:End節點代碼樣例

    • 循環節點內部具體待循環執行的任務節點均需要直接或間接為該End的節點上游,且不支持刪除該節點。

內置變量

通常,do-while節點使用${dag.變量名}格式來獲取變量。DataWorks為您提供了兩個系統內置變量${dag.loopTimes}${dag.offset};同時,您也可以結合賦值節點,通過${dag.變量名}格式獲取賦值參數值。

  • 系統內置變量

    每次任務循環運行時,您可以通過一些內置的變量來獲取當前已循環次數和偏移量。

    內置變量

    含義

    取值

    ${dag.loopTimes}

    當前已循環次數

    第一次循環為1、第二次為2、第三次為3…第n次為n。

    ${dag.offset}

    偏移量

    第一次循環為0、第二次為1、第三次為2…第n次為n-1。

  • 獲取賦值節點結果

    如果您聯合使用了賦值節點,則還可以通過以下方式來獲取賦值參數值和循環變量參數。

    說明

    當do-while節點依賴賦值節點時,您可將賦值節點的本節點輸出參數設置為do-while節點的本節點輸入參數,在do-while節點中獲取賦值節點的結果集與結果集中的指定節點。格式為${dag.變量名},其中,變量名需配置為do-while節點的本節點輸入參數。本文示例定義do-while節點中的input參數(即本節點輸入參數)來接收賦值節點結果集,實際使用時,需替換為您真實的參數名稱。

    內置變量

    含義

    ${dag.input}

    上游賦值節點傳遞的數據集。

    ${dag.input[${dag.offset}]}

    循環節點內部獲取當前循環的數據行。

    ${dag.input.length}

    循環節點內部獲取數據集長度。

取值案例

不同賦值語言的賦值節點,其結果集格式存在差異。do-while節點獲取賦值節點結果集時,Shell賦值語言需使用一維數組的方式在代碼中獲取賦值節點傳遞的結果集、或結果集中的指定數據;ODPS SQL賦值語言需使用二維數組的方式在代碼中獲取賦值節點傳遞的結果集、或結果集中的指定數據。詳情請參見賦值節點輸出格式

案例1:上游賦值節點為Shell語法

  • 節點輸出

    上游賦值節點為Shell語法,最后一條輸出結果為2021-03-28,2021-03-29,2021-03-30,2021-03-31,2021-04-01

  • 變量取值

    內置變量

    第1次循環時取值

    第2次循環時取值

    ${dag.input}

    2021-03-28,2021-03-29,2021-03-30,2021-03-31,2021-04-01

    ${dag.input[${dag.offset}]}

    2021-03-28

    2021-03-29

    ${dag.input.length}

    5

    ${dag.loopTimes}

    1

    2

    ${dag.offset}

    0

    1

案例2:上游賦值節點為ODPS SQL語法

  • 節點輸出

    上游賦值節點為ODPS SQL語法,最后一條Select語句查詢出兩條數據:

    +----------------------------------------------+
    | uid            | region | age_range | zodiac |
    +----------------------------------------------+
    | 0016359810821  | 湖北省 | 30~40歲   | 巨蟹座 |
    | 0016359814159  | 未知   | 30~40歲   | 巨蟹座 |
    +----------------------------------------------+
  • 變量取值

    內置變量

    第1次循環時取值

    第2次循環時取值

    ${dag.input}

    +----------------------------------------------+
    | uid            | region | age_range | zodiac |
    +----------------------------------------------+
    | 0016359810821  | 湖北省 | 30~40歲   | 巨蟹座 |
    | 0016359814159  | 未知   | 30~40歲   | 巨蟹座 |
    +----------------------------------------------+

    ${dag.input[${dag.offset}]}

    0016359810821,湖北省,30~40歲,巨蟹座

    0016359814159,未知,30~40歲,巨蟹座

    ${dag.input.length}

    2

    說明

    二維數組的行數為數據集長度,當前賦值節點輸出的二維數組行數為2。

    ${dag.input[0][1]}

    說明

    二維數組的第一行第二列的取值。

    湖北省

    ${dag.loopTimes}

    1

    2

    ${dag.offset}

    0

    1

退出循環示例:End節點代碼樣例

End節點支持使用ODPS SQL、Shell和Python(Python2)三種語言進行循環判斷代碼開發,以下為您示例三種不同語言下,典型的代碼樣例。

使用ODPS SQL語言

SELECT  CASE 
 WHEN COUNT(1) > 0 AND ${dag.offset}<= 9 
  THEN true 
  ELSE false 
 END 
FROM  xc_dpe_e2.xc_rpt_user_info_d  where dt='20200101';

End節點示例代碼中將表行數和遷移量與固定值比較,來限制do-while節點整體的循環次數。

使用Shell語言

if [ ${dag.loopTimes} -lt 5 ];
then
     echo "True"
else
     echo "False"
fi

將循環次數${dag.loopTimes}和5進行比較,來限制do-while節點整體的循環次數。

例如:第一次循環${dag.loopTimes}的值為1、第二次為2,以此類推,第五次為5。至此end節點的輸出結果為False,do-while節點退出循環。

使用Python(Python2)語言

if ${dag.loopTimes}<${dag.input.length}:
   print True;
else
   print False;
# 如果end節點輸出True,則繼續下一個循環。
# 如果end節點輸出False,則終止循環。

代碼中把循環次數${dag.loopTimes}和賦值節點傳遞的數據集行數進行比較,來限制do-while節點整體的循環次數。

應用場景

與賦值節點聯合使用

do-while節點與賦值節點聯合使用時,典型的應用場景和注意事項如下所示:

注意事項

配置案例

配置案例

使用do-while節點進行循環任務時,內部節點的循環任務在每一次循環時,需要獲取使用上游節點(up節點)的輸出參數時,此時可以使用賦值節點(assign_node)。

  • 依賴關系

    do-while節點需要依賴上游賦值節點(assign_node)。

    說明

    如上圖所示,依賴關系是do-while節點依賴賦值節點,而非do-while的內部循環任務節點(shell節點)依賴賦值節點。

  • 上下文參數

    • 賦值節點需將輸出參數作為賦值節點(assign_node)的本節點輸出參數

    • do-while的內部循環任務節點(shell節點)需將賦值節點的輸出參數添加為本節點輸入參數

      說明

      上下文關系設置,需設置內部的循環任務節點,而非do-while節點。

賦值節點配置案例

與分支節點、歸并節點聯合應用

分支節點歸并節點聯合應用時,典型的應用場景和注意事項如下所示。典型應用

應用場景

注意事項

do-while節點內部需要進行邏輯判斷或者結果遍歷時,此時可以在do-while節點的內部節點中自定義循環任務節點,并使用分支節點(branch_node)和歸并節點(merge_node)。

在do-while節點內部,分支節點(branch_node)需要和歸并節點(merge_node)同時使用。