數倉重刷機制

2021-10-01 05:20:44 字數 1438 閱讀 9337

先丟擲幾個問題

儲存是不是基石?

假如儲存不掛,資料真的準確嗎?

儲存掛了,資料還準確嗎?

如何校驗是否正確?如何讓其正確?機制是不是必須有?

注:sqoop抽資料,無error丟資料的概率很小

資料質量校驗:資料量校驗 count相同嗎?count相同內容相同嗎?

資料量相同–>資料量不同 重刷機制 補or刪 spark 95%–>資料內容不同? 抽樣 5%

模擬資料:

上游表a1

id name age

1.00 pxj1 21.00

2.00 pxj2 22.00

3.00 pxj3 23.00

下游表:b1

id name age

1.00 pxj1 21.00

2.00 pxj2 22.00

4.00 pxj4 24.00

資料重刷機制:用count校驗上下游的資料不準確

引入重刷機制:通過對上下游的兩個表求full outer join來對比欄位的null值

select * from a1

full join b1

on a1.id=b1.id

id name age id name age

1.00 pxj1 21.00 1.00 pxj1 21.00

2.00 pxj2 22.00 2.00 pxj2 22.00

4.00 pxj4 24.00

3.00 pxj3 23.00

已a1表為基準:

select b1.id from a1

left join b1

on a1.id=b1.id

where a1.id is null

delete from b1 where id in (

select b1.id from a1

left join b1

on a1.id=b1.id

where a1.id is null

)insert into b1 value(

select a1.id ,a1.name,a1.age from b1

right join a1

on a1.id=b1.id

where b1.id is null

)b1表資料

id name age

1.00 pxj1 21.00

2.00 pxj2 22.00

3.00 pxj3 23.00

深度思考:

full outer join 其實就是先 left join 和後 right join 的兩個結果,為 null 的剛好是缺少的或者多的,而交集是上下游都有的資料,需要做的是 left join 為 null 做 insert 或者 delete,還是 right join 為 null 做 insert 或者 delete。

數倉過程建模 數倉入門基礎 1 漫談數倉

資料倉儲,英文名稱為data warehouse,可簡寫為dw或dwh。資料倉儲,是為企業所有級別的決策制定過程,提供所有型別資料支援的戰略集合。它是單個資料儲存,出於分析性報告和決策支援目的而建立。為需要業務智慧型的企業,提供指導業務流程改進 監視時間 成本 質量以及控制。資料倉儲的特徵在於面向主...

數倉知識08 數倉設計步驟和使用

提供相關資訊進行分析和效能估計,提高行業競爭優勢 提高企業生產力。可以快速收集準確描述組織機構的資訊 有利於客戶聯絡管理,因為他跨越所有商務 所有部門和市場 可以降低成本。通過可靠的方式進行長期趨勢跟蹤,發現異常。建立數倉前需要分析商務需求,搭建商務分析框架。b.資料來源檢視 被操作的資料庫庫細通收...

數倉建模的edw 數倉結構幾層,作用

資料倉儲,英文名稱為data warehouse,可簡寫為dw或dwh。資料倉儲,是為企業所有級別的決策制定過程,提供所有型別資料支援的戰略集合。它是單個資料儲存,出於分析性報告和決策支援目的而建立。為需要業務智慧型的企業,提供指導業務流程改進 監視時間 成本 質量以及控制。資料倉儲,並不是資料的最...