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

news/2024/12/2 22:30:02/

维度建模回顾:建模流程

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

实施

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

    - 了解整个业务实现的过程
    - 收集所有数据使用人员对于数据的需求
    - 整理所有数据来源

  step2-划分主题域:面向业务将业务划分主题域及主题

    - 用户域、店铺域
    - 商品域、交易域、
    - 客服域、信用风控域、采购分销域

step3-构建维度总线矩阵:明确每个业务主题对应的维度关系

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

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

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

step5-定义事实与维度规范

    - 命名规范、类型规范、设计规范等

step6-代码开发

    - 实现具体的代码开发

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

维度建模回顾:维度设计

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

实施

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

维度建模回顾:维度模型

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

路径

  - step1:雪花模型
  - step2:星型模型
  - step3:星座模型

实施

雪花模型

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

 星型模型

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

星座模型

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

 

    一站制造业务主题划分

目标:掌握一站制造的主题域及主题的划分
实施
来源
    - 主题域划分:业务或者部门划分
      - 业务:客户域、广告域、运营域……
      - 部门:运维域、财务域、销售域……
    - 数据需求来划分主题
      - 运营域:访问分析报表、转化分析报表、用户属性分析报表、订单分析报表
  - ==**服务域**==
    - 安装主题:安装方式、支付费用、安装类型
    - 工单主题:派工方式、工单总数、派工类型、完工总数、
    - 维修主题:支付费用、零部件费用、故障类型
    - 派单主题:派单数、派单平均值、派单响应时间
    - 费用主题:差旅费、安装费、报销人员统计
    - 回访主题:回访人员数、回访工单状态
    - 油站主题:油站总数量、油站新增数量
  - **客户域**
    - 客户主题:安装数量、维修数量、巡检数量、回访数量
  - **仓储域**
    - 保内良品核销主题:核销数量、配件金额
    - 保内不良品核销主题:核销配件数、核销配件金额
    - 送修主题:送修申请、送修物料数量、送修类型
    - 调拨主题:调拨状态、调拨数量、调拨设备类型
    - 消耗品核销:核销总数、核销设备类型
  - **服务商域**
    - 工单主题:派工方式、工单总数、工单类型、客户类型
    - 服务商油站主题:油站数量、油站新增数量
  - **运营域**
    - 运营主题:服务人员工时、维修站分析、平均工单、网点分布
  - **市场域**
    - 市场主题:工单统计、完工明细、订单统计

一站制造业务维度设计

目标:掌握一站制造业务维度设计

实施

  - ==**日期时间维度**==
    - 年维度、季度维度、月维度、周维度、日维度
    - 日环比、周环比、月环比、日同比、周同比、月同比
    - 环比:同一个周期内的比较
    - 同比:上个个周期的比较
  - ==**行政地区维度**==
    - 地区级别:国家维度、省份维度、城市维度、县区维度、乡镇维度
  - ==**服务网点维度**==
    - 网点名称、网点编号、省份、城市、县区、所属机构
  - ==**油站维度**==
    - 油站类型、油站名称、油站编号、客户编号、客户名称、省份、城市、县区、油站状态、所属公司
  - ==**组织机构维度**==
    - 人员编号、人员名称、岗位编号、岗位名称、部门编号、部门名称
  - **服务类型维度**
    - 类型编号、类型名称
  - **设备维度**
    - 设备类型、设备编号、设备名称、油枪数量、泵类型、软件类型
  - **故障类型维度**
    - 一级故障编号、一级故障名称、二级故障编号、二级故障名称
  - **物流公司维度**
    - 物流公司编号、物流公司名称
  - ……

一站制造业务主题维度矩阵

目标:了解一站制造业务主题的维度矩阵

实施

 行政地区维度设计

目标:掌握行政地区维度的需求及设计

路径

  - step1:需求
  - step2:设计

实施

需求:构建行政地区维度表,得到所有省份、城市、县区及乡镇维度信息

    - 省份维度表

      ```
      省份id    省份名称
      ```

    - 城市维度表

      ```
      省份id    省份名称    城市id    城市名称
      ```

    - 县区维度表

      ```
      省份id    省份名称    城市id    城市名称    县区id    县区名称
      ```

    - 乡镇维度表

      ```
      省份id    省份名称    城市id    城市名称    县区id    县区名称    乡镇id    乡镇名称
      11       北京市      1101     北京市      110108    海淀区    110108014  清华园街道
      ```

    - 统计不同地区维度下的网点个数、工单个数、报销金额等

  - **设计**

    - **数据来源**:one_make_dwd.ciss_base_areas

      ```
      select * from one_make_dwd.ciss_base_areas;
      ```

      - id:该地区数据id

      - parentid:该地区的父级行政区域的id

      - rank:表示行政地区的级别

        - 0:国家:country
        - 1:省份:province
        - 2:城市:city
        - 3:县/区:county
        - 4:乡镇/区域:town

      - areaname:地区名称

      - 举例

        - 清华园街道:4

         

 

        - 海淀区

    

 北京市【市级】

         

- 北京市【省级】

         

 

实现思路:以乡镇维度为例

      - 实现:下一级地区的父id = 上一级地区的id

行政地区维度构建

目标:实现行政地区维度表的构建

实施

建维度库

建维度表 

 抽取数据

 


http://www.ppmy.cn/news/7012.html

相关文章

SFP、SFP+、SFP28、QSFP+和QSFP28之间的区别以及不同场景的使用选型

SFP、SFP+、SFP28、QSFP+和QSFP28之间的区别以及不同场景的使用选型。 SFP、SFP+、SFP28、QSFP+和QSFP28这些光模块类型对专业人员来说并不陌生,这些热拔插模块都可用于连接网络交换机和其他网络设备(如服务器或收发器)进行数据传输。但你了解这些模块的具体区别吗?QSFP28…

Codeforces Round #840 (Div. 2)

A. Absolute Maximization 题目链接:Problem - A - Codeforces 样例输入: 4 3 1 0 1 4 5 5 5 5 5 1 2 3 4 5 7 20 85 100 41 76 49 36样例输入: 1 0 7 125题意:给定一个长度为n的数组a[],我们可以对这个数组中的数进…

html标签分类及其他知识

1、标签按照类型可以划分为三种类型: block:div、p、ul、li、h1… 1、独占一行2、支持所有样式3、不写宽的时候,跟父元素的宽相同4、所占区域是一个矩形 inline:span、a、em、strong、img… 1、挨在一起2、有些样式不支持&#x…

Python遥感图像处理应用篇(二十七):Python绘制遥感图像各波段热力图(相关系数矩阵)(续)

续-https://soderayer.blog.csdn.net/article/details/125757807 上一篇中使用csv文件计算的相关系数热力图,本篇我们直接使用遥感图像来计算图像波段之间的相关系数。 方法一:已有软件ENVI计算 实际上,目前已有的软件,如ENVI就可以直接计算图像波段之间的相关系数,该工…

MySQL主从搭建

MySQL主从搭建一 主从配置原理二 搭建步骤(基于两个docker容器)三 django实现读写分离3.1 配置数据库3.2 models中创建表3.3 数据库迁移3.4 指定要使用的数据库四 Pycharm远程连接服务器进行代码的运行与调试五 Pycharm远程链接docker开发5.1 操作 docke…

疫情信息管理系统(附源代码及数据库)

本系统是一个可以对各种疫情进行管理的系统,管理员可以直接对居民、住户进行统一的管理,这样就能在疫情期间大大减轻了管理者的工作量,使管理社区的渠道更加的方便。其主要功能有:登录功能,公告的发布,到访…

微服务(三)——远程调用

目录前言1. RestTemplate1. 导入依赖2. 代码3. 常用方法2. jodd-http1. 引入依赖2. 代码3. 测试3. Feign1. 引入依赖2. 使用过程3. 自定义配置4. 优化前言 微服务都是独立部署的,要实现一个业务可能需要多个服务之间的通信,所以远程调用必不可少&#x…

ReactJS入门

目录 一:前端开发的演变 二:ReactJS简介 三:搭建环境 四:React快速入门 一:前端开发的演变 到目前为止,前端的开发经历了四个阶段,目前处于第四个阶段。这四个阶段分别是: 阶段一…