不同类型的事实表导入操作总结

一、事务性事实表

  • 事务型事实表是每天导入新增。
  • 事实表在导入时建模策略
    ①挑选感兴趣的事实业务
    ②确认粒度
    ③挑选维度
    ④选择度量
  • 事务型事实表 中的事实记录只会新增,不会修改! 从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天,每天一份用户信息。(做每日全量效率低)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值