本文介紹了如何使用SQL編寫基本的ETL,而不在每次ETL運行時截斷/加載?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個OLTP數據庫,我正在使用SQL(ETL)將其加載到另一個數據庫中。為此,在第二個數據庫數據庫中,我基于事實和維度創建了星型架構模型。
技術:MS-SQL
事實:銷售額
維度:客戶、客戶、代理
注意:源系統中沒有修改日期字段,可以在源系統中刪除行。
我有一個代理作業,它每15分鐘運行一次,以執行以下操作:對于每個表,我將數據從OLTP數據庫加載到相應的臨時表中(對于每個維度和事實表)。然后將分段DIM表合并到DIM表中。然后更新分段事實表以包括維度的代理鍵。然后使用Merge將分段事實數據表與事實數據表同步。這很耗費資源,因為我必須在每次ETL運行時將整個數據加載到臨時表中。因此,我正在尋找一種更好的方法–如果有人能告訴我如何做到這一點,這將對我有所幫助。
推薦答案
這很耗費資源,因為我必須在每次ETL運行時將整個數據加載到臨時表
-
在源代碼中打開Change Tracking或Change Data Capture并僅提取更改的行
或
-
使用Transactional Replication從源到臨時表或使用Read-Scale Replica或Log Shipping在DW服務器上創建可讀副本。
這篇關于如何使用SQL編寫基本的ETL,而不在每次ETL運行時截斷/加載?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,