数仓维度层DWS层构建

01:项目回顾

  1. ODS层与DWD层的功能与区别是什么?

    • ODS:原始数据层
      • 存储格式:AVRO
      • 数据内容:基本与原始数据是一致的
    • DWD:明细数据层
      • 存储格式:Orc
      • 数据内容:基于与ODS层是一致的
  2. ODS层的需求是什么?

    • 自动化建库建表

    • 建表

      create table one_make_ods.表名
      tableproperties(schema文件)
      
      • 表名
      • 表的注释
      • 表对应的HDFS地址
      • Schema文件的地址
  3. DWD层的需求是什么?

    • 自动化建库建表

    • 建表

      create table one_make_dwd.表名(
      	字段信息
      )
      location
      
      • 表名
      • 表的注释
      • 表对应的HDFS地址
      • 字段信息
  4. 怎么获取表的Schema信息?

    • 表的注释、Schema信息
    • ODS:Oracle中获取表的注释、Schema文件从Sqoop生成的
    • DWD:Oracle中获取表的信息
      • TableMeta:表名,表的注释,列的信息:List
      • ColumnMeta:列名、列的注释、列的类型、长度、精度
  5. 如何使用Python构建Oracle和Hive的连接?

    • Oracle:cx_Oracle
      • conn(host,port,user,passwd,sid)
    • Hive/SparkSQL:pyHive
      • SparkSQL用法
      • 编程方式:python文件 | jar包
        • 流程
          • step1:SparkSession
          • step2:读取数据源
          • step3:处理
            • 注册视图
            • spark.sql(“”)
        • spark-submit
        • 优点:灵活
        • 场景:DSL
      • 提交SQL:ThriftServer
        • 场景:SQL,调度开发
        • 流程
          • JDBC | PyHive | Beeline:代码中开发
          • spark-sql -f xxxx.sql:SQL文件的运行
  6. 如果实现SQL语句的执行?

    • step1: 先构建服务端的远程连接

      • 服务端地址:主机名 + 端口
      • 用户名和密码
    • step2:基于这个连接构建一个游标

    • step3:通过游标来执行SQL语句:execute(String:SQL)

    • step4:释放资源

  7. 集中问题

    • 连接构建不上
      • 映射不对:spark.bigdata.cn:Can not Connect[46.xxx.xxxx.xx,10001]
        • 修改host文件
        • 修改config.txt:node1
      • 服务端问题:spark.bigdata.cn:Can not Connect[192.168.88.100,10001]
        • Spark的TriftServer没有启动
          • 启动完成先用dg或者beeline先测试一下
        • ThriftServer:依赖于MetaStore + YARN
          • 检查YARN:本质就是一个Spark程序:实时程序,不停止的
      • Oracle:cx_Oracle + 本地客户端:D:\instantclient_12_2
    • 安装
      • Python版本:Python 3.7.4
      • 命令sasl

02:项目目标

  1. 回顾维度建模
    • 建模流程:划分主题域和主题
    • 维度设计:构建维度矩阵
    • 维度模型:雪花模型、星型模式
  2. 项目中的建模流程和维度设计
    • 划分了哪些主题域,每个主题域有哪些主题?
    • 每个主题基于哪些维度进行分析?
  3. 维度层构建
    • 时间维度
    • 地区维度
    • 油站维度
    • 服务网点维度
    • 组织机构维度
    • 仓库维度
    • 物流维度

03:维度建模回顾:建模流程

  • 目标掌握维度建模的建模流程

  • 实施

    • step1-需求调研:业务调研和数据调研

      • 了解整个业务实现的过程
      • 收集所有数据使用人员对于数据的需求
      • 整理所有数据来源
    • step2-划分主题域:面向业务将业务划分主题域及主题

      • 用户域、店铺域
      • 商品域、交易域、
      • 客服域、信用风控域、采购分销域
    • step3-构建维度总线矩阵:明确每个业务主题对应的维度关系

      image-20210518171252351
    • step4-明确指标统计:明确所有原生指标与衍生指标

      • 原生指标:基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,如支付总金额

      • 衍生指标:基于原子指标添加了维度:近7天的支付总金额等

    • step5-定义事实与维度规范

      • 命名规范、类型规范、设计规范等
    • step6-代码开发

      • 实现具体的代码开发

      • 只要知道指标的计算方式,基于维度分组计算指标

  • 小结

    • 掌握维度建模的建模流程

04:维度建模回顾:维度设计

  • 目标掌握维度建模中维度的设计

  • 实施

    • 功能:基于组合维度来更加细化我们的指标,来更加精确的发现问题
      • 指标如果不基于组合维度进行分析得到,指标的结果是没有意义的
    • 实现:开发中维度就是指标聚合时的分组字段
    • 特点
      • 数据量小
      • 很少发生变化
    • 采集方式:全量
    • 常见维度
      • 时间维度:年、季度、月、周、天、小时
      • 地区维度:国家、省份、城市
      • 平台维度:网站、APP、小程序、H5
      • 操作系统维度:Windows、Mac OS、Android、Linux、IOS
      • ……
  • 小结

    • 掌握维度建模中维度的设计

05:维度建模回顾:维度模型

  • 目标掌握维度设计的常用模型

  • 路径

    • step1:雪花模型
    • step2:星型模型
    • step3:星座模型
  • 实施

    • 雪花模型

      • 设计:部分维度通过其他维度间接关联事实表
      • 优点:避免数据的冗余
      • 缺点:关联层次比较多,数据大的情况下,底层层层Join,查询数据性能降低

      image-20210507225008950

    • 星型模型

      • 设计:所有维度表直接关联事实表
      • 优点:每次查询时候,直接获取对应的数据结果,不用关联其他的维度子表,可以提高性能
      • 缺点:数据冗余度相比雪花模型较高

      image-20210507225442704

    • 星座模型

      • 星座模型:基于星型模型的演变,多个事实共同使用一个维度表

        image-20210507225834413

  • 小结

    • 掌握维度设计的常用模型
Logo

大数据从业者之家,一起探索大数据的无限可能!

更多推荐