zoukankan      html  css  js  c++  java
  • 数据仓库_重刷机制(抛砖引玉)

    先抛出几个问题

    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。

    学习中,博客都是自己学习用的笔记,持续更新改正。。。
  • 相关阅读:
    MT【305】丹德林双球
    MT【304】反射路径长度比
    MT【303】估计
    MT【302】利用值域宽度求范围
    MT【301】值域宽度
    MT【300】余弦的三倍角公式
    MT【299】对数型数列不等式
    MT【298】双参数非齐次
    xadmin 自定义actions
    xadmin 添加自定义权限
  • 原文地址:https://www.cnblogs.com/Tunan-Ki/p/11961176.html
Copyright © 2011-2022 走看看