在DataWorks使用上,我們通過代碼自動解析+設定節點依賴關系配置節點依賴,通過上下遊關系正常及節點運作狀态來保障業務資料的順序産出。
設定節點依賴關系的目的在于,檢測我們sql裡面所查詢的表的資料是幾點産出的,我們通過節點的狀态成功預設上遊資料資料順利産出。
本文所說的是依賴同周期任務的情況
(如果需要依賴上遊節點上一周期請選擇依賴上一周期。
檢視上遊的資料寫入和讀取的分區是不是本節點想要的,需要在運維中心的周期執行個體看上遊節點和本節點的排程參數替換的情況以及sql裡面參數替換的情況。)
後期詳述上述場景。
自動解析原理
select 一張表會将自動解析作為本節點依賴的上遊。
insert一張表,該表會自動解析作為本節點的輸出。
https://img.alicdn.com/tfs/TB1iQ9KOVYqK1RjSZLeXXbXppXa-1903-869.png
依賴關系原理
上遊節點的本節點輸出作為下遊節點的本節點輸入。
通過自動解析原理+依賴關系原理我們帶入實際場景看報錯:
現象:依賴的上遊沒有解析到父節點id,送出報錯。
現象說明:該報錯并不是指該表不存在,隻是在說明該表不是某個節點的本節點輸出,無法通過這個表去找到産出這個表資料的節點,進而與這個節點挂上依賴。
我們通過上遊節點的本節點輸出作為下遊節點的本節點輸入,根據上面自動解析的原理可知,我在sql中查詢了xc_demo_partition這個表這個,但是自動解析的時候沒有通過這個表找到上遊節點,說明沒有一個節點将這個表xc_demo_partition作為本節點輸出。
https://img.alicdn.com/tfs/TB13TaFO9zqK1RjSZPxXXc4tVXa-1903-869.png
解決方案:
一、找到産出該表的節點任務,檢視該節點任務的本節點輸出是什麼。
如果沒有不清楚那個節點裡面有操作這個表,我們可以使用代碼搜尋功能通過關鍵字進行模糊查找。
https://img.alicdn.com/tfs/TB1KM2dO4jaK1RjSZKzXXXVwXXa-1903-869.png二、如果是本地上傳的表資料或者不需要依賴該節點可以選擇在代碼區右鍵-删除輸入。
請注意:删除輸入後請重新儲存再自動解析輸入輸出。
--@extra_input=表名 --添加輸入
--@extra_output=表名 --添加輸出
--@exclude_input=表名 --删除輸入
--@exclude_output=表名 --删除輸出
删除輸入的影響:若你本節點依賴了一張表的資料,但是這個表并沒有作為本節點的上遊 在沒有做依賴的情況下可能導緻本節點去拿上遊表資料的時候上遊表資料還沒産出,導緻本節點取數出現問題。
删除輸出的影響:本節點往某張表寫入資料,但是該節點沒有将這個表作為本節點輸出,那下遊去取該表資料并且自動解析将這個表作為上遊了,他送出會報錯(如本案例中的錯),那是因為自動解析的時候通過該表沒有找到産出該表資料的上遊節點。影響自動解析的效果。
為保證代碼血緣的準确性,請減少使用自定義依賴的次數。