1、数据仓库分层

  ODS:原始数据层

      存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

      作用:在业务系统和数据仓库之间形成一个隔离层,保存的是原数据

  DWD:数据明细层

      是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合,是一个包含所有主题的通用的集合

      会在ods层基础上,做三件事:

        ①结构和粒度与ods保持一致,对ods层数据进行清洗(去空、去脏数据,去超过极限的数据)
        ②调整压缩比例

            原始数据----->ods层,会有一个文件格式,比如使用orc、parquet等,在ods层,我们希望压缩算法的压缩比特别高,用以节省空间!!

            DWD、DWS中,我们期望的文件格式是解压和压缩速度快,用以提高查询效率!!

        ③看是否能进行维度退化

            比如说大学这个维度,在mysql中分了大学、学院、专业三个维度,那么将其合并成一个维度!
            sql语句比较好实现,也就是三张表合并为一张表(第三范式变为第一范式,直接用join on)

            降维的缺点和优点:


              优点:减少shuffle,更贴近星型模型
              缺点:增加了冗余,有些维度表不能共用(比如专业很多学校都开设了,如果变为第一范式(一张表),那么不能共用)

 

             注:这里说的降维并不是全部弄成一张大表,还是需要区分事实表和维度表,是将雪花模型的多级维度进行合并!!!

             02-数仓建模分层 随笔

  DWS:数据服务层

      以dwd为基础,进行轻度汇总,一般聚集到以用户当日、设备当日、商家当日、商品当日等等的粒度。

      在这层通常会有以某一维度为线索,组成跨主题的宽表,比如一个用户的当日签到数、收藏数、评论数、抽奖数、订阅数、浏览商品数、添加购物车数、下单数、支付数等组成的多列表


      注:其实这一层就是一张行为宽表,以时间(每天、每周、每月)统计用户(商品、商家)所做的所有事!!!(是最重要的中间表)

      注:意义:如果有了这一层,那么对于DM层的什么地区签到、收藏、总评论数等指标都能灵活实现!!

      

      create external table dws_user_action(
          user_id string comment '用户id',
          order_count bigint comment '下单次数',
          order_amount decimal(16,2) comment '下单金额',
          payment_id bigint comment '支付次数',
          payment_amount decimal(16,2) comment '支付金额',
          addcart_ct bigint comment '购物车添加次数',
          favorite_ct bigint comment '收藏次数',
          comment_ct bigint comment '评论次数',
          ..................                    //还有很多列,对于sql,可以先一个指标一个指标求出来,然后根据user_id join
      )comment '用户行为宽表' 

      partitioned by('dt' string)
      stored as parquet                      //存储格式
      location '/warehouse/online_trade/dws/dws_user_action'
      tblproperties("parquet.compression"="snappy")        //压缩算法

  DM:数据集市

    也叫APP、ADS层。

    数据集市,以某个业务应用为出发点而建设的局部dw,dw只关心自己需要的数据,不会全盘考虑企业整体的数据架构和应用。每个应用有自己的DM。

    也就是说,面向实际的数据需求,以DWD或者DWS层的数据为基础,组成的各种统计报表。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄