飞道的博客

黑马Hive+Spark离线数仓工业项目--数仓维度层DWS层构建(2)

259人阅读  评论(0)

日期时间维度设计

目标:掌握日期时间维度的需求与设计

路径

  - step1:需求
  - step2:设计

实施

需求:构建日期时间维度表,得到所有年、季度、月、周、日的维度信息

 统计不同时间维度下的呼叫次数、工单数、维修数、安装数、报销金额、核销数等

设计

    - 数据来源:提前通过程序生成构建,不是从数据中抽取


    
    - 执行周期:每一年生成下一年的每一天的维度信息,**增量**同步到维度表的分区中

日期时间维度构建

目标:实现日期时间维度表的构建

实施

  建维度表

加载数据

服务网点维度设计

目标:掌握服务网点维度的需求与设计

路径

  - step1:需求
  - step2:设计

实施

需求:构建服务网点维度表,得到服务网点id、网点名称、网点所属的地理区域、服务网点状态等

 统计不同服务网点的服务人员数、工单数、核销数等

  设计

数据来源

      - ciss_base_servicestation:服务网点信息表

      - eos_dict_type:字典状态类别表,记录所有需要使用字典标记的表


    
    - eos_dict_entry:字典状态明细表,记录所有具体的状态或者类别信息

      - ciss_base_areas:行政地区信息表

        - 通过具体的id关联所有地区信息

    实现设计


    

服务网点维度构建

目标:实现服务网点维度的构建

实施

  建维度表

 加载数据


   

  • cross join:笛卡尔积,join时候不给关联条件

    • select * from A,B

    • select * from A join B

    • cross join   

 查看结果

 

油站维度设计

目标:掌握油站维度的需求与设计

路径

  - step1:需求
  - step2:设计

实施

需求:构建油站维度表,得到油站id、油站名称、油站所属的地理区域、所属公司、油站状态等

设计

数据来源

ciss_base_oilstation:油站信息表

      - eos_dict_type:字典状态类别表,记录所有需要使用字典标记的表

   - eos_dict_entry:字典状态明细表,记录所有具体的状态或者类别信息

      - ciss_base_baseinfo:客户公司信息表【公司ID、公司名称】

        - 数据有重复,做个去重

      - ciss_base_customer:客户信息表【客户id、客户省份名称、所属公司ID】

      - ciss_base_areas:行政地区信息表

        - 通过具体的id关联所有地区信息

          实现设计 

      - 所有表按照对应字段关联,获取对应的属性字段

      油站维度构建

目标:实现油站维度的构建

实施

建维度表

 抽取数据

  - 查看结果

其他维度:组织机构

目标:实现组织机构维度的设计及构建

路径

  - step1:需求
  - step2:设计
  - step3:实现

实施

  需求:实现组织机构维度表的构建,得到每个工程师对应的组织机构信息

- 统计不同服务人员的工单数、核销数等

设计

 
​    

实现

    建维度表

抽取数据 

其他维度:仓库、物流

目标:实现仓库维度、物流维度的构建

路径

  - step1:仓库维度
  - step2:物流维度

实施

  仓库维度

    - 建表

加载

物流维度

    - 建表

加载 

  附录一:常见问题

1.错误:没有开启Cross Join

Spark2.x默认不允许执行笛卡尔积,除非**显示申明cross join**或者开启属性:`spark.sql.crossJoin.enabled  true`

2.错误:Unable to move source

 

- 重启SparkSQL的ThriftServer,与MetaStore构建新的会话连接


转载:https://blog.csdn.net/JACK_SUJAVA/article/details/128465882
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场