一、事務性事實表
- 事務型事實表是每天匯入新增,
- 事實表在匯入時建模策略:
①挑選感興趣的事實業務
②確認粒度
③挑選維度
④選擇度量- 事務型事實表 中的事實記錄只會新增,不會修改! 從Mysql同步的資料,都是增量同步! 匯入到ODS層!
匯入DWD層,只需要從ODS層,取出當天匯入的新增的資料即可!
二、周期型快照事實表
- 由于周期型快照事實表的資料是會發生變化,所以導增量不合適,
- 每天做一次快照,匯入的資料是全量,區別于事務型事實表是每天匯入新增,
- 周期型快照事實表劣勢:存盤的資料量會比較大,
- 解決方案:周期型快照事實表存盤的資料比較講究時效性,時間太久了的意義不大,可以洗掉以前的資料,
- 周期型快照事實表 用來記錄一個事實在某個周期結束時的快照狀態!
- ODS層:全量同步
? 好處:方便
? 壞處:同步時間長,存在資料冗余占用(縮短資料存盤的周期)!- 如果資料量大: ODS應該同步新增和變化的資料!
? 2020-08-08 同步,同步的是2020-08-08新加入購物車的記錄和對購物車的資料進行修改的記錄!
? dwd: 截至到2020-08-08,所有用戶購物車狀態的全量快照!
? 需要先取出 2020-08-07之前,DWD層所有購物車的狀態!
? 和
? ODS層 2020-08-08新增和變化的資料 進行合并,取時間最新的!
三、累積型快照事實表
- 累積型快照事實表通常也會使用磁區表,但是磁區欄位會使用 事實生命周期中,最早的時間!
事實發生的時間,作為磁區欄位!- 總結精簡版:
①查出老資料(dwd層)中哪些磁區的資料,在今天發生了變化
②根據變化的磁區日期,查詢老資料 old
③查詢當天新的資料 new
④old full join new ? 新老交替
⑤將合并后的結果寫入磁區!
四、用戶維度表(拉鏈表)
- 用戶表中的資料每日既有可能新增,也有可能修改,但修改頻率并不高,屬于緩慢變化維度,此處采用拉鏈表存盤用戶維度資料,
- 拉鏈表,記錄每條資訊的生命周期,一旦一條記錄的生命周期結束,就重新開始一條新的記錄,并把當前日期放入生效開始日期,
如果當前資訊至今有效,在生效結束日期中填入一個極大值(如9999-99-99 ),- 拉鏈表適合于:資料會發生變化,但是大部分是不變的,(即:緩慢變化維)
比如:用戶資訊會發生變化,但是每天變化的比例不高,如果資料量有一定規模,按照每日全量的方式保存效率很低, 比如:1億用戶*365天,每天一份用戶資訊,(做每日全量效率低)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/246912.html
標籤:其他
