维度建模详解

article/2025/9/28 10:05:46

文章目录

  • 1 维度设计
    • 1.1 代理键(太复杂,不推荐)
    • 1.2 稳定维度
    • 1.3 缓慢渐变维 => 拉链表
    • 1.4 维度表的拆分、合并
  • 2 事实表设计
    • 2.1 明细事实表(dwd)
      • 2.1.2 案例:
      • 2.1.3 存储方案
      • 2.1.4 事实拉链表示例:
    • 2.2 聚合事实表(dws)
      • 2.2.1 分类
      • 2.2.2 案例
  • 3 数据集市
  • 4 业务数据案例
    • 4.1 数据采集
    • 4.2 数仓设计
  • 5 流量数据相关场景
    • 5.1 区分流量来源
    • 5.2 页面访问轨迹
    • 5.3 跳出率 断点处
    • 5.4 设备信息用途
  • 6 数据应用

星座模型只是星型模型的维度公用,类似这种
加粗样式
实际开发中,针对某一主题可以有明确的星型模型,星座模型啥的。但是众多主题间也存在维度公用的情况,这样交织在一起形成一张大网,很难说是啥模型吧。

1 维度设计

1.1 代理键(太复杂,不推荐)

维度表主键,关联事实表
在这里插入图片描述
解决办法:自创一个自增的id,取代source+id这种判断方法
在这里插入图片描述
所以有了代理键这个东西:
在这里插入图片描述

实现方法:前一天gid的max+新增数据的行号,就是增量的gid了。
在这里插入图片描述

1.2 稳定维度

在这里插入图片描述

1.3 缓慢渐变维 => 拉链表

在这里插入图片描述
这样这个id就不唯一了,跟事实表关联的话就要再弄一个代理键才行
在这里插入图片描述
这样按部门统计有两个,按客户统计有一个就解决问题了,没有代理键的话,就乱了。
在这里插入图片描述
mysql的业务数据=>事实表的时候,就要把代理键给弄进去
在这里插入图片描述
具体操作方法:
不管全量增量,先把今天发生的事情选出来,再去关联。
第一种是给普通数据库用的,hive不能用非等值连接,就只能先join再where了
在这里插入图片描述
但是这样很麻烦,一般用的不多,有时候可以用全量快照。
在这里插入图片描述

1.4 维度表的拆分、合并

横向拆分:销售员工、技术员工等
纵向拆分:不同员工关注不同的字段
在这里插入图片描述
弄一张大宽表,没有对应的属性字段就空着,谁要啥信息就从里面弄一张子表用,
没啥特殊情况就用这个就行,空间换时间。
在这里插入图片描述
也可以弄一个基础信息表,不同的表在这个基础上加上自己想要的相关属性字段

2 事实表设计

2.1 明细事实表(dwd)

在这里插入图片描述
降维就是把外面关联的维度信息弄进事实表,统计的时候减少关联操作用的
在这里插入图片描述
有时候事实表里面没有度量,比如这个审核表
在这里插入图片描述
多个动作的事实表啥设计?
多事实表
单事实表,不断更新
在这里插入图片描述

2.1.2 案例:

在这里插入图片描述
方案一:每个动作都做表。分析起来很灵活,但是业务侧自己可能也不会做的这么细,有需求只能采集他们的日志啥的。
在这里插入图片描述
第二种就是一个订单完整流程一张表整合到一张宽表上
在这里插入图片描述
总结:第二种常用,好维护,第一种在某些特殊分析场景下可以搞定,而第二种不行。
在这里插入图片描述

2.1.3 存储方案

没状态变化的就增量存储
有变化的可以每天快照,如果嫌站空间可以只保存近一年的数据,再之前的保存每月底分区就行了。
如果变化的数据占比小,可以考虑拉链表,变化多了还是快照比较好。
在这里插入图片描述

2.1.4 事实拉链表示例:

在这里插入图片描述

旧数据结束日期改掉,新数据插进去
在这里插入图片描述在这里插入图片描述
如果是快照表,要做拉链的话:用MD5判断是否新增变化数据
在这里插入图片描述

2.2 聚合事实表(dws)

2.2.1 分类

按照是否可累加:
不可累加事实(xx率,去重客户数)就拆开存,比如xx率就分子分母一起存
在这里插入图片描述
按照统计周期:
在这里插入图片描述在这里插入图片描述

2.2.2 案例

2.1 案例的dws设计:
通用汇总层:
按照不同粒度的每日汇总,以及历史汇总
对于历史汇总数据,不用每天都去算全量数据,可以只计算当天新增数据,再与前一天的历史汇总数据关联,就能出来整个的历史汇总了。
在这里插入图片描述
周期汇总层:
日粒度的交易日报,以及周粒度的用户汇总
这个周粒度的汇总有些结果可以直接从每日汇总用户表累加得到,尽量减少计算工作量。
在这里插入图片描述

3 数据集市

基于大数据的架构下的数仓,集市概念很弱,相当于一个应用层,梳理基于各个主题的汇总数据。
不像传统行业,比如银行,集市就是从各个源系统拉明细数据,自己用啥就加工啥,有点像自己在做一个小数仓一样。

4 业务数据案例

在这里插入图片描述
1 梳理业务流程
2 梳理数据流转
认证项里面有好多:身份证号、借记卡、授权通讯公司密码可以调取通话记录 等等
在这里插入图片描述
题外话:还有可能是芝麻信用,其他收费三方接口
有的像这种并行的效率就高一些,可能几秒就有额度;想节约成本可能判定黑名单了,就不会去花钱调接口继续查了,串行的多的可能要几个小时才有额度。
在这里插入图片描述

3 数据类型、存储介质、最好有样例数据
4 需求:功能性的、非功能性的需求(性能、时效性)

4.1 数据采集

线上数据 (ER模型)
在这里插入图片描述
关注下表的数据量、每日增量、是否有唯一自增主键、createtime和updatetime这些。
sqoop导入的时候会指定 --split-by xx字段
如果主键id不均匀,就数据倾斜了,这时候可以考虑用updatetime来split

采集方案:
根据数据量、是否状态变化
在这里插入图片描述
全量采集 user_info
在这里插入图片描述
增量采集订单表,先把变化的数据弄进临时库stage,避免数据倾斜用updated_time切分map
在这里插入图片描述

4.2 数仓设计

先把公用的维度表定了
然后做事实表,根据可能的分析角度来进行信息整合,维度退化,虽然有些事实表信息冗余,但是分析简单。
像额度管理表就可以做成拉链表
dwd:
在这里插入图片描述在这里插入图片描述
dws:
如果dws表太宽了不方便,可以根据业务、常用与否、计算范围来拆个辅助模型出来。
比如这张订单表,尽可能覆盖全面,把还款情况聚合过来
在这里插入图片描述在这里插入图片描述

5 流量数据相关场景

5.1 区分流量来源

内部标签有他自己的标签id,外面进来的就看url参数
在这里插入图片描述

5.2 页面访问轨迹

区分会话方法:
=>只有uid和时间戳的就用超时时间来判断
=>有reffer可以用reffer为空来判断,也可以加上超时时间条件
=>有sessionid reffer 那就好弄了

在这里插入图片描述

5.3 跳出率 断点处

跳出前最后一次的页面
在这里插入图片描述

5.4 设备信息用途

在这里插入图片描述

6 数据应用

BI(报表),运营效果评估 算是最快最容易变现的数据应用了
但是AB客群的划分,也可以通过标签系统来搞定,这也算个应用吧。
整体的,标签系统->划分客群->点击转化分析 这个大系统。比如之前见到的golfer平台。这个对营销、运营帮助还挺大的。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/HaQlMAMf.shtml

相关文章

老司机带带我:数仓建模架构|维度建模剖析与案例演示

作者基于多年的大数据处理经验,当前管理着100PB数据仓库和2000节点的集群。持续系统化给大家分享一下关于数据仓库建设的经验总结。本系列既有数据仓库的形而上学理论体系,也有结合公司业务的实践,既有大厂如阿里巴巴,京东&#x…

维度建模入门

1 概念 维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。数据集市可以理解为是一种"小型数据仓库"。 1.1 维度表(dimension) 维度表示你要对数据进行分析时所用的一个量,比如你要分析产品销售情况, 你可以选择按类别来进行分…

数据仓库——维度建模

数据仓库——维度建模 在维度建模中,将度量称为“事实”,将环境描述为“维度” 维度表 维度表概念 维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实”,将环境描述为“维度”,维度是用于分析事实所需要…

维度建模基本流程总结

一、维度建模基本流程图 数据RD进行业务调研和数据现状调研,产出符合相关模版规范的业务知识文档和数据现状文档。数据PM也会调研相关业务产出需求设计文档,三方参与需求评审,评审通过后基建数据RD进行需求拆解,产出技术方案&…

维度建模的基本理论

维度建模 围绕三个问题来展开 1、怎么组织数据仓库中的数据? 2、怎么组织才能使得数据的使用最为方便和便捷? 3、怎么组织才能使得数据仓库具有良好的可扩展性和可维护性? 维度建模两大派系 Bill Inmon(数据仓库之父) 的企业…

Kimball 维度建模理论

一、维度建模分为两种表 事实表 存在这样一些数据,如行为记录,操作记录,订单,日志等,都可以作为事实表 特点:每条数据都有一个唯一键,数据通常来说不会更新,随着时间的增加而增加维…

维度建模示例

以库存模块和零售模块这两个模块来谈一谈维度建模的相关事项梳理库存业务中的表的构造与设计思想梳理一下缓慢变化维的处理方法与优缺这篇博客计划用周末来完成,只能简单的讨论一下建模概况,从维度建模这本书中摘录出一些重要的知识点,对于维度建模这本书的报告计划在5.1之前完…

浅谈维度建模

前言:本人作为BI方向相关的数据系统后端开发,虽然不是从事具体的数仓方面的工作,但是对维度建模过程有个大致了解,可加深对于系统现有的架构设计的理解(比如数据模型构建,指标库的作用)&#xf…

关系建模与维度建模

一、OLTP与OLAP 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-linetransaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。 OLTP是传统的关系型数据库的主要应用,主要是…

数仓维度建模实例

简介 本文将介绍维度建模理论和基于自己经验的实施步骤 数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据....只有数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能、低成本、高效率、高质量的使用。一般业务…

数据仓库-基础知识(维度建模)

一、数据仓库概述 1.1 数据仓库定义 数据仓库:Data Warehouse,是为企业所决策制定过程,提供所有支持类型的数据集合。用于分析性报告和决策支持。数仓是一个面向主题、集成的、相对稳定、反应历史变化的数据集合,随着大数据技术的…

数仓:维度建模

1.背景 数据仓库的核心是展现层和提供优质的服务。ETL 及其规范、分层等所做的一切都是为了一个更清晰易用的展现层。 2.数仓架构的原则: 1、底层业务的数据驱动为导向同时结合业务需求驱动 2、便于数据分析屏蔽底层复杂业务简单、完整、集成的将数据暴露给分析层…

数仓建模(维度建模)

目录 一、什么是建模?(为什么建模) 二、模型的好处 三、建模的方法 四、维度建模 4.1 基本概念 4.2 为啥选择维度建模(优缺点) 4.2.1 优点 4.2.2 缺点 4.3 维度建模-星型模型 4.4 维度建模-维度 4.4.1 维度之…

维度建模的三种模式

1.星型模式 星型模式是维度模型中最简单的形式,也是数据仓库以及数据集市开发中使用最广泛的形式。 星型模式由事实表和维度表组成,一个星型模式中可以有一个或多个事实表,每个事实表引用任意数量的维度表。 星型模式的物理模型像一颗星星的形…

维度建模概述

1、维度建模 维度建模以分析决策的需求出发构建模型,构建的数据模型为数据分析服务。它重点解决如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。 因此,说白了,所谓的维度建模就是一种组织数据仓库的形式、模型…

ETL自学之路-02(维度建模)

一、维度建模的基本概念 1.1维度建模的定义 维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法,数据集市可以理解为是一种小型的数据仓库。 1.2 维度表(dimension) 维度表示你…

维度建模

维度建模 维度模型简介 维度建模被广泛接受为数据分析的首选技术,因为它同时满足了两个需求: 1.向用户交付可以理解的数据 2.提供快速查询的性能 维度建模实体建模第三范式(3NF)建模适合表连接以及聚合计算的查询请求&#xff1…

数据模型建设-维度建模详解

5.2 维度建模 维度建模是一种将大量数据结构化的逻辑设计手段,包含维度和指标,它不像ER模型目的是消除冗余数据,维度建模是面向分析,最终目的是提高查询性能,所以会增加数据冗余,并且违反三范式。 维度建…

绘制彩色图的颜色直方图

计数直方图 在Opencv中已经集成了关于彩色图像直方图计算的函数,形式如下: import cv2cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])参数 images:array-like类型,要计算的图像(单张或多张)&a…

matplotlib 图像颜色直方图

参考学习 定义 cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]]) ->hist imaes:输入的图像channels:选择图像的通道mask:掩膜,是一个大小和image一样的np数组,其中把需要处理的部分指定为1,不需要处理的…