回覆列表
  • 1 # 使用者2282560247582

    根據資訊中心每天給你這張表的方式,會有不同的方法,實現起來可以簡單也可以複雜。

    總結起來,資訊中心的裝載這張臺賬表的方法可以是:

    增量載入。增量載入的意思是,每天資訊中心有一個自動化的 Job, 將需要更新,增加,刪除的資料,按照他們的邏輯,分別在這張臺賬表上做增刪改的操作。全量載入。全量的意思是直接將這張臺賬表做刪除或者丟棄,重新將所有資料一次性同步給這張臺賬表。

    針對第一種情況,增量載入:

    1. 增量載入會有詳細的日誌記錄,這時候省事兒的辦法是做 CDC. CDC(Change Data Capture)的實現,就是讀日誌,抓取記錄的更新,放到一張系統表裡面,可以記錄詳細的增刪改操作。我寫過一個筆記,或許有參考價值:

    SQL Server Change Data Capture

    2. 增量載入也要考慮資料量的情況,如果資料量是小批次,多批次同步過來,我們還可以考慮用Trigger的方法,只要資料量小,併發不大,Trigger可以實現獲得資料更新的功能。

    針對第二種情況,全量載入:

    Truncate Table, Drop Table都是不記日誌的操作。這樣一來我們只能對每一行,每一個列做審計了。那麼except也是一種方法。缺陷是不夠靈活,但只要列不變,寫好的except指令碼,每天自動執行,也是可以達到同樣的目的。比較兩個不同資料集的缺失情況,需要兩兩反覆對比,最後Union起來。有一個函式叫做checksum,就是將每行的資料,做雜湊運算。對比每一行的checksum值,很快能知道新增和修改了。

    不知道題主這麼做的目的是什麼。如果是為了有具體的量化數字,最好還是要考慮做 ETL 自動化。一來保證你的資料能夠每天完整(你可以先做一步裝載到快取表或者叫做預處理表的過程,確保當天資料已經完整儲存),不至於丟失某一天的資料,第二天的分析跟不上;二來資料分析的多樣性,有了更多的維度,尤其是日期,對你的量化指標更有參考價值。

  • 中秋節和大豐收的關聯?
  • 那榕樹像把大傘?