导读: 在Kimball维度建模中,通常将度量称为“事实”,将环境描述为“维度”,维度是用于分析事实所需要的多样环境。维度和维度属性是维度的两个核心概念,如何构建维度的属性是维度设计中需要关注的。 作为维度建模的核心,我们在企业级的数据仓库中必须保证维度的唯一性。以淘宝商品维度为例,我们有且只允许有一个维度定义。 第二步:确定主维度表。 二、第二部分 在Kimball维度建模中,通常将度量称为“事实”,将环境描述为“维度”,维度是用于分析事实所需要的多样环境。 (3)同一类数据基于范式建模,拆分成同一类型数据库中多张的物理表,比如商品,有商品主表和商品扩展表,商品主表存商品基本信息;商品扩展表存储商品特殊信息,如不同产品线定制化的信息等;比如会员,有会员主表和会员扩展表 02 快照维表 维度的基本概念中介绍了自然键和代理键的定义,在Kimball的维度建模中,必须使用代理键作为每个维度表的主键,用于处理缓慢变化维度。
按照书中所讲,维度建模并不要求维度模型必须满足第3范式。数据库中强调的 3NF 主要是为了消除冗余。规范化的 3NF 将数据划分为多个不同的实体,每个实体构成一个关系表。 比如说订单数据库,开始可能是每个订单中的一行表示一条记录,到后来为了满足 3NF会变成蜘蛛网状图,也许会包含上百个规范化表。 而维度建模解决了模式过分复杂的问题。 我们换一种方式来解释什么是维度建模。学过数据库的童鞋应该都知道星型模型,星型模型在数据仓库的设计中可以为是一种典型的维度模型。 我们的图中的围绕在chat表周围的四张表都属于维度表,这些表都有一个唯一的主键,然后在表中存放了详细的数据信息。 3. 度量值 度量值是什么? 维度模型在很多开源的系统都中都有支持,比如Kylin,在建模的时候就是用的维度建模中的星型模型,当然在最新版本中也支持了雪花模型。
这篇文章的观点可谓惊人:维度数据建模已死! ,维度数据建模更是其数据分析和建模的核心理念。 感兴趣的同学可以读下《数据仓库工具箱:维度建模权威指南》和阿里巴巴的《大数据之路》,从这两本书可以了解到维度数据建模的理论和工程实践。 维度数据建模起源于数据仓库权威专家 Ralph Kimball,虽然很多人说维度数据建模有很多种优点,但是作者认为其核心的优点有三个:优化计算、按主题组织数据和优化存储。 1960 年代,磁带平均容量仅为 2.3MB,而每 GB 价格却高达 1791英镑,1970 年代流行的软盘价格更是高达 2-3 万英镑/GB。
01 为什么要维度建模? 维度建模:维度建模是从分析的角度,将业务数据重新按照事实和维度的形式进行组合,用于度量某个业务过程 朴素维度建模方法 面向原系统维度建模方法 面向业务看流程维度建模方法 05 常用名词? ,可以进行聚合和计算,例如下单金额 06 维度建模四个步骤? 作用:可以沿着维度的属性层次进行钻取 固定深度:层次固定的维度属性,例如日期维度的年、季度,月 可变深度:轻微层次不齐,但具有最大深度,最常见的是行政区划,通常3-6级别,还有一些深度不确定的层次,通过递归父子关系实现链接 ,常见的有类目,部门组织结构等,通常的做法是将其打平,转化为固定深度 (3)规范化与反规范化 (4)维度的整合与拆分 垂直整合:维度的不同信息来源多个表 水平整合:维度来源不同数据源 水平拆分:维度可以按照类型进行拆分
01 为什么要维度建模? 维度建模:维度建模是从分析的角度,将业务数据重新按照事实和维度的形式进行组合,用于度量某个业务过程 朴素维度建模方法 面向原系统维度建模方法 面向业务看流程维度建模方法 05 常用名词? ,可以进行聚合和计算,例如下单金额 06 维度建模四个步骤? 作用:可以沿着维度的属性层次进行钻取 固定深度:层次固定的维度属性,例如日期维度的年、季度,月 可变深度:轻微层次不齐,但具有最大深度,最常见的是行政区划,通常3-6级别,还有一些深度不确定的层次,通过递归父子关系实现链接 ,常见的有类目,部门组织结构等,通常的做法是将其打平,转化为固定深度 (3)规范化与反规范化 (4)维度的整合与拆分 垂直整合:维度的不同信息来源多个表 水平整合:维度来源不同数据源 水平拆分:维度可以按照类型进行拆分
前言 维度表是维度建模的灵魂所在,在维度表设计中碰到的问题(比如维度变化、维度层次、维度一致性、维度整合和拆分等)都会直接关系到维度建模的好坏,因此良好的维表设计就显得至关重要,今天就让我们就一起来探究下关于维表设计的相关概念和一些技术 因此在维度建模中,这一现象称为缓慢变化的维度,简称 缓慢变化维(slowly changing dimension, SCD)。 尽管可以向用户解释,但是用户的使用和学习成本无疑增加了, 而且数据开发人员对于维度变化的处理逻辑无疑更复杂了。 3. 那么维度建模如何处理这些层次结构呢? 在维度建模中,我们采用第一种来处理维度的层级问题,这样反规范化的处理牺牲了部分存储,但是给用户使用带来了便捷,也降低了学习使用成本。
关系建模又叫ER建模,是数据仓库之父Inmon推崇的,其从全企业的高度设计一个3NF模型的方法,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,其是站在企业角度进行面向主题的抽象,而不是针对某个具体业务流程的 维度建模以分析决策的需求为出发点构建模型,一般有较好的大规模复杂查询的响应性能,更直接面向业务,典型的代表是我们比较熟知的星形模型,以及在一些特殊场景下适用的雪花模型。 但Inmon和kimball关于关系建模和维度建模的争论其实也没什么值得探讨的,没有谁更好,在企业内,这两种建模方式往往同时存在,底层用关系建模合适一点,技术的优雅换来了数据的精简,往上维度建模更合适一些 ,靠数据的冗余带来了可用性,优势互补,都说关系建模不易,概念模型是个坎,其实维度建模也不易,维度的梳理和运营是艰巨的,否则就是烂摊子的活。 在数据建模上,很多人纠结于如何建模,用关系建模、维度建模亦或其它?
维度建模理论之维度表一、维度表概述维度表是维度建模的基础和灵魂。前文提到,事实表紧紧围绕业务过程进行设计,而维度表则围绕业务过程所处的环境进行设计。 例如业务系统中与商品相关的表有sku_info,spu_info,base_trademark,base_category3,base_category2,base_category1等,其中sku_info 维度表的粒度通常与主维表相同。3、确定维度属性确定维度属性即确定维度表字段。维度属性主要来自于业务系统中与该维度对应的主维表和相关维表。维度属性可直接从主维表或相关维表中选择,也可通过进一步加工得到。 (3)尽量沉淀出通用的维度属性有些维度属性的获取需要进行比较复杂的逻辑处理,例如需要通过多个字段拼接得到。为避免后续每次使用时的重复处理,可将这些维度属性沉淀到维度表中。 2.2.1、什么是拉链表2.2.2、为什么要做拉链表2.2.3、如何使用拉链表3、多值维度如果事实表中一条记录在某个维度表中有多条记录与之对应,称为多值维度。
发展至今以维度建模和关系建模为主,而随着互联网的发展,数据从GB到PB的裱花,企业业务迭代更新亦是瞬息万变,对维度模型的偏爱渐渐有统一互联网数仓建模标准的趋势。 维度模型以实体与实体之间发生的事务/实为切入,而关系建模则以实体与实体之间的关系来组织数据。在当前的环境下,互联网更倾向于维度建模,而传统行业则较多沿用关系建模。 模型理念 维度建模 以事实表为核心,多个维度表作为手臂形成的星型模型,是维度建模的典型实现方式。 关系建模 关系建模,被称为“实体-关系”模型,以一种“标准化”的方式存在,强调数据之间非冗余,满足3NF。 关系建模:面向企业进行模型建设,具有较强的抽象性。建设时以3NF的方式建设无冗余的数据,使模型具有很高的灵活性,但由于不能直接面向需求,效率上不如维度模型。
数仓设计的3个维度: ? 当前主流建模方法为:ER模型、维度模型。 3、确认维度 健壮的维度集合来粉饰事实表。 维度表示承担每个度量环境中所有可能的单值描述符。 4、确认事实 不同粒度的事实必须放在不同的事实表中。 事实表的设计完全依赖物理活动,不受最终报表的影响。 如果只是依靠单纯的维度建模,不能保证数据来源的一致性和准确性,而且在数据仓库的底层,不是特别适用于维度建模的方法。 ; 3、宽表的涉及不依赖具体的业务需求而是根据整体业务线相匹配; 4、尽量用维度建模代替宽表; 为什么说尽量用维度建模代替宽表,就算字段和数据会冗余,维度建模的方式也会表全量数据的宽表模式较好,原因: ; 3、新增维度完全可以按照星型模型或者雪花模型动态添加新维度; 4、维度模型可以作为宽表的基础,一旦确定全部的数据流程,可以通过维度模型再生成对应宽表进行快速的业务支撑; 指标管理 数仓模型中,最重要的模块可能就是数据治理
范式建模 范式建模是数仓之父 Inmon 所倡导的,“数据仓库”这个词就是这位大师所定义的,这种建模方式在范式理论上符合3NF,这里的3NF与OLTP中的3NF还是有点区别的:关系数据库中的3NF是针对具体的业务流程的实体对象关系抽象 ,而数据仓库的3NF是站在企业角度面向主题的抽象。 3. 使用 Kimball 模式建模 使用 Kimball 模式,需要将数据抽取为事实表和维度表,根据源表数据,我们将表拆分为:订单事实表,用户维度表,城市信息维度表,用户等级维度表。 城市ID 省 市 0310 河北 邯郸 0311 河北 石家庄 0312 河北 保定 0313 河北 张家口 ④ 用户等级维度表 用户等级ID 价值属性 1 重要价值用户 2 一般价值用户 3 一般发展用户 在限定的维度条件上,计算商品单价的总和,也就是 sum 度量值,即可得到我们想要的结果。 ---- 维度建模,就是依靠维度进行建模,但是如果维度设计的不合理,会不会带来问题呢?
2、各种数据建模方法:如维度建模、范式建模法、实体建模法。 3、辅助系统:调度系统、元数据系统、ETL系统、可视化系统这类辅助系统。 接下来具体来了解维度建模 一、什么是维度建模 维度模型是数据仓库领域大师Ralph Kimball 所倡导,他的《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。 星型模型 二、维度建模的基本要素 维度建模中有一些比较重要的概念,理解了这些概念,基本也就理解了什么是维度建模。 1. 1、数据冗余小(因为很多具体的信息都存在相应的维度表中了,比如客户信息就只有一份) 2、结构清晰(表结构一目了然) 3、便于做OLAP分析(数据分析用起来会很方便) 4、增加使用成本,比如查询时要关联多张表 3、数据冗余巨大,真的很大,在几亿的用户规模下,他的订单行为会很恐怖、粒度僵硬,什么都写死了,这张表的可复用性太低。 数据仓库的建模方法有很多种,我目前主要学习了解的维度建模方法。
目前业界使用最多的模型是Ralph Kimball 在《数据仓库工具》中提出的维度建模模型,其中典型的代表如星型模型,雪花模型。 一个典型的维度建模一般需要经过如下几个步骤: 业务调研:调研需要建模的业务形态,划分基本的业务线/数据域 层次设计:定义数仓层级,保证各层级之间职责明确,划分清晰 规范设计:定义数仓中表/字段的命名规范 )+3天(时间周期) = yidong_r3d_click 从上图可以看出,派生指标由原子指标,修饰词和时间周期组合得到,并且遵循以下几个原则: 原子指标,修饰词归属到某一个数据域下 派生指标只能完全归属到同一个原子指标下面 通过上图可以构建出一致性的维度属性和一致性的指标,例如衍生指标最近三天pc平台曝光数 = recent_3_d_pc_exposure。 唯一归属在 广告业务——效果域下,其中exposure 原子指标规定了唯一的曝光的口径(例如 广告业务中的曝光为广告海报整体露出大于1/3且持续3秒)和单位(次) 06 维度表建设 维度是分析业务过程中的环境信息
来源:菜鸟数据之旅 本文约2100字,建议阅读5分钟 维度表是一种数据建模技术,用于存储与数据中心的各个业务领域相关的维度信息。 一、 维度表是什么 维度表是一种数据建模技术,用于存储与数据中心的各个业务领域相关的维度信息。它通常用于构建数据仓库、数据集市等决策支持系统,以便进行多维数据分析和报告。 在数据仓库中,维度表是与事实表相对应的表。维度表是维度建模的基础和灵魂。 如果对其进行规范化,得到的维度模型称为雪花模型,雪花模型,比较靠近3NF,但是无法完全遵守,因为遵循3NF的性能成本太高。 维度表的粒度通常与主维表相同。 3)确定维度属性 确定维度属性即确定维度表字段。维度属性主要来自于业务系统中与该维度对应的主维表和相关维表。
事实表是维度建模的核心表和基本表。 它存储了业务过程中的各种度量和事实,而这些度量和事实正是下游数据使用人员所要关心和分析的对象。 理解概念的最佳途径无疑是实际的例子,因此下面将结合超市零售业务以及维度建模的四个环节来说明事务事实表。 (3)确定维度 小票子项的粒度确定后,销售日期、销售商品、销售收银台、销售门店等维度很容易被确定了。另一个不太容易考虑到的是维度是促销行为,但是通过和业务人员交流或者查看报表表头等也能够发现此维度。 (3)确认维度 对于超市零售库存,相应的维度为周期(天 周、月等) 商品、仓库(总仓、分仓或者门店等)。 (4)确定事实 这里的事实很容易确定,即库存量。 (3)确定维度 对于累计周期快照事实表,相关的维度包含快照周期(天、周、月 和年等)、理赔申请人、受理 、审核人、网点 电话或者实体)等。
详细介绍维度建模的基本概念以及相关理论。 为了能更真切地理解什么是维度建模,我将模拟一个大家都十分熟悉的电商场景,运用前面讲到的理论进行建模。 一、实体关系(ER)模型 数据仓库之父Immon的方法从全企业的高度设计一个3NF模型,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,它与OLTP系统中的3NF的区别,在于数据仓库中的 一、什么是维度建模 维度模型是数据仓库领域大师Ralph Kimall所倡导,他的《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。 维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。 我们换一种方式来解释什么是维度建模。 那么什么是事实表、什么又是维度表吗,下面会专门来解释。 二、维度建模的基本要素 维度建模中有一些比较重要的概念,理解了这些概念,基本也就理解了什么是维度建模。 1.
以某大型电商平台为例,通过采用云原生数据仓库,其数据处理能力提升了3倍,而成本降低了40%。 实时数据处理能力成为2025年数据仓库的重要特征。 规范化过程通过一系列范式等级来优化数据结构,其中第一范式(1NF)到第三范式(3NF)是最基础且应用最广泛的标准。 第一范式要求每个属性都是原子性的,即不可再分。 通过应用第一范式(1NF)到第三范式(3NF)甚至更高范式,它将数据分解为多个关联的表,确保每个数据元素只存储一次,从而维护数据的完整性和一致性。 以典型的销售分析查询为例,维度建模可能只需要2-3次表连接,而范式建模往往需要5次以上的复杂连接。这种差异在数据量增大时表现得更为明显。 以某头部电商平台2025年的销售分析系统为例,该平台每日产生超过3亿条交易记录,数据量达到PB级别。业务团队需要实时获取销售趋势、用户行为分析和商品表现等关键指标。
维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。 2.2 维度建模过程 第一步:选择业务过程 1、通过对业务需求以及可用数据源的综合考虑,确定对哪种业务过程开展建模工作 2、建立的第一个维度模型应该是一个最有影响的模型——它应该对最紧迫的业务问题作出回答 在考虑可能存在的事实时,可能会发现仍然需要调整早期的粒度声明和维度选择 2.3 维度建模的基本要素 维度建模中有一些比较重要的概念,理解了这些概念,基本也就理解了什么是维度建模。 1. 2.4 维度建模过程举例 下面我们将以电商为例,详细讲一下维度建模的建模方式,并举例如果使用这个模型(这点还是很重要的)。 一、业务场景 假设我们在一家电商网站工作,比如某宝、某东。 3. 参考 《Hadoop构建数据仓库实践》 漫谈数据仓库之维度建模 https://zhuanlan.zhihu.com/p/27426819
维度建模是一种将数据结构化的逻辑设计方法,也是一种广泛应用的数仓建模方式,它将客观世界划分为度量和上下文。 它与实体-关系建模有很大的区别,实体-关系建模是面向应用,遵循第三范式,以消除数据冗余为目标的设计技术。维度建模是面向分析,为了提高查询性能可以增加数据冗余,反规范化的设计技术。 这些一个一个具体的维度聚集而成的二维表就是维度表,一般维度都是有限的。 下面是一个具体的维度建模的例子,以订单为例。 图片基于上面的理解,我们就可以比较好的了解我们的维度建模了。 维度建模,就是将我们的每一个业务过程,拆分为事实表和维度表,事实表对应着具体的指标度量,维度表对应着事实的描述,状态,也就事实对应的环境。 需要数据仓库资料可以点击这个领取数据仓库(13)大数据数仓经典最值得阅读书籍推荐** 参考文章:数据仓库(01)什么是数据仓库,数仓有什么特点数据仓库(02)数仓、大数据与传统数据库的区别数据仓库(03)数仓建模之星型模型与维度建模数据仓库
数仓规划(以下表为例) 3.数据仓库分层划分 四、问题与思考 1. 维表的主键选择 2. 缓慢变化维(SCD) 3. 主数据与oneID的关系? 4. 如何进行模型调优? 五. 笔者个人理解:以数据建模理念为基础,以消除数据孤岛为目的,通过一套标准方法和工具集,解决大数据计算中诸如质量、复用、扩展、 成本等问题,能够驱动业务发展的体系。 第三方解释: 数据仓库是数据管理、存储、计算、建模的方法论,是一种过程处理方法; 它的特点为:面向主题的、集成的、稳定的、反映历史变化; 数据仓库由元数据、数据建模、实现代码、血缘关系、规范准则组成 比如说在数据建模之后,我们需要对模型进行考评,模型建立的好不好,有一个指标就是看你跨层的调用率,包括你跨层出数的比率。 个人认为拉链表与维度快照是解决缓慢变化维比较好的方法。 3. 主数据与oneID的关系? 如果是传统型公司的话,可能会有这样一个问题。