码迷,mamicode.com
首页 > 其他好文 > 详细

数据仓库_重刷机制(抛砖引玉)

时间:2019-11-30 09:43:00      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:必须   color   park   刷机   bsp   就是   通过   说明   erro   

先抛出几个问题

1. 存储是不是基石?

2. 假如存储不挂,数据真的准确吗?

3. 存储挂了,数据还准确吗?

4. 如何校验是否正确?如何让其正确?机制是不是必须有?

注:sqoop抽数据,无error丢数据的概率很小

数据质量校验:数据量校验 count相同吗?count相同内容相同吗?

数据量相同-->数据量不同 重刷机制 补orspark 95%-->数据内容不同? 抽样 5%

 

现在重点理解一下重刷机制

背景:用count校验上下游的数据不准确

引入重刷机制:通过对上下游的两个表求full outer join来对比字段的null

上游表a

1 data1 18
2 data2 19
3 data3 20
7 data7 22

下游表b

1 data1 18
3 data3 19    
5 data5 20
6 data6 21

我们发现表 a 和表 b 对比 表 a 少了 5 和 6 多了 7 ,表 b 少了 2 和 7 多了 6,我们现在对两个表做 full outer join

aid                 bid
1     ruoze1  18     1
2     ruoze2  19     null
3     ruoze3  20     3
7     ruoze7  22     null 
null  null    null   5
null  null    null   6 

以表 a 为标准,对生成后的大表做筛选,分别查找 aidbidnull 的记录

select from t where aid=null 

select from t where bid=null 

发现 bid 为 5 和 6 的行 aidnull,说明 bid 下游数据多了,根据 bid 重新构建

delete from b where bid=5     
delete from b where bid=6

发现 aid 为 2 和 7 的 bidnull,说明 bid 下游数据少了,根据 aid 重新构建

insert into 2 ruoze2 19 
insert into 7 ruoze7 22 

经过重新构建也就是重刷后的数据是

aid           bid
1 ruoze1 18   1
2 ruoze2 19   2
3 ruoze3 20   3
7 ruoze7 22   7

深度思考:

full outer join 其实就是先 left join 和后 right join 的两个结果,为 null 的刚好是缺少的或者多的,而交集是上下游都有的数据,需要做的是 left join 为 null insert 或者 delete,还是 right join 为 nullinsert 或者 delete。

 

数据仓库_重刷机制(抛砖引玉)

标签:必须   color   park   刷机   bsp   就是   通过   说明   erro   

原文地址:https://www.cnblogs.com/Tunan-Ki/p/11961176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!