A. 什么是指标、维度、度量
维度是描述事情的角度,依赖于指标,例如:年份是时间维度,北京是地理维度,月活是业务维度。
指标是一数值或者比例,通过某种计算得到的,用来衡量业务。例如好评量、好评率、增长率。
维度是用来说明数据,即对象的描述性属性或特征。例如,宽度指的是用户群的覆盖范围大小。
1、指标
指标,用于衡量事物发展程度的单位或方法,它还有个IT上常用的名字,也就是度量。例如:人口数、GDP、收入、用户数、利润率、留存率、覆盖率等。很多公司都有自己的KPI指标体系,就是通过几个关键指标来衡量公司业务运营情况的好坏。
指标需要经过加和、平均等汇总计算方式得到,并且是需要在一定的前提条件进行汇总计算,如时间、地点、范围,也就是我们常说的统计口径与范围。
指标可以分为绝对数指标和相对数指标,绝对数指标反映的是规模大小的指标,如人口数、GDP、收入、用户数,而相对数指标主要用来反映质量好坏的指标,如利润率、留存率、覆盖率等。我们分析一个事物发展程度就可以从数量跟质量两个角度入手分析,以全面衡量事物发展程度。
刚才说过,指标用于衡量事物发展程度,那这个程度是好还是坏,这就需要通过不同维度来对比,才能知道是好还是坏。
2、维度
维度:是事物或现象的某种特征,如性别、地区、时间等都是维度。其中时间是一种常用、特殊的维度,通过时间前后的对比,就可以知道事物的发展是好了还是坏了,如用户数环比上月增长10%、同比去年同期增长20%,这就是时间上的对比,也称为纵比;
另一个比较就是横比,如不同国家人口数、GDP的比较,不同省份收入、用户数的比较、不同公司、不同部门之间的比较,这些都是同级单位之间的比较,简称横比;
维度可以分为定性维度跟定量维度,也就是根据数据类型来划分,数据类型为字符型(文本型)数据,就是定性维度,如地区、性别都是定性维度;数据类型 为数值型数据的,就为定量维度,如收入、年龄、消费等,一般我们对定量维度需要做数值分组处理,也就是数值型数据离散化,这样做的目的是为了使规律更加明 显,因为分组越细,规律就越不明显,最后细到成最原始的流水数据,那就无规律可循。
最后强调一点,只有通过事物发展的数量、质量两大方面,从横比、纵比角度进行全方位的比较,我们才能够全面的了解事物发展的好坏。
B. 浅析数据仓库的构建方法
浅析数据仓库的构建方法
随着不同的管理信息系统(MIS)在企业不同部门的大规模应用及企业对数据管理不断提出新的要求,不仅要求能实现传统的联机事务处理,而且越来越多的要求是各种应用系统能够在企业不断积累的以及从企业外部获取的丰富信息资源的基础上,把这些分散的、不一致的、凌乱的信息资源加以利用,即更多地参与数据分析和决策支持,盯宽配由此出现了一种用于数据分析处理和决策支持的数据存储和组织技术,即数据仓库技术。
1、什么是数据仓库
数据仓库是面向主题的、集成的、具有时间特征的、稳定的数据集合,用以支持经营管理中的决策制定过程。数据仓库提供用户用于决策支持的当前和历史数据,这些数据在传统的操作型数据库中很难或不能得到。
面向主题是指数据仓库中的数据是按照一定的主题域进行组织。主题是一个抽象的概念,是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。集成的是指数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
数据仓库的体系结构分数据源、数据转换、数据仓库、数据集市和用户几部分。数据源,包括企业内部的业务数据、遗留数据、其它业务系统数据及相关WEB数据等;数据转换是数据仓库构建的重要环节,主要是对各种复杂的数据源进行抽取、转换、装载及其他处理,同时要实现数据质量跟踪监控以及元数据抽取与创建等工作;数据仓库主要实现对各种数据的组织、存储及管理等;数据集市是为不同业务而单独设计的数据仓库系统,即开发者为企业内部的不同用户群定制特殊的数据仓库子系统。用户部分,即具体面向使用者的应用部分,主要是指数据仓库存取与检索为用户提供了访问数据仓库或数据集市的功能,其中分析与报告为用户使用数据仓库提供了一组工具,用于帮助用户对数据仓库或数据集市进行联机分析或数据挖掘等。
2、数据仓库构建方法
2.1 普通数据仓库构建方法。对于普通数据仓库的构建,企业在对整个系统的建设综合各种因素的基础上,将整个项目的实施分阶段、分步骤实施,可以在每一阶段建设的基础上分阶段纳入不同的业务系统,逐步建立起一个综合的、专题较为完善的、适合部门、子单位使用的完整的数据仓库系统,从而才能使投资尽快获得收益。
在数据仓库的构建过程中,利用模糊数学可实现数据仓库内数据的语义表示,丰富数据加工的手段,提高分析处理的能力。数据仓库的构建,一般采取先构建数据集市,最后将各个数据集市整合在一起形成数据仓库的渐进模式;通过概念层、逻辑层、物理层建模,确定相关主题域的数据集市并对其进行联机分析处理。构建数据仓库模型一般采用以下几种:
2.1.1 星型模型:凯指星型模型是最常用的数据仓库设计结构的实现模式。使数据仓库形成了一个集成系统,为用户提供分析服务对象。该模型的核心是事实表,围绕事实表的是维度表。通过事实表将各种不同的维度表连接起来,各个维度表都连接到中央事实表。[page] 2.1.2 星系模型(也称雪花模型):雪花模型对星型模型的维度表进一步标准化,对星型模型中的维度表进行了规范化处理。同时也是对星型模型的扩展,每一个维巧升度都可以向外连接到多个详细类别表。在实际应用中,用户的需求多种多样,数据来源可能为多个事实表,故可采用多个事实表共存,之间通过公用的维表相关联的星系模型,也称为事实星座。
2.1.3 原子级数据模型和汇总级数据模型并存:坚持原子级数据模型和汇总级数据模型并存,而且要尽可能地细化原子级数据。
2.1.4 设立代理键:代理键是维表中一些没有业务含义的字段,只是一个由数据仓库加载程序时建立的数字。
2.2 空间数据仓库构建方法。随着GIS(地理信息系统)在各行业的广泛应用,最初面向事务处理为主的空间数据库信息系统已不能满足需要,信息系统开始从管理转向决策处理,空间数据仓库就是为满足这种新的需求而提出的空间信息集成系统。尤其是地理信息决策支持系统中,空间数据仓库系统显得尤为重要。
空间数据仓库具有普通数据仓库的普遍特征,但其本身有一些特殊性。并且空间数据仓也并不是空间数据库的简单集合。与空间数据库比,空间数据仓除支持数据库外,还支持数据文件、文本文件、应用程序等众多数据源;另外空间数据仓库中的数据有时间数据、空间数据、属性数据及异构数据等多种数据;其次空间数据仓库中还包括了数据处理规则、算法等;再次空间数据仓库的数据是对原始数据进行加工、处理、集成等转换,是对数据的增值和统一;空间数据库还引入了时间纵的概念,它是以时间为基准来管理数据,可以截取不同时间尺度上的信息,从瞬态到区段时间直到全体,空间数据仓库是依赖于时间维的数据结构,它可以根据不同的需要划分不同的时间粒度等级,以便进行各种复杂的趋势分析。当然,不言而喻,它还包含了空间维的方位数据。正因为空间数据仓库与普通数据仓库的不同,并且它以空间数据仓库完全不是相同的概念,一般空间数据仓库以如下体系结构分为四大功能模块,分别是源数据、数据变换工具、空间数据仓库、客户端分析工具。源数据它不仅指那些常见的空间数据库,还包括文件、网页、知识库、遗留系统等各种数据源。数据变换工具与具有普通数据仓库数据变换相同的提取转换功能,但它还包括了特有的空间变换等。空间数据仓库以立体、多维的方式来组织和显示数据。但最基本的空间维和时间维是其反映客观世界动态变化的基础,空间数据仓库技术最关键要点也就是时间维和空间维数据组织方式。目前空间数据仓库已成为国、内外GIS(地理信息系统)研究的热点并取得了较大进展。要把空间信息融合进企业现有的数据仓库中,在原有系统不作较大改动的前提下,一般采用三种模式构建企业空间数据仓库:(1)把空间信息作为多维模型中的空间维引入;(2)把空间信息作为研究主题引入;(3)在维和度量中都包含空间信息。因此,计算并存储所有空间度量是不现实的。一般使用空间索引树(如R-tree)在最细空间粒度上构建分组层次,作为空间维的分层,每个空间维需要建立一棵空间索引树。
3、结束语
总之,数据仓库构建是数据仓库技术的关键,数据仓库技术是一项基于数据管理和利用的综合性技术和解决方案,尤其是现在空间数据仓库在GIS 中的广泛应用,它成为数据库市场的新一轮增长点,同时也成为下一代信息系统的重要组成部分。
C. 数据仓库度量值
成为STRING之后怎么SUM?为什么非要存为STRING呢 难道数据相当大?
D. 如何深入浅出理解数据仓库建模
作者 | 傅一平
来源 | 与数据同行
今天跟着我来学学数据仓库的基础知识,希望你结合案例可以把它吃透。
一、数据仓库建模的意义如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。
数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。Linux的创始人Torvalds有一态旁段关于“什么才是优秀程序员”的话:“烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系”,最能够说明数据模型的重要性。
只有数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能、低成本、高效率、高质量的使用。
性能:帮助我们快速查询所需要的数据册缺,减少数据的I/O吞吐,提高使用数据的效率,如宽表。
成本:极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低存储和计算成本。
效率:在业务或系统发生变化时,可以保持稳定或很容易扩展,提高数据稳定性和连续性。
质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。数据模型能够促进业务与技术进行有效沟通,形成对主要业务定义和术语的统一认识,具有跨部门、中性的特征,可以表达和涵盖所有的业务。
大数据系统需要数据模型方法来帮助更好地组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡!
下图是个示例,通过统一数据模型,屏蔽数据源变化对业务的影响,保证业务的稳定,表述了数据仓库模型的一种价值:
二、数据仓库分层的设计为了实现以上的目的,数据仓库一般要进行分层的设计,其能带来五大好处:
清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
数据血缘追踪:能够快速准确地定位到问题,并清楚它的危害范围。
减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
把复杂问题简单化:将复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。当数据出现问题之后,不用修复所有的数据,只需要从有问题的步骤开始修复。
屏蔽原始数据的异常:不必改一次业务就需要重新接入数据。
以下是我们的一种分层设计方法,数据缓冲区(ODS)的数据结构与源系统完全一致。基础数据模型(DWD)和融合数据模型(DWI与DWA)是大数据平台重点建设的数据模型。应用层模型由各应用按需自行建设,其中基础数据模型一般采用ER模型,融合数据模型采用维度建模思路。
三、两种经典的数据仓库建模方法前面的分层设计中你会发现有两种设计方法,关系建模和维度建模,下面分别简单介绍其特点和适用场景。
1、维度建模
(1)定义
维度模型是数据仓库领域另一位大师Ralph Kimball 所倡导的。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能,更直接面向业务。
典型的代表是我们比较熟知的星形模型:
维度退化
星型模型由一个事实表和一组维表组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表。
这也是我们在使用hive时,经常会看到一些大宽表的原因,大宽表一般都是事实表,包含了维度关联的主键和一些度量信息,而维度表则是事实表里面维度的具体信息,使用时候一般州闭辩通过join来组合数据,相对来说对OLAP的分析比较方便。
(2)建模方法
通常需要选择某个业务过程,然后围绕该过程建立模型,其一般采用自底向上的方法,从明确关键业务过程开始,再到明确粒度,再到明确维度,最后明确事实,非常简单易懂。
以下是阿里的OneData的建模工作流,可以参考。
(3)优缺点
优点:技术要求不高,快速上手,敏捷迭代,快速交付;更快速完成分析需求,较好的大规模复杂查询的响应性能
缺点:维度表的冗余会较多,视野狭窄
2、关系建模
(1)定义
是数据仓库之父Inmon推崇的、从全企业的高度设计一个3NF模型的方法,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系抽象。
它更多是面向数据的整合和一致性治理,正如Inmon所希望达到的“single version of the truth”。
当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。
雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。
雪花模型更加符合数据库范式,减少数据冗余,但是在分析数据的时候,操作比较复杂,需要join的表比较多所以其性能并不一定比星型模型高。
(2)建模方法
关系建模常常需要全局考虑,要对上游业务系统的进行信息调研,以做到对其业务和数据的基本了解,要做到主题划分,让模型有清晰合理的实体关系体系,以下是方法的示意:
以下是中国移动的概念模型的一种示例,如果没有自顶向下的视野,基本是总结不出来的:
(3)优缺点
优点:规范性较好,冗余小,数据集成和数据一致性方面得到重视,比如运营商可以参考国际电信运营业务流程规范(ETOM),有所谓的最佳实践。
缺点:需要全面了解企业业务、数据和关系;实施周期非常长,成本昂贵;对建模人员的能力要求也非常高,容易烂尾。
3、建模方法比较
一般来讲,维度模型简单直观,适合业务模式快速变化的行业,关系模型实现复杂,适合业务模式比较成熟的行业,阿里原来用关系建模,现在基本都是维度建模的方式了。
运营商以前都是关系建模,现在其实边界越来越模糊,很多大数据业务变化很快,采用维度建模也比较方便,不需要顶层设计。
四、企业建模的三点经验维度建模就不说了,只要能理解业务过程和其中涉及的相关数据、维度就可以,但自顶向下的关系建模难度很大,以下是关系建模的三个建设要点。
1、业务的理解:找到企业内最理解业务和源系统的人,梳理出现状,比如运营商就要深刻理解三域(O/B/M),概念建模的挑战就很大,现在做到B域的概念建模已经很不容易。
2、数据及关系的理解:各个域的系统建设的时候没有统一文档和规范,要梳理出逻辑模型不容易,比如运营商的事件主题下的逻辑模型就非常复杂。
3、标准化的推进:数据仓库建模的任何实体都需要标准化命名,否则未来的管理成本巨大,也是后续数据有效治理的基础,以下是我们的一个命名规范示例:
五、推荐三本书总而言之,你可以把我的文章当成一个指引,具体还是要结合企业的实际去推进,但做事的时候要不忘建模的初心:即数据如何摆布才能提高支撑应用的效率,手段上不用区分什么先进不先进,好用就成。
E. 数仓建模 - 维度 vs 关系
数据管理一直在演进,从早期的电子表格、蛛网系统到架构式数据仓库。发展至今以维度建模和关系建模为主,而随着互联网的发展,数据从GB到PB的裱花,企业业务迭代更新亦是瞬息万变,对维度模型的偏爱渐渐有统一互联网数仓建模标准的趋势。
数仓模型不分高下,都是一种观察现实的角度。维度模型以实体与实体之间发生的事务/实为切入,而关系建模则以实体与实体之间的关系来组织数据。在当前的环境下,互联网更倾向于维度建模,而传统行业则较多沿用关系建模。
个人先后经历金融、互联网数仓建设,有多个0到1的项目经历,对于数仓建设仍在持续学习中。如有错误之处,还请多指出交流。
以事实表为核心,多个维度表作为手臂形成的星型模型,是维度建模的典型实现方式。
事实表,记录业务过程中发生的可度量事件,如订单中的消费金额,喊樱雀折扣金额或是库存数量等,在实际业务中事实表占据主要的存储,如订单表;而维度表,则是对业务过程度量有关的文本环境,描述“谁、什么、哪里、何时、如何、为什么”,常用的维度表有日期、产品、用户、地址等。一般维度表会冗余信息,有超过100个列的维度表,这样的不规范化带来数据郑早组织上的简单。
关系建模,被称为“实体-关系”模型,以一种“标准化”的方式存在,强调数据之间非冗颂差余,满足3NF。在建设过程中,将数据标准化到细节级数据,如用户主题下,会有用户与姓名、用户与年龄、用户与住址等。在传统行业中,成熟的关系建模有ls-ldm模型,面向金融行业形成10大主题。
维度建模 : 从实际的需求出发进行数据建设,一般面向部门/业务形成独立的数据集市,这样的方式带来鲜明的特点,高效。但由于基于需求出发,往往导致频繁的需求迭代带来的维护成本较高,一旦业务过程发生调整,模型有可能会重来的风险。
关系建模 :面向企业进行模型建设,具有较强的抽象性。建设时以3NF的方式建设无冗余的数据,使模型具有很高的灵活性,但由于不能直接面向需求,效率上不如维度模型。另外面向企业建设,周期相比于维度建模,要长的多,但也有个好处:企业数据集成更容易。
在企业内,这两种建模方式往往同时存在,基础数据仓库的建设使用关系建模,技术的优雅换来了数据的精简,保证高度抽象、高度一致性,要求业务稳定;往上维度建模更合适一些,偏向于直接面对业务,靠数据的冗余带来了可用性,保证查询效率。两者优势互补
在大数据的环境下,数据存储和发展已发生很大变化,曾经的维度建模和关系建模在当前的场景下都有各自的不足之处。那数据仓库在大数据环境下如何发展、成熟?Inmon等就提出了data vault模型
data valult是一个面向细节的、历史追溯的并且唯一链接的规范化表集,能给支持一个或者多个业务功能区;是一种中心辐射式模型,其设计重点围绕着业务键的集成模式。data vault有三种基本的实体(结构)
从建模风格上看,它采用了一种由第三范式方法与维度建模方法混合而成的方式,以二者的独特组合来满足企业需求。
F. 01.数仓常见概念术语
前两天看了大鱼先生写了一篇数仓中指标-标签、维度-度量、自然键-代理键的文章,对于数仓中的各种概念又有新的理解和认识。写一篇做备忘。本文主要从三组概念来进行对比说明;
先来看几个单独的概念,这几个也是数仓模型构建的前提准备
举一个例子:比如某个商店贺笑中有海尔电视、海信电视、索尼电视等,这念拍御些数据共同组成了一个电视实体表,并表中不含有可度量的数据。商店某天出售5台海尔电视、10台海信电视、1台索尼电视,这些电视销售数据就组成了一个事实表。这样从时间维度仔岩就可以对该商店的销售量进行统计分析了。
举个例子:某家庭,客厅中有一个立柜空调、卧室有一个挂机空调,两种空调即为两种分类,对于空调来说也是它的属性。某个月份,该家庭用电180千瓦时,高于70%家庭用电量划分为高用电量家庭,其中180千瓦时就是指标,高用电量用户,为该家庭打上的标签。
参考 大鱼的数据人生 、 五分钟学大数据
G. 请天才指教什么是度量数据
统计学:指用一定的工具或一定的标准测量所得的数据
H. 数据仓库建模概念
总线矩阵是一个二维表格,每一行对应一个 业务线 ,每一列对应一个 维度 ,每一个交叉点对应了业务和维度的联系
我们在业务分析时使用雪花模型,最终存储到数据仓库中的是星型模型。
事实表由度量值和维度值组成,度好樱笑量值反应了该业务过程涉及的数字指标,维度值反应了该业务过程的维度信息。
原子粒度,聚集事实表。
一定要颂扒从原子粒度开始设计。
存储外键关联维度
退化维度(DD, Degradation dimension)
Operational Data Store,数据运营层。从其他业务系统抽取的数据,直接存储。
Data Warehouse,数据仓库层,内部又划分为3层。
维度表
服务特定的应用,友含复用性不强,存储在响应速度较快的存储引擎。例如报表数据。
I. 大数据分析基础——维度模型
维度模型的概念出自于数据仓库领域,是数据仓库建设中的一种数据建模方法。维度模型主要由事实表和维度表这两个基本要素构成。
维度是度量的环境,用来反映业务的一类属性 , 这类属性的集合构成一个维度 , 也可以称为实体对象。 维度属于一个数据域,如地理维度(其中包括国家、地区、 省以及城市等级别的内容)、时间维度(其中包括年、季、月、周、日等级别的内容)。
维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实” , 将环境描述为“维度”,维度是用于分析事实所需要的多样环境。例如, 在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。
维度所包含的表示维度的列,称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。
事实表是维度模型的基本表,每个数据仓库都包含一个或者多个事实数据表。事实数据表可能包含业务销售数据,如销售商品所产生的数据,与软件中实际表概念一样。
事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。
事实表中一条记录所表达的业务细节程度被称为粒度。通常粒度可以通过两种方式来表述:一种是维度属性组合所表示的细节程度:一种是所表示的具体业务含义。
作为度量业务过程的事实,一般为整型或浮点型的十进制数值,有可加性、半可加性和不可加性三种类型。
相对维度来说,通常事实表要细长,行的增加速度也比维度表快的多,维度表正好相反。
事实表有三种类型 :
原子指标和度量含义相同,基于某一业务事件行为下的度量,是业务定义中不可 再拆分的指标,具有明确业务含义的名词 ,如支付金额。
事实表和维度交叉汇聚的点,度量和维度构成OLAP的主要概念,这里面对于在事实表或者一个多维立方体里面存放的数颂瞎值型的、连续的字段,就是度量。
维度表是事实表不可分割的部分。维度表是进入事实表的入口。丰富的维度属性给出了丰富的分析切割能力。维度给用户提供了使用数据仓库的接口。最好的属性是文本的和离散的。属性应该是真正的文字而不应是一些编码简写符号。应该通过用更为详细的文本属性取代编码,力求最大限度地减少编码在维度表中的使用。
维度表和事实表二者的融合也就是“维度模型”,“维度模型”一般采用“星型模式”或者“雪花模式”,“雪花模式”可以看作是“星型模式”的拓展,表现为在维度表中,某个维度属性可能还存在更细粒度的属性描述,即维度表的层级关系。
维度属性也可以存储到事实表中,裂肢这种存储到事实表中的维度列被称为“退化维度”。与其他存储在维表中的维度一样 ,退化维度也可以用来进行事实表的过滤查询、实现聚合操作等。
下表显示的是一个维度(“城市”)和两个指标(“会话数”和“每次会话浏览页数”)。
维度中的一些描述属性以层次方式或野源空一对多的方式相互关联,可以被理解为包含连续主从关系的属性层次。比如商品类目的最低级别是叶子类目,叶子类目属于二级类目,二级类目属于一级类目。在属性的层次结构中进行钻取是数据钻取的方法之一。
当属性层次被实例化为一系列维度,而不是单一的维度时,被称为雪花模式。
大多数联机事务处理系统( OLTP)的底层数据结构在设计时采用此种规范化技术,通过规范化处理将重复属性移至其自身所属的表中,删除冗余数据。
将维度的属性层次合并到单个维度中的操作称为反规范化。分析系 统的主要目的是用于数据分析和统计,如何更方便用户进行统计分析决 定了分析系统的优劣。采用雪花模式,用户在统计分析的过程中需要 大 量的关联操作,使用复杂度高,同时查询性能很差;而采用反规范化处 理,则方便、易用且性能好。
数据仓库总线架构的重要基石之一就是一致性维度。在针对不同数 据域进行迭代构建或并行构建时,存在很多需求是对于不同数据域的业 务过程或者同 一数据域的不同业务过程合并在 一起观察。比如对于日志数据域,统计了商品维度的最近一天的 PV 和 UV; 对于交易数据域, 统计了商品维度的最近一天的下单MV。现在将不同数据域的商品的 事实合并在一起进行数据探查 ,如计算转化率等,称为交叉探查。
我们先来看数据仓库的定义:数据仓库是一个面向主题的、 集成的 、 非易失的且随时间变化的数据集合,用来支持管理人员的决策。
数据由面向应用的操作型环境进人数据仓库后,需要进行数据 集成。将面向应用的数据转换为面向主题的数据仓库数据,本身就是一种集成。
具体体现在如下几个方面:
表级别的整合,有两种表现形式。
水平拆分
维度通常可以按照类别或类型进行细分。由于维度分类的不同而存在特殊的维度属性,可以通过水平拆分的方式解决此问题。
在设计过程中需要重点考虑以下三个原则。
根据数据模型设计思想,在对维度进行水平拆分时,主要考虑如下两个依据。
垂直拆分
在维度设计内容中,我们提到维度是维度建模的基础和灵魂,维度 属性的丰富程度直接决定了数据仓库的能力。在进行维度设计时,依据 维度设计的原则,尽可能丰富维度属性,同时进行反规范化处理。
某些维度属性的来源表产出时间较早,而某些维度属性的来 源 表产出时间较晚;或者某些维度属性的热度高、使用频繁,而某些维度属性的热度低、较少使用 ; 或者某些维度属性经常变化,而某些维度属性比较稳定。在“水平拆分”中提到的模型设计的三个原则同样适合解决此问题。
出于扩展性、产出时间、易用性等方面的考虑,设计 主从维度。主 维表存放稳定 、 产出时间早、热度高的属性;从维表存放变化较快、产 出时间晚、热度低的属性。
参考
《The Data Warehouse Toolkit-The Complete Guide to Dimensional Modeling》
《Google Analytics》
《大数据之路》
欢迎关注 高广超的博客 与 收藏文章 !
欢迎关注 头条号:互联网技术栈 !
J. 对于维度建模的理解
维度模型是数据仓库领域大师Ralph Kimball 所倡导,以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决宴数用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。
维度建模是 数据仓库/商业智能 项目成功的关键,为什么这么说,因为不管我们的数据量从GB到TG还是到PB,虽然数据量越来越大,但是数据展现要获得成功,就必须建立在简单性的基础之上,而维度建模就是时刻考虑如何能够提供简单性,以业务为驱动,以用户理解性和查询性能为目标。
维度建模:维度建模是专门应用于分析型数据库、数据仓库、数据市集建模的方法。数据市集可以理解为一种“小型的数据仓库” 维度建模指导我们在数据仓库中如何建表
维度建模分为两种表:事实表和维度表
事实表:必然存在的一些数据,像采集的日志文件,订单表,都可以作为事实表
特征:是一堆主键的集合,每个主键对应维度表中的一条记录,客观存在的,根据主题确定出需要使用的数据
维度局启表:维度就是所分析的数据的一个量,维度表就是以合适的角度来创建的表,分析问题的一个角度:时间、地域、终端、用户等角度
维度建模的三种模式
星形模式:以事实表为中心,所有的维度表直接连在事实表上,最简单最常用的一种
星座模型:基于多张事实表,而且共享维度信息,即事实表之间可以共享某些维度表