取消
顯示的結果
而不是尋找
你的意思是:

DLT住Table-Incremental刷新

DataBricks_Use1
新的因素

你好,

在ETL框架,我們生有四層,基礎,信任&統一在生我們以JSON格式複製文件從源,利用ADF管道。下一層(即。基金會)我們是壓扁的Json文件,並將它們轉化為三角洲表(這裏隻增量數據附加)。我們正在做UPSERT信任層。

增量加載使用修改後的執行日期出現在源表。我們有一個父表和多個子表,如果有任何更新關於兒童表修改日期隻在子表的更新,但父表修改日期沒有更新。現在在統一層維度和事實表。刷新的事實表,我們寫了父母和孩子加入所需的表的查詢和添加所有的業務邏輯放在一個單獨的sql語句。在第二個事實表如果我們同樣需要導出字段,那麼我們必須添加相同的邏輯在第二個事實查詢(刷新事實表)。由於我們決定在信任層創建單獨的表將所有的派生列和事實查詢我們將直接引用列來自可信的層。我不確定這是個好主意。

請讓我知道。同時,派生表我們正在探索的DLT會自動刷新。因此DLT表完全刷新工作正常。現在我想讓它增量刷新。如。

父表“案例”

字段

Id,

Case_Name,

Modified_Date

子表“產品”

字段

Id

產品名稱

Modified_Date

目標(輸出)

Id,

產品名稱(逗號分離)

請注意,任何子表中產品名稱的變化在父表修改日期不會得到更新。

請幫助。

提前謝謝,

2回答2

匿名
不適用

@DataBricks_User9 c:

似乎你有一個明確的ETL框架不同層處理數據。關於你的問題關於創建單獨的表在信任層派生列,它可以是一個好主意,因為它允許您集中的邏輯計算派生列在一個地方,可以更容易維護和更新邏輯。它還允許您在多個查詢,避免重複相同的邏輯,可以提高查詢性能,減少錯誤的風險。

至於DLT表增量刷新,您可以使用“並入”聲明三角洲湖執行“插入”操作基於Modified_Date列。可以使用子表中的Modified_Date列來確定哪些行需要更新或插入到目標表中。下麵是一個示例SQL語句,您可以使用作為一個起點:

並入target_table使用(選擇c t。Id,concat_ws(',', collect_list(c.Product_Name)) AS Product_Names FROM child_table c JOIN parent_table p ON c.Id = p.Id WHERE c.Modified_Date > t.max_modified_date -- only process new or updated rows GROUP BY c.Id ) s ON t.Id = s.Id WHEN MATCHED THEN UPDATE SET t.Product_Name = s.Product_Names WHEN NOT MATCHED THEN INSERT (Id, Product_Name) VALUES (s.Id, s.Product_Names)

在這個例子中,我們首先加入到孩子和家長表基於Id列,然後由Id和組使用“collect_list”功能連接Product_Name值為一個以逗號分割的字符串。然後,我們使用“並入”語句更新或將行插入到目標表基於Id列。我們隻有過程行Modified_Date大於最大的子表Modified_Date目標表,這可以確保我們隻處理新的或更新的行。

我希望這可以幫助!如果你有任何其他問題,請讓我知道。

Vidula_Khanna
主持人
主持人

嗨@DataBricks_User9 c

謝謝你發布你的問題在我們的社區!我們很高興幫助你。

幫助我們為您提供最準確的信息,請您花一些時間來回顧反應和選擇一個最好的回答了你的問題嗎?

這也將有助於其他社區成員可能也有類似的問題在未來。謝謝你的參與,讓我們知道如果你需要任何進一步的援助!

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map