维度建模
- 格式:docx
- 大小:256.01 KB
- 文档页数:14
数据库设计中的维度建模与事实建模在数据库设计中,维度建模和事实建模是两种重要的建模方法。
维度建模和事实建模针对不同的数据类型和数据关系进行建模,在构建数据仓库或者业务智能系统时起到关键的作用。
本文将介绍维度建模和事实建模的概念、原则以及应用场景。
一、维度建模维度建模是指以维度为中心进行数据建模的方法。
维度是一种反映业务面向用户部门的数据元素,是衡量和分析业务过程的关键属性,如时间、地点、产品、客户等。
维度建模的核心概念是"星型模型",其中一个中心表(事实表)与多个维度表相连。
1. 基本原则(1)维度应该具有唯一性和确定性。
(2)维度应该是可测量的属性,并且应该为业务过程的关键属性。
(3)维度之间应该具有层次关系。
2. 维度建模的步骤(1)识别关键业务过程和需求。
(2)识别和定义需要使用的维度。
(3)确定维度之间的层次关系。
(4)设计事实表,并且确定与维度表之间的关系。
(5)设计维度表。
(6)定义维度表之间的关系。
3. 应用场景维度建模适用于需要对业务过程进行度量和分析的场景,如经营决策、市场分析、销售分析等。
维度建模能够提供简洁、易于理解的数据模型,使得用户能够直观地分析和进行决策。
二、事实建模事实建模是指以事实为中心进行数据建模的方法。
事实是与业务过程中的事件和活动相关的数据集合,如销售金额、订单数量等。
事实建模的核心概念是"雪花模型",其中一个中心表(事实表)与多个维度表相连,并且维度表之间可以进一步展开。
1. 基本原则(1)事实应该与业务过程息息相关。
(2)事实应该是可计量和可观察的。
(3)事实应该能够满足系统设计的需求。
2. 事实建模的步骤(1)识别需要度量和分析的业务过程。
(2)确定需要度量的事实,并进行定义和测量。
(3)确定需要使用的维度,并与事实表建立关系。
(4)确定维度之间的关系,并进行细化。
3. 应用场景事实建模适用于需要对业务过程中的事件和活动进行度量和分析的场景,如销售分析、客户行为分析、物流分析等。
维度建模过程
第⼀步:选择业务过程
1、通过对业务需求以及可⽤数据源的综合考虑,确定对哪种业务过程开展建模⼯作
2、建⽴的第⼀个维度模型应该是⼀个最有影响的模型——它应该对最紧迫的业务问题作出回答,并且对数据的抽取来说是最容易的。
第⼆步:定义粒度
注:粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别,细化程度越⾼,粒度就越⼩
1、应该先优先考虑为业务处理获取最有原⼦性的信息⽽开发维度模型。
原⼦型数据是所收集的最详细的信息,这样的数据不能再做更进⼀步的细分。
2、数据仓库⼏乎总是要求在每个维度可能得到的最低粒度上对数据进⾏表⽰的原因,并不是因为查询想看到每个低层次的⾏,⽽是因为查询希望以很精确的⽅式对细节知识进⾏抽取。
第三步:选定维度
⼀个经过仔细考虑的粒度定义确定了事实表的基本维度特性。
同时,经常也可能向事实表的基本粒度加⼊更多的维度,⽽这些附加的维度会在基本维度的每个组合值⽅⾯⾃然地取得唯⼀的值。
如果附加的维度因为导致⽣成另外的事实⾏⽽违背了这个基本的粒度定义,那么必须对粒度定义进⾏修改以适应这个维度的情景。
第四步:确定事实
确定将哪些事实放到事实表中。
粒度声明有助于稳定相关的考虑。
事实必须与粒度吻合。
在考虑可能存在的事实时,可能会发现仍然需要调整早期的粒度声明和维度选择
维度建模的优缺点:更好的应对业务变化,数据冗余多,占空间多,就是⽤空间换时间。
维度建模与关系建模的比较徐辉强北京大学智能科学系1001213776摘要:数据仓库技术的快速发展,使得从数据库中获取信息快速高效准确。
但涉及一个能够真正支持用户进行决策分析的数据仓库,并非是一件轻而易举的事情。
这需要经历一个从实现环境到抽象模型,从抽象模型到具体实现的过程。
要完成这一过程,必须依靠各种不同的数据模型。
本文主要将介绍两种数据数据仓库建模技术实体关系建模与维度建模,并比较两者之间的关系关键词:数据仓库、实体关系建模、维度建模1、引言传统的数据库技术是以单一的数据资源,即数据库为中心,进行从事务处理、批处理到决策分析等各种类型的数据处理工作。
近年来,计算机技术正向着两个不同的方向扩展:一是广度计算;二是深度计算。
特别是数据库处理可以大致地划分为两大类:操作型处理和分析型处理(或信息型处理)。
这种分离划清了数据处理的分析型环境与操作型环境之间的界限,由原来的以单一数据库为中心的数据环境发展为一种新的体系化环境,从而导致了数据仓库技术的出现和迅速发展。
数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化数据环境。
数据仓库研究和解决从数据库中获取信息的问题。
数据仓库的特征在于面向主题、集成性、稳定性和时变性。
数据仓库之父William H. Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它并不是所谓的“大型数据库”。
数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。
常用的数据建模方法在数据分析和数据科学领域,数据建模是一项核心任务,它涉及将现实世界中的业务过程和数据转化为适合分析和处理的结构化形式。
常用的数据建模方法可以根据不同的需求和问题进行选择,下面介绍几种常见的数据建模方法。
1. 关系数据模型:关系数据模型是一种常用的数据建模方法,它使用关系型数据库来组织和管理数据。
关系数据模型使用表格的形式来表示实体和实体之间的关系,并使用主键和外键来建立表之间的联系。
这种模型适用于需要进行复杂查询和关联操作的场景,如企业管理系统和金融交易系统。
2. 维度建模:维度建模是一种基于维度和事实的数据建模方法。
在维度建模中,数据被组织成事实表和维度表的形式。
事实表包含了业务过程中的度量指标,而维度表则包含了描述度量指标的上下文信息。
维度建模适用于分析型应用场景,如数据仓库和商业智能系统。
3. 实体关系模型:实体关系模型是一种用于建模现实世界中实体和实体之间关系的方法。
在实体关系模型中,实体用实体类型来表示,而关系用关系类型来表示。
实体关系模型适用于需要建立实体和实体之间关系的应用场景,如社交网络和知识图谱。
4. 层次数据模型:层次数据模型是一种用于表示具有层次结构关系的数据的方法。
在层次数据模型中,数据被组织成树形结构,其中每个节点都有一个父节点和零个或多个子节点。
层次数据模型适用于需要表示层次结构的数据,如组织结构和产品分类。
5. 对象关系模型:对象关系模型是一种将面向对象和关系型数据模型相结合的方法。
在对象关系模型中,数据被视为对象的集合,每个对象具有属性和方法,并且可以通过对象之间的关系进行连接和操作。
对象关系模型适用于需要同时处理结构化和半结构化数据的应用场景,如XML数据处理和文档管理系统。
除了上述常用的数据建模方法,根据不同的需求和问题,还可以使用其他的数据建模方法,如网络数据模型、面向文档模型等。
选择合适的数据建模方法可以帮助我们更好地理解和分析数据,从而得出有价值的洞察和决策。
范式建模和维度建模的区别不同点⾸先最⼤的不同就是企业数据仓库的模式不同,inmon是采⽤第三范式的格式,⽽kimball则采⽤了多维模型–星型模型,并且还是最低粒度的数据存储。
其次是,维度数据仓库可以被分析系统直接访问,当然这种访问⽅式毕竟在分析过程中很少使⽤。
最后就是数据集市的概念有逻辑上的区别,在kimball的架构中,数据集市有维度数据仓库的⾼亮显⽰的表的⼦集来表⽰。
有的时候,在kimball的架构中,有⼀个可变通的设计,就是在ETL的过程中加⼊ODS层,使得ODS层中能保留第三范式的⼀组表来作为ETL过程的过度。
但是这个思想,Kimball看来只是ETL的过程辅助⽽已。
最后维度建模⾃底向上,范式建模⾃顶向下相同点Kimball和Inmon是两种主流的数据仓库⽅法论,分别由 Ralph Kimbal⼤神和 Bill Inmon⼤神提出,在实际数据仓库建设中,业界往往会相互借鉴使⽤两种开发模式,这两种的相同点如下:1. 都是假设操作型系统和分析型系统是分离的;2. 数据源(操作型系统)都是众多;3. ETL整合了多种操作型系统的信息,集中到⼀个企业数据仓库。
范式建模Inmon提出的集线器的⾃上⽽下(EDW-DM)的数据仓库架构。
操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据建设原⼦数据的数据仓库EDW,EDW不是多维格式的,不⽅便上层应⽤做数据分析,所以需要通过汇总建设成多维格式的数据集市层。
优势:易于维护,⾼度集成;劣势:结构死板,部署周期较长⼀个符合第三范式的关系必须具有以下三个条件:1. 每个属性的值唯⼀,不具有多义性;2. 每个⾮主属性必须完全依赖于整个主键,⽽⾮主键的⼀部分;3. 每个⾮主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。
但是由于EDW的数据是原⼦粒度的,数据量⽐较⼤,完全规范的3范式在数据的交互的时候效率⽐较低下,所以通常会根据实际情况在事实表上做⼀些冗余,减少过多的数据交互。
数据仓库建模方法论数据仓库建模是指将数据仓库中的数据按照某种标准和规范进行组织和管理的过程。
数据仓库建模方法论包括了多种方法和技术,用于帮助用户理解和分析数据仓库中的数据,从而支持决策制定和业务分析。
一、维度建模方法维度建模方法是数据仓库建模的核心方法之一,它以维度为核心,将数据按照维度进行组织和管理,从而提供给用户灵活和高效的数据查询和分析能力。
1.1 星型模型星型模型是最常见和简单的维度建模方法,它将数据仓库中的事实表和多个维度表通过共享主键的方式进行关联。
事实表包含了衡量业务过程中的事件或指标,而维度表包含了用于描述和过滤事实记录的属性。
星型模型的结构清晰,易于理解和使用,适用于绝大部分的数据仓库场景。
1.2 雪花型模型雪花型模型是在星型模型的基础上进行扩展和优化的一种模型,它通过拆分维度表中的属性,将其拆分为多个维度表和子维度表,从而使得数据仓库更加灵活和高效。
雪花型模型适用于维度表中的属性比较复杂和层次结构比较多的情况。
1.3 天际线模型天际线模型是一种比较先进和复杂的维度建模方法,它通过将事实表和维度表按照一定的规则进行分组和划分,从而实现多个星型模型之间的关联。
天际线模型适用于数据仓库中包含多个相互关联的业务过程和多个不同的粒度的情况。
二、多维建模方法多维建模方法是在维度建模方法基础上进行进一步抽象和简化的一种方法,它通过创建多维数据立方体和维度层次结构来组织和管理数据。
2.1 数据立方体数据立方体是多维建模的核心概念,它将数据按照事实和维度进行组织和管理,从而提供给用户直观和高效的数据查询和分析能力。
数据立方体包含了多个维度和度量,用户可以通过选择和组合维度和度量进行数据分析和挖掘。
2.2 维度层次结构维度层次结构是多维建模的关键技术,它通过将维度进行分层和组织,从而实现维度之间的关联和上下级关系。
维度层次结构可以有效地减少数据的冗余和复杂性,提高数据仓库的查询和分析效率。
三、模式设计方法模式设计方法是在维度建模方法和多维建模方法的基础上进行进一步的抽象和规范的一种方法,它通过定义模式和规则来组织和管理数据仓库中的数据。
范式建模维度建模比较范式建模维度建模一、范式建模这样的设计方式是在关系型数据库中常用的,Inmon 的范式建模法的最大优点就是从关系型数据库的角度出发,结合了业务系统的数据模型,能够比较方便的实现数据仓库的建模。
1.1 范式化模型设计需满足下面三大范式:1.1.1 第一范式(1NF): 原子性字段不可再分, 否则就不是关系数据库;1.1.2 第二范式(2NF): 唯一性一个表只说明一个事物;1.1.3 第三范式(3NF): 每列都与主键有直接关系,不存在传递依赖;1.2 特点:同一份数据只存放在一个地方,因此只能从一个地方获取,没有数据冗余,保证了数据一致性;解耦(系统级与业务级),方便维护;设计思路自上而下,适合上游基础数据存储,同一份数据只存储一份,没有数据冗余,方便解耦,易维护,缺点是开发周期一般比较长,维护成本高;二、维度建模维度建模是一种将数据结构化的逻辑设计方法,它将客观世界划分为度量和上下文。
度量是常常是以数值形式出现,事实周围有上下文包围着,这种上下文被直观地分成独立的逻辑块,称之为维度。
维度建模是面向分析,为了提高查询性能可以增加数据冗余,反规范化的设计技术。
2.1 特点:模型结构简单,星型模型为主开发周期短,能够快速迭代维护成本较高维度建模是面向分析,为了提高查询性能可以增加数据冗余,反规范化的设计技术设计思路是自下而上总,开,适合统计多层次维度的汇,适合下游应用数据存储高发周期短,缺点是维护成本1.3 维度建模的常见模式1.1.4 星形模式星形模式(Star Schema) 是最常用的维度建模方式,下图展示了使用星形模式:构进行维度建模的关系结维度 C 维度 BFK FK维度D FK FK 维度 A事实表FK FK维度E ??.可以看出,星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:a. 维表只和事实表关联,维表之间没有关联;b. 每个维表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;c. 以事实表为核心,维表围绕核心呈星形分布;1.1.5 雪花模式接外连雪花模式(Snowflake Schema) 是对星形模式的扩展,每个维表可继续向:构多个子维表。
维度建模和指标体系构建01数仓建模综述数据建模是数据开发工作中的核心与基石,好的模型体系好处很多:•降低成本:优秀的模型设计能够提升数据复用性,减少计算/存储资源浪费•提升开发效率:优秀的模型设计能够降低数据使用门槛,减少工作量•提升质量:优秀的模型设计能够保证数据口径一致,降低bug率数据建模的实现方式有很多,常用的比如ER模型,Data Vault模型等。
目前业界使用最多的模型是Ralph Kimball 在《数据仓库工具》中提出的维度建模模型,其中典型的代表如星型模型,雪花模型。
一个典型的维度建模一般需要经过如下几个步骤:1.业务调研:调研需要建模的业务形态,划分基本的业务线/数据域2.层次设计:定义数仓层级,保证各层级之间职责明确,划分清晰3.规范设计:定义数仓中表/字段的命名规范,建立统一的指标体系4.事实表设计:根据单一/复合业务过程确定事实表主题,确定最小粒度5.维度表设计:根据业务确定实体,补充实体属性字段优秀的层次设计可以保证数仓表数量在可控范围内增长,同时保证数据产出流逻辑清晰,便于后期维护和扩展。
良好的规范设计规定了统一的命名规则,保证各个业务过程的实体/指标的完备和唯一性。
02设计原则按照《大数据之路——阿里巴巴大数据实战》,维度建模应该符合以下几个规范1.高内聚,低耦合:从业务流程和数据访问特性两个角度考虑,针对业务粒度相近,业务流程相近的数据应该放在同一个表中(例如广告数仓中通常会把广告的点击/曝光/转化多个业务过程数据放在同一个宽表中),针对经常要在同一个场景下访问的数据,也应该放在同一个表内。
2.公共处理逻辑下沉和单一:公用的逻辑应该封装在底层表中,避免公用逻辑直接暴露给上层,同一个公共逻辑需要收敛,避免在多个地方同时存在3.适当冗余:考虑到mr/rdd计算框架下join运算的资源损耗,可以通过适当冗余字段处理减少join操作4.命名一致/可理解:同一个业务含义的字段命名必须相同,且直观可读。
数据仓库中的维度建模与事实表设计数据仓库是一个集成的、主题导向的、时间可变的、非易失性的数据存储,用于支持管理决策。
在数据仓库中,维度建模和事实表设计是非常重要的,它们是数据仓库设计的核心。
维度建模是指将数据仓库中的数据组织成一个统一的、易于理解的维度模型,而事实表设计则是指如何将业务过程和指标以一种易于查询和分析的方式存储到数据库中。
在本文中,我们将探讨数据仓库中的维度建模与事实表设计的相关内容。
一、维度建模维度建模是数据仓库设计的核心,它是数据仓库中维度和事实之间的关系模型。
维度模型由事实表和维度表组成,它们之间存在着一对多的关系。
维度模型是一个简单直观的模型,它将业务过程和指标以一种易于理解的方式组织起来。
1.维度表在维度建模中,维度表是非常重要的,它是用来描述业务对象的表。
维度表通常包含了多个属性字段,每个属性字段描述了业务对象的一个特定属性。
比如,在销售数据中,维度表可能包含了产品、时间、地点等属性字段。
2.事实表事实表是数据仓库中存储业务过程和指标的表,它包含了一个或多个度量字段,度量字段是用来度量业务活动的指标。
事实表和维度表之间通过外键关联起来,事实表中的度量字段通常是和维度表的外键字段关联的。
3.星型模式维度模型通常被称为星型模式,因为它的结构呈现出星型的形状。
在星型模式中,中心的事实表被围绕着多个维度表组织起来,形成了一个星型的结构。
4.雪花模式除了星型模式之外,还有一个常见的维度模型是雪花模式。
在雪花模式中,维度表的层次结构被规范化成多个维度表,这样可以节省存储空间,但也会增加查询复杂度。
5.维度层次维度表中的属性字段通常是按照层次结构组织起来的,比如在时间维度中,可以有年、季度、月、日等层次。
在维度建模中,采用自然层次结构的维度表是非常重要的,它可以帮助用户更加方便地进行查询和分析。
维度建模是数据仓库设计的核心,它可以帮助用户更加方便地理解业务过程和指标。
通过合理的维度建模,可以提高数据仓库的查询性能,减少数据冗余,提高数据的一致性和可靠性。
汽车行业维度建模方案
维度建模在汽车行业中可以帮助企业分析和管理各个维度的数据,提取有价值的信息。
以下是汽车行业维度建模的一个方案:
1. 产品维度:汽车行业的核心是不同种类的汽车产品。
可以定义产品维度,包括汽车品牌、型号、颜色、车型、发动机规格等属性。
这样可以根据产品维度进行销售分析、库存管理和市场研究。
2. 顾客维度:汽车行业的目标是满足顾客需求并提供优质的售后服务。
可以定义顾客维度,包括顾客ID、姓名、联系方式、购车时间、购车渠道等属性。
这样可以进行客户分析、顾客满意度调查和客户关系管理。
3. 销售维度:汽车销售是企业的主要业务之一,可以定义销售维度,包括销售ID、销售员ID、销售日期、销售渠道、销售
价格、销售数量等属性。
这样可以进行销售分析、销售预测和销售绩效评估。
4. 供应链维度:汽车制造涉及复杂的供应链管理,可以定义供应链维度,包括供应商ID、供应商名称、供应商地点、供应
商联系方式、供应物料等属性。
这样可以进行供应链分析、物料采购和供应商评估。
5. 售后维度:售后服务是汽车企业的重要组成部分,可以定义售后维度,包括售后服务ID、售后服务类型、服务日期、服
务内容、服务技术人员等属性。
这样可以进行售后服务分析、
故障排查和服务质量评估。
在实际实施维度建模时,可以基于以上维度设计事实表和维度表,并建立相应的关联关系。
通过这种方式,企业可以对汽车销售、客户满意度、供应链管理和售后服务等各个方面进行全面的数据分析和管理,提高企业的运营效率和竞争力。
维度建模的理解
维度建模是一种数据建模方法,它将数据按照不同的维度进行分类和组织,以便更好地理解和分析数据。
维度建模的核心思想是将数据按照业务过程进行划分,将数据分为事实表和维度表两部分,以便更好地进行数据分析和决策。
维度建模的优点在于它能够提供更加直观和易于理解的数据模型,使得数据分析和决策更加高效和准确。
维度建模的核心是维度表,它包含了数据的各个维度,如时间、地点、产品等,以及这些维度的属性,如时间的年、月、日等。
维度表的设计需要考虑到数据的可扩展性和灵活性,以便更好地适应业务需求的变化。
事实表是维度建模的另一个重要组成部分,它包含了数据的度量,如销售额、利润等。
事实表和维度表之间通过共享维度进行关联,以便更好地进行数据分析和决策。
事实表的设计需要考虑到数据的粒度和聚合方式,以便更好地满足业务需求。
维度建模的应用范围非常广泛,它可以应用于各种类型的数据分析和决策场景,如销售分析、客户分析、供应链分析等。
维度建模的优点在于它能够提供更加直观和易于理解的数据模型,使得数据分析和决策更加高效和准确。
维度建模是一种非常重要的数据建模方法,它能够提供更加直观和易于理解的数据模型,使得数据分析和决策更加高效和准确。
在实
际应用中,我们需要根据业务需求进行维度表和事实表的设计,以便更好地满足业务需求。
维度建模数据库的流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 需求分析:与业务部门沟通,了解业务需求和数据使用场景。
确定关键业务指标和数据要求。
数据仓库(二)之维度建模篇•概述维度建模是一种将数据结构化的逻辑设计方法,它将客观世界划分为度量和上下文。
度量是常常是以数值形式出现,事实周围有上下文包围着,这种上下文被直观地分成独立的逻辑块,称之为维度。
它与实体-关系建模有很大的区别,实体-关系建模是面向应用,遵循第三范式,以消除数据冗余为目标的设计技术。
维度建模是面向分析,为了提高查询性能可以增加数据冗余,反规范化的设计技术。
•维度建模优点•事实表事实表存储了从业务活动或事件提炼出来的性能度量,它主要包含维度表的外键和连续变化的可加性数值或半可加事实。
事实表产生于业务过程中而不是业务过程的描述性信息。
它一般是行多列少,占了数据仓库的90%的空间。
在维度模型中也有表示多对多关系的事实,其他都是维度表。
事实表粒度事实表的粒度是产生事实行的度量事件的业务定义。
粒度确定了事实表的业务主键,事实表的所有度量值必须具有相同的粒度。
事实表类型1.事务事实表它是面向事务的,其粒度是每一行对应一个事务,它是最细粒度的事实表。
2.周期快照事实表它是按照良好的时间周期间隔(每天,每月)来捕捉业务活动的执行情况,一旦装入事实表就不会再去更新,它是事务事实表的补充,而非替代品。
3.累积快照事实表它用于描述业务过程中某个不确定时间跨度里的活动,它随着业务活动的发生会不断的更新。
事实表区别:•维度表维度表是对业务过程的上下文描述,主要包含代理键、文本信息和离散的数字。
它是进入事实表的入口,丰富的维度属性给出了对事实表的分析切割能力,它一般是行少列多。
如果属性值是离散的,用于过滤和标记的,就放到维度表里,如果是属性值是连续取值,用于计算的,就放到事实表中。
维度表类型缓慢变化维1.类型1字段值发生变化时覆盖原来的值。
2.类型2字段值发生变化时会新增一行,重新分配代理键,每一行添加开始日期,结束日期,版本号,是否当前值。
3.类型3每条记录会新增一列来标识变化前的值,发生变化时,把旧值放到新增的列中,把新值覆盖旧值。
数据仓库设计维度建模和ETL流程数据仓库设计维度建模和ETL流程是在建立和维护数据仓库时最重要的环节之一。
通过合理的维度建模和高效的ETL流程设计,可以保证数据仓库的数据质量和查询效率。
本文将探讨数据仓库设计维度建模和ETL流程的相关概念和最佳实践。
1. 数据仓库设计维度建模数据仓库的维度建模是保证数据仓库数据模型的合理性和灵活性的重要环节。
维度是描述业务过程中固有属性的特征,如时间、地点、产品等。
通过对这些维度进行建模,可以更好地理解业务过程,并进行多维分析。
在维度建模中,常用的技术包括星型模式和雪花模式,其中星型模式是最常用的一种。
在数据仓库的维度建模中,应注意以下几点:- 尽量简化维度:避免创建过多、重复或冗余的维度,保持维度的简洁性和一致性,能够有效提升查询性能。
- 设计适当的维度层次:维度层次应从粗到细,便于用户进行分析和钻取操作。
- 确定维度的完整性:维度的数据应保持一致和完整,避免脏数据对分析结果的影响。
2. ETL流程设计ETL(Extract-Transform-Load)是将源系统的数据抽取、转换和加载到目标数据仓库的过程。
ETL流程设计的好坏直接影响到数据仓库的数据质量和及时性。
以下是一些常用的ETL流程设计原则:- 数据抽取:选择合适的抽取方式,包括全量抽取和增量抽取。
全量抽取适用于数据量较小的情况,而增量抽取可以节省时间和资源,适用于数据量较大的场景。
- 数据转换:在数据转换过程中,需要进行数据清洗、数据集成和数据加工等操作。
清洗过程包括去除重复数据、纠正错误数据和填充缺失数据等。
数据集成包括将多个源系统的数据合并为一致的格式,方便后续的加载和分析。
数据加工包括计算指标、聚合数据和生成新的派生数据等操作。
- 数据加载:数据加载是将经过转换的数据加载到目标数据仓库中。
在数据加载过程中,需要考虑并发控制和异常处理等问题,保证数据的完整性和一致性。
在ETL流程设计中,应注意以下几点:- 实现合适的并发控制:在ETL流程设计中,应考虑到并发操作的场景,尽量避免对同一数据进行并发写入,以免造成数据冲突和数据丢失。
维度建模的基本概念及过程摘要:本文首先介绍维度模型中的维度表和事实表这2个基本构成要素的基础知识;其次,介绍设计维度模型的4个基本步骤;再次,围绕某银行为实现业务价值链数据集成的需要,介绍多维体系结构中的3个关键性概念:数据仓库总线结构、一致性维度、一致性事实。
关键词:维度表;事实表;维度模型设计过程;数据仓库总线结构;一致性维度;一致性事实。
引言: 与流行的说法不同,Ralph Kimball本人并没有定义“维度”和“事实”这样的术语。
术语“维度”与“事实”,最初是20世纪60年代在一个由General Mills与Dartmouth大学主持的联合研究计划中提出的。
70年代,AC Nielsen和IRI都一致地使用这些术语描述他们的数据发布应用,用现在更为准确的话来说,就是关于零售数据的维度数据集市(Data Mart)。
在简明性成为生活方式的潮流之前的长时期内,早期的数据库垄断组织们致力于将这些概念用来简化用做分析的信息。
他们意识到,除非数据库做得简单易用,否则没有人会用它。
因此,在将可理解性和性能作为最高目标的驱动下,产生了维度模型的构造思想。
1 维度表和事实表1.1 事实表事实表是维度模型的基本表,其中如图所示存放有大量的业务性能度量值。
力图将从一个业务处理过程得到的度量值数据存放在单个数据集市。
由于度量值数据压倒性地成为任何数据集市的最大部分,因此应该避免在企业范围内的不同地方存储其拷贝。
用术语“事实”代表一个业务度量值。
可以设想一个作为例子的情形:查询某个客户在某个机构下某个产品合约账户的某个币种的某个时点余额,在各维度值(客户、产品合约、账户、机构、币种、日期)的交点处就可以得到一个度量值。
维度值的列表给出了事实表的粒度定义,并确定出度量值的取值范围是什么。
事实表的一行对应一个度量值,一个度量值就是事实表的一行;事实表的所有度量值必须具有相同的粒度。
最有用的事实是诸如账户余额这样的数字类型为可做加法的事实。
维度建模的基本概念及过程摘要:本文首先介绍维度模型中的维度表和事实表这2个基本构成要素的基础知识;其次,介绍设计维度模型的4个基本步骤;再次,围绕某银行为实现业务价值链数据集成的需要,介绍多维体系结构中的3个关键性概念:数据仓库总线结构、一致性维度、一致性事实。
关键词:维度表;事实表;维度模型设计过程;数据仓库总线结构;一致性维度;一致性事实。
引言: 与流行的说法不同,Ralph Kimball本人并没有定义“维度”和“事实”这样的术语。
术语“维度”与“事实”,最初是20世纪60年代在一个由General Mills与Dartmouth大学主持的联合研究计划中提出的。
70年代,AC Nielsen和IRI都一致地使用这些术语描述他们的数据发布应用,用现在更为准确的话来说,就是关于零售数据的维度数据集市(Data Mart)。
在简明性成为生活方式的潮流之前的长时期内,早期的数据库垄断组织们致力于将这些概念用来简化用做分析的信息。
他们意识到,除非数据库做得简单易用,否则没有人会用它。
因此,在将可理解性和性能作为最高目标的驱动下,产生了维度模型的构造思想。
1 维度表和事实表1.1 事实表事实表是维度模型的基本表,其中如图所示存放有大量的业务性能度量值。
力图将从一个业务处理过程得到的度量值数据存放在单个数据集市。
由于度量值数据压倒性地成为任何数据集市的最大部分,因此应该避免在企业范围内的不同地方存储其拷贝。
用术语“事实”代表一个业务度量值。
可以设想一个作为例子的情形:查询某个客户在某个机构下某个产品合约账户的某个币种的某个时点余额,在各维度值(客户、产品合约、账户、机构、币种、日期)的交点处就可以得到一个度量值。
维度值的列表给出了事实表的粒度定义,并确定出度量值的取值范围是什么。
事实表的一行对应一个度量值,一个度量值就是事实表的一行;事实表的所有度量值必须具有相同的粒度。
最有用的事实是诸如账户余额这样的数字类型为可做加法的事实。
可加性是至关重要的,因为数据仓库应用不仅仅只检索事实表的单行数据。
相反,往往一次性带回数百、数千乃至数百万行的事实,并且处理这么多行的最有用的事就是将它们加起来。
当然,有些事实是半加性质的,而另外一些是非加性质的。
半加性事实仅仅沿某些维度相加,例如销售占比,周期余额;而非加性事实根本就不能相加,例如状态。
对于非加性事实,如果希望对行进行总结就不得不使用计数或平均数,或者降为一次一行地打印出全部事实行。
度量事实在理论上讲可以是文本形式的,不过这种情况很少出现。
在大多数情况下,文本度量值可以是某种事物的描述并取自某个离散列表的值。
设计者应该尽各种努力将文本度量值转换成维度,原因在于维度能够与其他文本维度属性更有效地关联起来,并且消耗少得多的空间。
不能将冗余的文本信息存放在事实表内。
除非文本对于事实表的每行来说都是唯一的,否则它应该归属到维度表中。
真正的文本事实在数据仓库中是很少出现的,文本事实具有像自由文本内容那样的不可预见性内容,这几乎是不可能进行分析的。
所有事实表有两个或者两个以上的外关键字(如图中FK符号标记的部分),外关键字用于连接到维度表的主关键字。
例如,事实表中的“产品合约关键字”总是匹配产品合约维度表的一个特定“产品合约关键字”。
如果事实表中的所有关键字都能分别与对应维度表中的主关键字正确匹配,就可以说这些表满足引用完整性的要求。
事实表要通过与之相连的维度表进行存取。
事实表根据粒度的角色划分不同,可分为事务事实表、周期快照事实表、累积快照事实表。
事务事实表用于承载事务数据,通常粒度比较低,例如产品交易事务事实、ATM交易事务事实;周期快照事实表用来记录有规律的、固定时间间隔的业务累计数据,通常粒度比较高,例如账户月平均余额事实表;累积快照事实表用来记录具有时间跨度的业务处理过程的整个过程的信息,通常这类事实表比较少见。
这里需要值得注意的是,在事实表的设计时,一定要注意一个事实表只能有一个粒度,不能将不同粒度的事实建立在同一张事实表中。
1.2 维度表维度表是事实表不可分割的部分。
如图所示,维度表包含有业务的文字描述。
在一个设计合理的维度模型中,维度表有许多列或者属性,这些属性给出对维度表的行所进行的描述。
应该尽可能多地包括一些富有意义的文字性描述。
对于维度表来说,包含50到100个属性的情形并不少见。
维度表倾向于将行数做得相当少(通常少于100万行),而将列数做得特别大。
每个维度用单一的主关键字(如图中PK符号标记的部分)进行定义,主关键字是确保同一与之相连的任何事实表之间存在引用完整性的基础。
维度属性是查询约束条件、成组与报表标签生成的基本来源。
在查询与报表请求中,属性用by这个单词进行标识。
例如,一个用户表示要按“产品合约编号”与“机构编号”来查看账户余额,那么“产品合约编号”与“机构编号”就必须是可用的维度属性。
维度表属性在数据仓库中承担着一个重大的角色。
由于它们实际上是所有令人感兴趣的约束条件与报表标签的来源,因此成为使数据仓库变得易学易用的关键。
在许多方面,数据仓库不过是维度属性的体现而已。
数据仓库的能力直接与维度属性的质量和深度成正比。
在提供详细的业务用语属性方面所花的时间越多,数据仓库就越好。
在属性列值的给定方面所花的时间越多,数据仓库就越好。
在保证属性列值的质量方面所花的时间越多,数据仓库就越好。
维度表是进入事实表的入口。
丰富的维度属性给出了丰富的分析切割能力。
维度给用户提供了使用数据仓库的接口。
最好的属性是文本的和离散的。
属性应该是真正的文字而不应是一些编码简写符号。
应该通过用更为详细的文本属性取代编码,力求最大限度地减少编码在维度表中的使用。
有时候在设计数据库时并不能很确定,从数据源析取出的一个数字型数据字段到底应该作为事实还是维度属性看待。
通常可以这样来做出决定,即看字段是一个含有许多的取值并参与运算的度量值(当事实看待),还是一个多少变化不多并参与作为约束条件的离散取值的描述(当维属性看待)。
在维度类型中,有一种重要的维度称作为退化维度(Degenerate Dimension),这种维度指的是直接把一些简单的维度放在事实表中而不专门去做一个维度表。
退化维度是维度建模领域中的一个非常重要的概念,它对理解维度建模有着非常重要的作用,退化维度经常会和其他一些维度一起组合成事实表的主键。
退化维度在分析中可以用来做分组使用。
1.3 维度表和事实表的融合在理解了事实和维度表之后,现在就考虑将两个组块一起融合到维度模型中去的问题。
如图所示,由数字型度量值组成的事实表连接到一组填满描述属性的维度表——这个星型特征结构通常被叫做星型连接方案。
该术语可以追溯到最早的关系数据库时期。
关于其中用到的维度方案,应该注意的第一件事就是其简明性与对称性。
很显然,业务用户会因为数据容易理解和浏览而从简明性方面受益。
维度模型的简明性也带来了性能上的好处。
数据库优化器可以更高效率地处理这些连接关系较少的简单方案。
数据库引擎可以采取的非常强劲的做法是,首先集中对建立了充足的索引的维度表进行约束(过滤)处理,然后用满足用户约束条件的维度表关键字的笛卡尔乘积一次性处理全部的事实表。
令人惊奇的是,利用这种方法只需使用一次事实表的索引,就可以算出与事实表之间的任意n种连接结果。
最后,维度模型能够很自然地进行扩展以适应变化的需要。
维度模型的可预定框架能够经受住无法预见的用户行为变化所带来的考验。
每个维度都是平等的,所有维度都是进入事实表的对等入口。
这个逻辑模型不存在内置的关于某种期望的查询形式方面的偏向,不存在这个月要问的业务问题相对于下个月来说具有优先方面的考虑。
没有谁会希望,如果业务用户采用新的方式进行业务分析,就要调整设计方案这样的事情发生。
最佳粒度或者原子数据具有最佳的维度。
被聚合起来的原子数据是最有表现力的数据。
原子数据应该成为每个事实表设计的基础,从而经受住业务用户无法预见的查询所引起的特别攻击。
对于维度模型来说,完全可以向方案中加入新的维度,只要其值对于每个现有的事实行存在唯一性定义就行。
同样,可以向事实表加入新的不曾预料到的事实,只要其详细程度与现有事实表处在一致的水平面上就可以了。
可以用新的不曾预料到的属性补充先前存在的维度表,也可以从某个前向时间点的角度在一个更低的粒度层面上对现存维度行进行分解。
在每种情况下,可以简单地在表中加入新的数据行或者执行一条SQL ALTER TABLE命令来对现存表格进行适当的修改。
数据用不着重新加载,所有现存的数据存取应用可以继续运行而不会产生不同的结果。
2 维度建模设计过程本文按照图具有一定顺序的四个步骤的方式进行维度数据库的设计。
2.1 第一步选取业务处理业务处理过程是机构中进行的一般都由源系统提供支持的自然业务活动。
听取用户的意见是选取业务处理过程的效率最高的方式。
在选取业务阶段,数据模型设计者需要具有全局和发展的视角,应该理解整体业务流程的基础上,从全局角度选取业务处理。
要记住的重要一点是,这里谈到的业务处理过程并不是指业务部门或者职能。
通过将注意力集中放在业务处理过程方面,而不是业务部门方面,就能在机构范围内更加经济地提交一致的数据。
如果建立的维度模型是同部门捆绑在一起的,就无法避免出现具有不同标记与术语的数据拷贝的可能性。
多重数据流向单独的维度模型,会使用户在应付不一致性的问题方面显得很脆弱。
确保一致性的最佳办法是对数据进行一次性地发布。
单一的发布过程还能减少ETL的开发量,以及后续数据管理与磁盘存储方面的负担。
2.2 第二步定义粒度粒度定义意味着对各事实表行实际代表的内容给出明确的说明。
粒度传递了同事实表度量值相联系的细节所达到的程度方面的信息。
它给出了后面这个问题的答案:“如何描述事实表的单个行?”。
粒度定义是不容轻视的至关重要的步骤。
在定义粒度时应优先考虑为业务处理获取最有原子性的信息而开发维度模型。
原子型数据是所收集的最详细的信息,这样的数据不能再做更进一步的细分。
通过在最低层面上装配数据,大多原子粒度在具有多个前端的应用场合显示出其价值所在。
原子型数据是高度维结构化的。
事实度量值越细微并具有原子性,就越能够确切地知道更多的事情,所有那些确切知道的事情都转换为维度。
在这点上,原子型数据可以说是维度方法的一个极佳匹配。
原子型数据可为分析方面提供最大限度的灵活性,因为它可以接受任何可能形式的约束,并可以以任何可能的形式出现。
维度模型的细节性数据是稳如泰山的,并随时准备接受业务用户的特殊攻击。
当然,可以总是给业务处理定义较高层面的粒度,这种粒度表示最具有原子性的数据的聚集。
不过,只要选取较高层面的粒度,就意味着将自己限制到更少或者细节性可能更小的维度上了。
具有较少粒度性的模型容易直接遭到深入到细节内容的不可预见的用户请求的攻击。