簡體   English   中英

如何使用 SQL 編寫基本 ETL,而不在每次 ETL 運行時截斷/加載?

[英]How to write a basic ETL using SQL without truncate/load at each ETL run?

我有一個 OLTP 數據庫,我正在使用 SQL (ETL) 將其加載到另一個數據庫中。 為此,在第二個數據庫數據庫中,我根據事實和維度創建了星型模式 model。

技術:MS-SQL

事實:銷售

維度:客戶、客戶、代理

注意:源系統中沒有修改日期字段,源系統中可以刪除行。

我有一個每 15 分鍾運行一次的代理作業來執行以下操作: 對於每個表,我將 OLTP db 中的數據加載到各自的暫存表中(對於每個維度和事實表)。 然后將暫存的暗表合並到暗表中。 然后更新暫存事實表以包含維度的代理鍵。 然后使用合並將暫存事實表與事實表同步。 這是資源消耗,因為我必須在每次 etl 運行時將整個數據加載到臨時表中。 所以我正在尋找一種更好的方法 - 如果有人可以指出它是如何完成的,它將對我有所幫助。

這是資源消耗,因為我必須在每次 etl 運行時將整個數據加載到臨時表中

  1. 在源上打開更改跟蹤更改數據捕獲並僅提取更改的行

或者

  1. 使用從源到臨時表的事務復制或使用Read-Scale ReplicaLog Shipping在 DW 服務器上創建可讀副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM