维表和事实表介绍

合集下载

数据仓库维度建模课件-PPT

数据仓库维度建模课件-PPT
数据仓库维度建模
优选数据仓库维度建模
目录
1.基础术语 2.维度建模中的两种模型 3.星形模型设计 4.雪花模型设计 5.星形模型的优势 6.雪花模型的优势与劣势
1、基础术语
事实表(Fact Table)
• 每个数据仓库都包含一个或者多个事实数据表。事实数据 表可能包含业务销售数据,如现金登记事务所产生的数据, 事实数据表通常包含大量的行
细类别表,详细类别表通过对事实表在有关维上 性。
维度表可以看作是用户来分析数据的窗口,维度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如
的详细描述达到了缩小事实表和提高查询效率的 何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。
主要包含了描述特定商业事件的数据,即某些特定商业事件的度量值。
商品大分类表 大分类编号 大分类名称 大分类备注
5.星形模型的优势
– 用户容易理解 – 优化浏览
• 在数据库模式中,表与表连接的目的在于寻找到需 要的数据
• 如果连接的路径复杂,那么在数据库中浏览数据将 是缓慢而艰难的
• 如果连接路径简单、直接,则浏览数据会更快 • 星型模型的优势之一在于它优化对数据库的浏览
星形模型(Star Schema)
• 事实被维度所包围,且维度没有被新的表连接
雪花模型(Snowflake Schema)
• 事实表被多个维表或一个或多个层次所包围
3.星形模型设计
(1) 正确区分事实、属性和维度。
• 维度模型需要对事实和属性进行区分,业务层的 很多事实都是数值型的,特别是该数值是浮点数 时,他很可能是一个事实,而不是属性。
• 主要包含了描述特定商业事件的数据,即某些特定商业事 件的度量值。

数据仓库多维数据模型的设计

数据仓库多维数据模型的设计

1、数据仓库基本概念1.1、主题(Subject)主题就是指我们所要分析的具体方面。

例如:某年某月某地区某机型某款App的安装情况。

主题有两个元素:一是各个分析角度(维度),如时间位置;二是要分析的具体量度,该量度一般通过数值体现,如App安装量。

1.2、维(Dimension)维是用于从不同角度描述事物特征的,一般维都会有多层(Level:级别),每个Level 都会包含一些共有的或特有的属性(Attribute),可以用下图来展示下维的结构和组成:以时间维为例,时间维一般会包含年、季、月、日这几个Level,每个Level一般都会有ID、NAME、DESCRIPTION这几个公共属性,这几个公共属性不仅适用于时间维,也同样表现在其它各种不同类型的维。

1.3、分层(Hierarchy)OLAP需要基于有层级的自上而下的钻取,或者自下而上地聚合。

所以我们一般会在维的基础上再次进行分层,维、分层、层级的关系如下图:每一级之间可能是附属关系(如市属于省、省属于国家),也可能是顺序关系(如天周年),如下图所示:1.4、量度量度就是我们要分析的具体的技术指标,诸如年销售额之类。

它们一般为数值型数据。

我们或者将该数据汇总,或者将该数据取次数、独立次数或取最大最小值等,这样的数据称为量度。

1.5、粒度数据的细分层度,例如按天分按小时分。

1.6、事实表和维表事实表是用来记录分析的内容的全量信息的,包含了每个事件的具体要素,以及具体发生的事情。

事实表中存储数字型ID以及度量信息。

维表则是对事实表中事件的要素的描述信息,就是你观察该事务的角度,是从哪个角度去观察这个内容的。

事实表和维表通过ID相关联,如图所示:1.7、星形/雪花形/事实星座这三者就是数据仓库多维数据模型建模的模式上图所示就是一个标准的星形模型。

雪花形就是在维度下面又细分出维度,这样切分是为了使表结构更加规范化。

雪花模式可以减少冗余,但是减少的那点空间和事实表的容量相比实在是微不足道,而且多个表联结操作会降低性能,所以一般不用雪花模式设计数据仓库。

数据仓库的基本特征

数据仓库的基本特征

Analysts
可编辑版
4
聊城大学数学科学学院--周书锋
4
决策支持系统的演化
淹没于数据,但饥饿于知识
VLDB
Knowledge discovery
Too much data
Valuable
knowledge
可编辑版
5
聊城大学数学科学学院--周书锋
5
决策支持系统的演化
自然演化体系结构 对于决策者的即时信息需求,直接从OLTP系统中产生 报告 – 使DBA忙乱不堪也使OLTP负载太重!
粒度细:数据分析灵活,但存储空间大计算量大
粒度粗:存储空间小,但有时无法回答一些比较 细节的问题。
可编辑版
32
聊城大学数学科学学院--周书锋
32
例如:销售数据库存储了每一笔业务的细节,在 分析时对每一笔分析是无意义的。
因此,可以考虑数据仓库的粒度级别以星期为单 位,即在数据从数据库装入数据仓库时,按星期 汇总。
优点:组织方式简单、花费少、使用灵活; 缺点:只有当源数据库的数据组织比较规范、没 有数据不完备及冗余,同时又比较接近多维数据 模型时,虚拟数据仓库的多维语义才容易定义。 而在一般的数据库应用中,这很难做到。
可编辑版
28
聊城大学数学科学学院--周书锋
28
6.数据仓库的数据组织
2、基于关系表的存储方式
ERP系统也是事务系统,但它们的数据结构非常标 准、规范。
与使用ERP系统的贸易伙伴之间处理效率会更高,
改善企业内部供应链的上下纵向通信(XML)
可编辑版
13
聊城大学数学科学学院--周书锋
13
电子商务系统
Electronic Commerce

大数据分析基础——维度模型

大数据分析基础——维度模型

大数据分析基础——维度模型大数据分析基础——维度模型1基本概念维度模型的概念出自于数据仓库领域,是数据仓库建设中的一种数据建模方法。

维度模型主要由事实表和维度表这两个基本要素构成。

1.1维度维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也可以称为实体对象。

维度属于一个数据域,如地理维度(其中包括国家、地区、省以及城市等级别的内容)、时间维度(其中包括年、季、月、周、日等级别的内容)。

维度是维度建模的基础和灵魂。

在维度建模中,将度量称为“事实” ,将环境描述为“维度”,维度是用于分析事实所需要的多样环境。

例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。

维度所包含的表示维度的列,称为维度属性。

维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。

1.2事实表事实表是维度模型的基本表,每个数据仓库都包含一个或者多个事实数据表。

事实数据表可能包含业务销售数据,如销售商品所产生的数据,与软件中实际表概念一样。

事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。

事实表中一条记录所表达的业务细节程度被称为粒度。

通常粒度可以通过两种方式来表述:一种是维度属性组合所表示的细节程度:一种是所表示的具体业务含义。

作为度量业务过程的事实,一般为整型或浮点型的十进制数值,有可加性、半可加性和不可加性三种类型。

相对维度来说,通常事实表要细长,行的增加速度也比维度表快的多,维度表正好相反。

事实表有三种类型 :1.事务事实表:事务事实表用来描述业务过程,眼踪空间或时间上某点的度量事件,保存的是最原子的数据,也称为“原子事实表\周期快照事实表”。

2.周期快照事实表:周期快照事实表以具有规律性的、可预见的时间间隔记录事实,时间间隔如每天、每月、每年等。

3.累积快照事实表:累积快照事实表用来表述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点,当过程随着生命周期不断变化时,记录也会随着过程的变化而被修改。

事实表设计

事实表设计

事实表中一般要包含2部分:一是由主键和外键所组成的键部分,另一部分是用户希望在数据仓库中所了解的数值指标,这些指标是为每个派生出来的键而定义和计算的,称为事实或指标。

由于事实是一种度量,所以事实表中的这种指标往往需要具有数值化和可加性的特征。

但是在事实表中,只有那些具有完全可加性的事实才能根据所有的维度进行累加而具有意义。

而事实表有一些事实表示的是某种强度,这类事实就不具有完全加法性,而是一种半加法性。

例如,账目余款反映的是某个时间点的数据,它可以按照地点和商品等大多数维度进行累加,但是对于时间维度则例外,将一年中每个月的账目余款进行累加是毫无意义的,而决策者则可能需要了解所有地区和所有商品账目余款的累加值。

在事实表中还有一些事实是非加法性的,即这些事实具有对事实的描述特性,在这种情况下一般要将这些非加法性事实转移到维度表中。

以事实表中度量的可加性情况,可以把事实表及其包含的事实分为4种样式。

1.事务事实事务事实以企业事件的单一情况为基础,因此通常只包含事实的次数这一种度量条件,应该尽可能以最低级别来表示。

比如银行的ATM提款机的提款次数,使用某种服务的次数等。

2.快照事实快照事实以企业在某一特定时间的特殊状态为基础。

也就是只有在某一段时间内才出现的结果。

它们也许没有包含所有维的条件,比如不是所有的产品每天都有销售量。

3.线性项目事实这类事实通常用来储存关于企业经营项目的详细信息。

包括表现与企业相关的个别线性项目的所有度量条件,比如销售数量、销售金额、成本和运费等数值数据,也就是关键性能指标。

此类事实运用范围很广,比如采购、销售和库存等。

4.事件(状态事实)这是类特殊的事实,通常只表示事件发生与否和一些非事实本身具备的细节。

它所表现的是一个事件发生后的结果变化,并且没有度量数值表示。

如哪些产品在促销期间内没有卖出,有还是没有,就是事件或状态事实所表现的结果。

在事实表模型的设计中还需要注意到派生事实。

数据的单值、多值、派生、简单、复合属性

数据的单值、多值、派生、简单、复合属性

数据的单值、多值、派⽣、简单、复合属性
派⽣属性:“学⽣”实体中有“⽣⽇”和“年龄”等属性,从“⽣⽇”可以计算出“年龄”属性的值,“年龄”属性就是派⽣属性
多值属性:⼀个⼈都多个亲属,亲属就是多值属性。

⼀个⼈有多种爱好。

⼀个⼈可能有多个电话号码
单值属性:学⽣表中的学号就只有⼀个,所以叫单值属性。

复合属性:”姓名“由姓+中间名+名构成
简单属性:与复合相对的,就是简单属性。

使⽤“维度表”和“事实表”来对每种表进⾏定性。

以上的属性都是描述维度的。

维度建模三种模式
1.1 星型模式。

1.2 雪花模式。

1.3 星座模式。

维度表:维度表可以看成是⽤户⽤来分析⼀个事实的窗⼝,它⾥⾯的数据应该是对事实的各个⽅⾯描述,⽐如时间维度表,它⾥⾯的数据就是⼀些⽇,周,⽉,季,年,⽇期等数据,维度表只能是事实表的⼀个分析⾓度。

实体表:实体表就是⼀个实际对象的表,实体表它放的数据⼀定是⼀条条客观存在的事物数据,⽐如说设备,它就是客观存在的,所以可以将其设计⼀个实体表。

事实表:事实表其实质就是通过各种维度和⼀些指标值得组合来确定⼀个事实的,⽐如通过时间维度,地域组织维度,指标值可以去确定在某时某地的⼀些指标值怎么样的事实。

事实表的每⼀条数据都是⼏条维度表的数据和指标值交汇⽽得到的。

【数据仓库】4维度建模之事实表设计

【数据仓库】4维度建模之事实表设计

【数据仓库】4维度建模之事实表设计事实表是维度建模的核⼼,紧紧围绕着业务过程来设计,通过描述度量来表达业务过程,包含了维度的引⽤和业务度量值。

上⼀篇⽂章我们讲了《》,今天我们聊⼀下事实表的设计。

⼀样,我们的⽬录结构和内容参考了《阿⾥巴巴⼤数据之路》⼀书。

事实表的基础概念粒度事实表中的每⼀条记录所表达的业务细节程度被称为粒度。

粒度由两种⽅式表述:维度属性组合所表⽰的细节程度所表⽰的具体业务含义事实⽤来描述业务过程的度量,⼀般是整形、浮点型的⼗进制数值。

可加:对任何维度进⾏汇总半可加:只能对特定维度进⾏汇总,如库存,按照地点、商品维度汇总是有意义的,按时间汇总是⽆意义的不可加:⽐率型,需要拆解为可加的度量来实现汇总,如商品购买率=> 购买⼈数,浏览⼈数相对于维度表,事实表会显得更细长,变化速度也会⽐维度表快。

事实表中也是可以存储维度属性的,这种操作称为——维度退化,⽽相应的维度属性称为——退化维度。

事实表类型事务事实表:按最细粒度来保存业务过程的数据,如购买商品事实表周期快照事实表:按照固定的时间间隔(年、⽉、⽇),记录事实累计快照事实表:覆盖整个业务⽣命周期,从开始到结束的累计事实,通常具有多个⽇期时间字段来记录关键的时间点,当⽣命周期发⽣变化,记录也会随之被修改。

设计原则原则⼀:尽可能包含所有与业务过程相关的事实事实表的设计⽬的是为了度量业务过程。

所以分析哪些事实与业务过程有关,是设计中⾮常重要的关注点。

在事实表中应尽量包含所有与该业务过程相关的事实,即使有冗余,但因为事实通常是数字型,带来存储开销不会很⼤!原则⼆:只选择与业务过程相关的事实在选择事实时,应该注意只选择与业务过程有关的事实。

⽐如在下单的业务过程中,不应该存在⽀付⾦额这⼀个属于⽀付业务过程的事实。

原则三:不可加的事实拆分为可加的度量如商品购买率 => 购买⼈数,浏览⼈数原则四:在选择维度和事实之前必须先声明粒度⼀般在设计事实表过程中,粒度定义越细越好,从最低级别的原⼦粒度开始能满⾜之后⽆法预期的⽤户需求。

多维数据分析基础

多维数据分析基础

多维数据分析基础多维数据分析是指按照多个维度(即多个⾓度)对数据进⾏观察和分析,多维的分析操作是指通过对多维形式组织起来的数据进⾏切⽚、切块、聚合、钻取、旋转等分析操作,以求剖析数据,使⽤户能够从多种维度、多个侧⾯、多种数据综合度查看数据,从⽽深⼊地了解包含在数据中的信息和规律。

多维数据分析以数据仓库为基础,按照维度模型来设计数据仓库。

在维度模型中,把存储度量的表称作事实表,把存储属性的表叫做维度表。

事实表存储的是可概括的数据,维度中包含属性和层次结构。

⽤户可以按照层次结构对数据进⾏聚合,从High Level上分析数据。

⼀,度量和度量值度量(Measure)是事实表中⼀个数值类型的属性,对数值进⾏聚合计算是有意义的,例如,学⽣的分数,计算学⽣的平均分数是有意义的。

度量值是指可概括的数值,是度量的值,度量值⼜被称作事实(fact),这也是“事实表”名称的由来。

从维度模型来看,事实表中除了维度的外键列和主键列之外,其他的列都是度量,这些列的值是度量值。

由此可以得出,事实表的构成是:主键列+维度外键+度量。

事实表存储数据的详细程度称作事实表的粒度,由于粒度是由事实表引⽤的外键列确定的,因此⼀个事实表只能有⼀个粒度,不同粒度的事实数据必须分别存储到不同的事实表中。

⼆,维度和层次结构维度是分析数据的⾓度,维度和维度之间是相互独⽴的。

在报表中,增加维度只是创建了⼀个新的、独⽴的细分度量值的⽅法。

从数据分析的⾓度来讲,增加维度是把度量值更细分,增加新的属性来分解数据。

属性是维度表的⼀列,主键属性(Primary Key Attribution)唯⼀地确定了维度表中的其他属性,属性值是int类型;由于主键属性不具有可读性,通常为维度表创建⼀个名称属性(Name Attribution),是字符类型,⽤于说明主键属性标识的实体。

维度表的每⼀⾏都是不同的实体,但是其名称属性可能是相同的,例如,⼈名。

由于主键属性是int类型,值是唯⼀的,占⽤的存储空间⼩,因此⼤量应⽤于事实数据中,作为外键列。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图3-35 事实表的特征3.5.2 事实表的设计由以上分析可知,事实表中一般要包含2部分:一是由主键和外键所组成的键部分,另一部分是用户希望在数据仓库中所了解的数值指标,这些指标是为每个派生出来的键而定义和计算的,称为事实或指标。

由于事实是一种度量,所以事实表中的这种指标往往需要具有数值化和可加性的特征。

但是在事实表中,只有那些具有完全可加性的事实才能根据所有的维度进行累加而具有意义。

而事实表有一些事实表示的是某种强度,这类事实就不具有完全加法性,而是一种半加法性。

例如,账目余款反映的是某个时间点的数据,它可以按照地点和商品等大多数维度进行累加,但是对于时间维度则例外,将一年中每个月的账目余款进行累加是毫无意义的,而决策者则可能需要了解所有地区和所有商品账目余款的累加值。

在事实表中还有一些事实是非加法性的,即这些事实具有对事实的描述特性,在这种情况下一般要将这些非加法性事实转移到维度表中。

以事实表中度量的可加性情况,可以把事实表及其包含的事实分为4种样式。

1.事务事实事务事实以企业事件的单一情况为基础,因此通常只包含事实的次数这一种度量条件,应该尽可能以最低级别来表示。

比如银行的ATM提款机的提款次数,使用某种服务的次数等。

2.快照事实快照事实以企业在某一特定时间的特殊状态为基础。

也就是只有在某一段时间内才出现的结果。

它们也许没有包含所有维的条件,比如不是所有的产品每天都有销售量。

3.线性项目事实这类事实通常用来储存关于企业经营项目的详细信息。

包括表现与企业相关的个别线性项目的所有度量条件,比如销售数量、销售金额、成本和运费等数值数据,也就是关键性能指标。

此类事实运用范围很广,比如采购、销售和库存等。

4.事件(状态事实)这是类特殊的事实,通常只表示事件发生与否和一些非事实本身具备的细节。

它所表现的是一个事件发生后的结果变化,并且没有度量数值表示。

如哪些产品在促销期间内没有卖出,有还是没有,就是事件或状态事实所表现的结果。

在事实表模型的设计中还需要注意到派生事实。

派生事实主要有2种,一种是可以用同一事实表中的其他事实计算得到,例如销售行为中的商品单价可以用商品的销售总金额和销售数量计算得到,对于这些派生事实一般不保留在事实表中;另一种是非加法性事实,例如各种商品的利润率等各种比率。

在事实表模型的设计中必须要考虑到事实表中的这些事实特性,通过多次反复来确定。

首先,通过调查确定所有可能的基本事实和派生事实;然后,对所有的事实按照功能或某种方式进行排序,以删除重复的事实;接着,确认那些基于不同准则但是有相同性质的派生事实,例如公司门市销售总额与地区销售总额虽由于维度的不同而被定义为不同的事实,但实际计算方法是一样的;最后,再一次确定事实表模型,在确认中要检查所有的计算派生事实的基本事实是否已经包含在模型中,并且与用户取得—致。

在设计事实表时,一定要注意使事实表尽可能地小,因为过于庞大的事实表在表的处理、备份和恢复及用户的查询等方面需要较长的时间。

在实际设计时,可以利用减少列的数量、降低每一列的大小和把历史数据归档到单独的事实表中等多种方法来降低事实表的大小。

另外,在事实表中还要解决好数据的精度和粒度的问题,下面将阐释粒度的设计方法。

图3-36 数据仓库中的数据细节级别图3-39 不同粒度的储存容量示例3)影响分析效果不同的粒度设计对应不同的分析需求,若分析需求和粒度设计不匹配,则会直接影响分析效果。

因为数据的综合使得细节信息丢失,所以若分析需求的粒度小于设计的粒度,则需求不可能得到满足;反之,若分析需求的粒度大于设计的粒度,则查询会在更小的粒度上进行统计运算后才能回答,这将增加用户的等待时间。

例如在图3-40中,要回答“张某在2007年1月29号是否在北京买了一辆山地车”这样非常细致的问题,细节数据非常合适,而综合数据不可能回答。

如果要回答“王某在2006年1月到2006年12月自行车配件的总消费是多少”这样综合程度较高的问题时,使用综合图3-40 综合数据和细节数据的用途和查询代价由于数据仓库的主要作用是决策分析,因而大多数查询都基于一定程度的综合数据之上,而只有少数查询涉及到细节。

因此在数据仓库中,设计多重粒度是必不可少的。

下面具体讲解粒度的设计问题。

2.粒度的设计技巧由以上的分析可知,数据仓库的性能和存储空间是一对矛盾。

如果粒度设计得很小,则事实表将不得不记录所有的细节,储存数据所需要的空间将会急剧的膨胀;若设计的粒度很大,虽然由于事实表体积大而带来的诸多问题能够得到一定程度的缓解,但决策者不能观察细节数据。

粒度的设计成了事实表设计中的重要一环。

1)设计步骤(1)粗略估算确定合适的粒度级的起点,可以粗略估算数据仓库中将来的数据行数和所需的直接存取存储空间,粗略估算可以按照以下步骤完成。

①确定数据仓库中将要创建的所有表,然后估计每张表中行的大小(确切大小可能难以知道,估计一个下界和一个上界就可以了)。

②估计一年内表中的最少行数和最多行数。

这是设计者所要解决的最大问题。

比方说一个顾客表,就应该估计在一定的商业环境和该公司的商业计划影响下的当前的顾客数;如果当前没有业务,就估计为总的市场业务量乘以市场份额;如果市场份额不可知的话,就用竞争对手的业务量来估计。

总之,要从一方或多方收集顾客的合理估算信息开始。

如果数据数据。

这样既可以对财务近况进行细节分析,又可以利用汇总数据对财务趋势进行分析,这里的数据粒度划分策略就需要采用多重数据粒度。

定义数据仓库粒度的另外一个要素是数据仓库可以使用多种存储介质的空间量。

如果存储资源有一定的限制,就只能采用较高粒度的数据粒度划分策略。

这种粒度划分策略必须依据用户对数据需求的了解和信息占用数据仓库空间的大小来确定。

选择一个合适的粒度是数据仓库设计过程中所要解决的一个复杂的问题,因为粒度的确定实质上是业务决策分析、硬件、软件和数据仓库使用方法的一个折中。

在确定数据仓库的粒度时,可以采用多种方法来达到既能满足用户决策分析的需要,又能减少数据仓库的数据量。

如果主题分析的时间范围较小,可以保持较少时间的细节数据。

例如,在分析销售趋势的主题中,分析人员只利用一年的数据进行比较,那么保存销售主题的数据只需要15个月的就足够解决问题了,不必保存大量的数据和时间过长的数据。

还有一种可以大幅降低数据仓库容量的方法.就是只采用概括数据。

这样处理后,确实可以降低数据仓库的存储空间,但是有可能达不到用户管理决策分析中对数据粒度的要求。

因此,数据粒度的划分策略一定要保证数据的粒度确实能够满足用户的决策分析需要,这是数据粒度划分策略中最重要的—个准则。

2)设计实例下面以类似Adventure Works Cycles公司的生产部门数据仓库设计为例,如图3-41所示。

由于对不同的生产业务查询需求的差异,这里采用多重粒度来设计。

左边是操作型数据,记录的是完成若干给定部件的生产线运转情况,每一天都会积累许多记录,是生产业务的详细数据,最近30天的活动数据都存储在操作型的联机环境中。

操作型数据的右边是轻度汇总级的数据,轻度汇总级包括两个表,一个汇总某一部件在3个月中的生产情况,另一个汇总部件的组装情况,汇总周期为1年。

真实档案级的数据包括每个生产活动的详细记录。

错误!图3-41 生产环境的多重粒度3)设计原则粒度在数据仓库生命周期中是重要的考虑因素。

它由业务问题所驱动,受技术的制约。

如果粒度太大,就会丢失个别细节,就要花更多的处理时间来解开聚合;而若粒度太小,就会由于一叶障目而不见森林,许多宝贵的处理时间都浪费在建立聚合上。

因此粒度设计主要是权衡粒度级别,对于业务量大,分析要求比较高的情况下,最佳解决办法则是采用多重粒度的形式。

而针对具体的某个事实的粒度而言,应当采用“最小粒度原则”,即将量度的粒度设置到最小。

假设目前的数据最小记录到秒,即数据库中记录了每秒的交易额。

那么,如果可以确认,在将来的分析需求中,时间只需要精确到天就可以的话,就可以在ETL处理过程中,按天来汇总数据,此时,数据仓库中量度的粒度就是“天”;反过来,如果不能确认将来的分析需求在时间上是否需要精确到秒,那么,就需要遵循“最小粒度原则”,精确到“秒”以满足查询的可能需求。

3.5.4 聚合的设计在事实表中存放的度量变量,根据其实际意义可分成可加性度量变量和非可加性度量变。

可加性度量变量是指将变量相加后得到的结果仍然具有实际意义,可以把此结果计算后放在事实表中,以便在以后的查询中直接使用,这个相加的结果就是聚合。

比如每个月的销售金额,通过将3个月的销售金额相加,就可以得到1个季度的销售金额;通过将12 个月的销售金额相加,可以得到全年的销售总金额。

确定了数据仓库的粒度模型以后,为提高数据仓库的使用性能,还需要根据用户的要求设计聚合。

数据仓库中各种各样的聚合数据主要是为了使用户获得更好的查询性能,因此聚合模型的好坏将在很大程度上影响到数据仓库的最终使用效果。

在设计聚合模型时,首先需要考虑用户的使用要求,其次要考虑数据仓库的粒度模型和数据的统计分布情况。

数据仓库的一般用户在其日常工作中己经有了按照地理位置、产品类型和时间范围的报告。

在数据仓库的聚合设计中,应该对每个维进行审查,以确定哪些属性经常用于分组,这些属性的组合有多少。

例如,如果考虑某一主题有4个维度,每个维度有3个可以作为聚合的属性,那么最多可以创建256个不同的聚合。

当然.在实际工作中是没有必要创建这么多聚合的,只需考虑在数据仓库中经常使用的聚合。

此时,可以审查数据仓库的需求分析文档,了解用户的需求情况。

然后确定哪些内容会对聚合有影响,并通过对数据的审核获取每个维度中不同聚合的统计数据。

数据仓库的聚合模型的设计与数据仓库的粒度模型紧密相关,如果数据仓库的粒度模型只考虑了细节数据,那么就可能需要多设计一些聚合,如果粒度模型为多层数据则在聚合模型设计中可以少考虑一些聚合。

在建立聚合模型时还需要考虑作为聚合属性的数量因素。

例如,在数据仓库中有1 000 000个值用于描述商品信息的最底层信息,如果用户在使用数据仓库时用500 000个值描述商品最底层的上一层次的信息,此时进行聚合处理并不能明显提高数据仓库的使用性能。

但是如果商品上一层次的信息用75 000个值描述,那么就应该使用聚合表提高数据仓库的使用性能。

3.5.5 数据分割如果粒度和分割都做得很好的话,则数据仓库设计和实现的几乎所有其他问题都容易解决。

但是,假如粒度处理不当并且分割也没有认真地设计与实现,这将使其他方面的设计难以真正实现。

数据分割是指把数据分散到各自的物理单元中去,使它们能独立地处理。

分割是数据仓库中继粒度问题之后的第2个主要的设计问题。

图3-42 数据分割处理例如,在第2章用到的foodmart 2000.mdb中,由于设计该数据库的时候考虑到了它将要作为数据仓库使用,因此,对于销售事实按照年份分割成了sales_fact_1997、sales_fact_1998和sales_fact_dec_1998 3个表,对库存事实则分割成了inventory_fact_1997和inventory_fact_1998两个表,如图3-43所示。

相关文档
最新文档