問題現象
提交節點時,系統出現提示:輸入輸出和代碼血緣分析不匹配。
可能原因
當代碼中SELECT的表與節點的依賴的父節點配置不一致,或代碼中INSERT、CREATE的表與節點的本節點的輸出不一致時,會出現該提示。
以上圖為例,說明:
您提交的節點代碼中有SELECT名稱為table2的資料,但是table2並沒有配置為節點的依賴的父節點。
您提交的節點中有將doc_test配置為節點的本節點的輸出,但是節點代碼中並沒有INSERT或CREATE名稱為doc_test的表。
解決方案
非周期性產生資料的表可以忽略提示直接提交。
由於DataWorks的調度依賴主要保障調度節點定時更新的表資料,所以非DataWorks平台上調度更新的表,平台無法監控。當節點代碼中SELECT非周期性調度生產的表資料時,您需要刪除通過SELECT自動產生的依賴的上遊節點配置。非周期性調度生產資料的表包括:
從本地上傳到DataWorks的表
維表
非DataWorks調度產出的表
手動任務產出的表
對於周期性產生資料的表,您需要仔細檢查表資料的血緣關係與調度依賴關係是否一致。
如果您不檢查直接強制提交節點,可能會導致以下影響:
例如,代碼中SELECT一張表A,並且表A是個調度節點每天定時產出的表(即表A不是非周期性產生資料的表),如果沒有將表A添加為本節點的依賴的父節點,形成依賴關係的時,某次產生表A的節點沒有執行成功的話,下遊節點取表A的資料即取用的表A上一次運行結果的資料,可能會有問題。
例如,在代碼中CREATE或INSERT一張表B,沒有將表B作為本節點的輸出,則如果有節點SElECT表B,自動解析會自動將表B作為節點的輸入,形成依賴關係,但是系統無法通過這個依賴關係找到產出表B的節點,提交節點時會報錯:當前節點依賴的父節點輸出名不存在。詳情可參見提交節點報錯:當前節點依賴的父節點輸出名不存在。