维表和事实表介绍

  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年。真实档案级的数据包括每个生产活动的详细记录。

错误!

相关文档
最新文档