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 節。 |
4.2.4.3 | ${workname} 在預覽資料時,會顯示實際值 |
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} 實現。
在「資料同步」節點前拖入「條件分支」節點,「條件分支」節點中判斷條件設定為:${1-Data Synchronization.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」中的「資料同步」節點。
在「資料同步」節點前拖入「條件分支」節點,「條件分支」節點中判斷條件設定如下所示: