数据仓库分层

1、ods层做了哪些事?

(1)ods层建模的规则:保持数据原貌,不做任何修改,和业务系统保持一致====>数据备份

(2)采用压缩 snappy,lzo      =====>节省磁盘的空间

(3)创建分区表,增加抽取日期做为分区。    =====>防止后续全表扫描(有些十几年的数据,使用分区表,从ods--->dwd层,只需要扫描一天的数据,这就是分区的意义)

2、dwd层做了哪些事?

dwd层的维度规则:定义表名,事实表、维度表。

清洗只会影响行,不影响列。

转换:会影响(要统一)字段名、字段类型、字段的数量、有些表要增加转换后的字段(年、季度、月、周)。

拉链表:要增加起始时间、结束时间(所以也会影响表结构)。

(1)数据清洗

             1)空值去除 

             2)过滤核心字段无意义的数据,比如订单中订单id为null支付表中支付id为空;

             3)重复数据,进行过滤;

(2)清洗手段

             HQLMRSparkSQLKettlePython(一般项目采用sql进行清除)

(3)清洗掉多少数据算合理

         1万条数据清洗掉1条

(4)数据脱敏

          md5(hive自带的函数);身份证号、手机号(177***0013)、银行卡号

(5)采用压缩

       lzo 、snappy ======>减少磁盘空间(100G-->10G)

(6)采用列式存储

        parquet、orc =====>增加查询速度

(7)数仓建模(这个是第一步的!!!!!,但是内容太多放在第7了)

        dwd层需构建维度模型,一般采用星型模型,呈现的状态一般为星座模型。

        维度建模一般按照以下四个步骤:

        选择业务过程→声明粒度→确认维度→确认事实

         1)选择业务过程

                 选择关心的事实表(下单、支付、点赞、收藏)

                中小型公司:选择所有的业务线

                 大型公司:3000张表(选择感兴趣的业务线)

        2)声明粒度

                一行数据表示上面含义:1次、1天、1周、一个月(尽可能选择最小粒度,不然一行代                    表 聚合一个月的数据,求这个月中某一天的数据就没办法了)

               例如订单表里面: 张三(用户) 下单   10块钱 (1.代表买了一个商品一次10块?2.还是                 代表一天以内把所有商品买了10块?3.还是一周时间内买的所有商品10块?)

              声明粒度:一般选择一次或者一天

               (不要做聚合操作就可以了)

       3)确认维度

            时间、地区、用户、商品、活动、优惠卷(都是描述性的名称,称为维度信息,一般也就               是 where或者group by筛选的字段

     对于某些维度信息退化(维度建模当中的星型模型,让事实表周围只有一级维度):

        1)对业务数据传过来的表进行维度退化和降维。(商品一级二级三级、省市县、年月                   日)

        2)商品表、spu表、品类表、商品一级分类、二级分类、三级分类===>商品表

        3)省份表、地区表=>地区表

        4)时间表、假期表===>时间表

        5)活动表、活动规则表===>活动表

    4)确认事实

          确认事实中的度量值(次数、件数、个数、金额)。

          度量值的特点是可以累加

              通过以上步骤,结合本数仓的业务事实,得出业务总线矩阵表如下表所示。业务总线矩            阵的原则,主要是根据维度表事实表之间的关系,如果两者有关联则使用√标记。

表  业务总线矩阵表

时间

用户

地区

商品

优惠券

活动

编码

度量值

订单

件数/金额

订单详情

件数/金额

支付

次数/金额

加购

件数/金额

收藏

个数

评价

个数

退款

件数/金额

优惠券领用

个数

       

         至此,数仓的维度建模已经完毕,DWS、DWT和ADS和维度建模已经没有关系了。

         DWS和DWT都是建宽表,宽表都是按照主题去建。主题相当于观察问题的角度。对应着维             度表。

3、dws层做了哪些事?

   字段怎么来?

  站在维度表的角度去看待事实,主要看的是事实表的度量值,通过与之关联的事实表,获得不同的事实表的度量值。

不懂? 没关系

思考:1、dws是根据什么建模规则来创建表的?

           宽表的目的:减少join,复用,提升select查询时的性能,

                                 同时副表的数据不能比主表多太多,会影响效率,

​​​​​​​                                 将关联表的字段,都放进来,尽量不要丢字段,不然以后要使用就麻烦。

          2、还有为啥不弄一张大宽表,到时候直接查一张表就可以了?

             原因就是每个不同的表数据不一样。

 4、dwt层做了哪些事?

DWT层主题宽表都记录什么字段?

如图所示,每个维度关联的不同事实表度量值以及首次末次时间、累积至今的度量值、累积某个时间段度量值

    根据需求倒推
    业务过程 + 统计周期 + 统计粒度 相同的 多个派生指标 ===》 放到一张汇总表
    
    比如:交易域用户商品粒度订单最近1日汇总表
        业务过程: 订单 
        统计周期: 最近1日 
        统计力度: 用户商品
      
    分类: 最近1天的汇总、最近n天的汇总、历史至今的汇总 ==》 22张汇总表

 

  5、ads层做了哪些事?

有多少个?

平时100左右 活动时200个左右  我们公司试过400、500个

分别对设备主题、会员主题、商品主题和营销主题进行指标分析,其中营销主题是用户主题和商品主题的跨主题分析案例

  出指标: 分析过哪些指标 
        ---》 手写 (指标实现的思路 :例如:谁跟谁Join、按照什么groupby聚合、怎么开窗)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别这么骄傲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值