数据粒度
出自 MBA智库百科(https://wiki.mbalib.com/)
目录 |
数据粒度是属于商业智能(BI)中数据仓库里的相关概念,所谓商业智能是指将数据转换百成信息的过程,然后通过发现将信息转化度为知识,实质上即是通过应用基于事实的支持系统来辅助商业决策的制定,有利于商务管理的信息化管理。
数据粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别。细化程度越高,粒度级就越小;相反,细化程度越低,粒度级就越大。确定粒度是数据仓库开发人员须要面对的一个重要的设计问题。假设数据仓库的粒度确定合理。设计和实现中的其余方面就能够很顺畅地进行;反之,假设粒度确定的不合理就会是其它全部方面都很难进行。粒度的大小需要数据仓库在设计时在数据量大小与查询的详细程度之间作出权衡。[1]
粒度对于数据仓库体系结构设计人员来说,十分重要。粒度会影响存放在数据仓库中的数据量的大小,同时影响数据仓库所能回答的查询类型。粒度的主要问题是使其处于一个合适的级别,粒度的级别既不能太高也不能太低。低的粒度级别能提供详尽的数据。但要占用较多的存储空间和须要较长的查询时间。高的粒度级别能高速方便的进行查询。但不能提供过细的数据。在选择合适粒度级别的过程中,要结合业务的特点、分析的类型、依据的总的存储空间的等因素综合考虑。
数据仓库中的粒度模型[1]
所谓粒度,指的是数据仓库中数据单元的细节程度或综合程度的级别。在数据仓库中记录数据或对数据进行综合时所使用的时间段參数。它决定了数据仓库中所存储的数据单元在时间上的具体程度和级别。
粒度可分为两种形式:
第一种形式的粒度是对数据仓库中数据综合程度高低的一个度量,它既影响到数据仓库中数据量的多少,也能影响到数据仓库所能回答的讯问的种类。粒度越小,则详细程度越高,综合程度就越低,回答询问的种类也越多;相反,粒度越大,则详细程度越低,综合程度就越高,回答询问的种类也就越少。
另一种形式的粒度是样本数据库粒度,与通常意义下的粒度不同,样本数据库的粒度级别不是根据综合程度的不同来划分的,而是根据采样率的高低来划分的。采样粒度不同的样本数据库可以具有相同的综合级别。 样本数据库一般是以一定的采样率从细节档案数据或轻度综.合数据中抽取的一个子集。它不是一般目的的数据库,而是根据一定需求从数据源中获得的一个样本,因而也就不能回答一些细节性的问题。
样本数据库的抽取可以按照数据的重要程度不同来进行。粒度的划分是数据仓库设计工作中一项重要内容。
数据粒度带来的好处[1]
数据仓库中粒度化的数据是重用性的关键,这是因为它可以有众多的用户以不同的方式使用。如:数据可以同时满足市场、销售和财务部门的需要。3个部门见到的数据基本上是相同的。市场部可以了解各地区每月的销售情况,销售部也可以了解每周各地区不同销售人员的销售情况,财务部可以了解各生产线的季度收入情况。粒度化带米的另一个好处是其中包含了整个企业的活动和事件的历史。而且粒度的级别足够详细使得整个企业的数据为满足不同的需而进行重构。
数据仓库中的数据粒度的确定原则[2]
1、确定数据粒度的基本准则
在做数据仓库设计时,设计者确定以数据的什么层次作为粒度的划分标准,将直接影响到数据仓库中数据的存储量及查询质量,并进一步影响到系统是否能满足最终用户的分析需求。
一般情况下,根据数据粒度划分标准可以将数据仓库中的数据划分为:详细数据、轻度总结、高度总结三级或更多级。在确定数据粒度时,应注意的一条原则是:细化程度越高,粒度越小;细化程度越低,粒度越大。确定数据粒度是数据仓库设计的基础,当数据粒度合理确定后,设计和实现的其他问题就会变得非常容易,相反,如果没有合理地确定粒度,后续的工作就会很难进行下去。
2、数据粒度划分基本方法
在数据仓库逻辑设计过程中如何确定数据粒度,目前还没有一个精确度量的方法,设计者应将考虑的重点放在数据仓库中数据的存储量大小及数据是否满足最终客户需求上。
以参与的证券行业数据仓库设计过程中数据粒度划分为例,来说明数据粒度准则在实际工作中如何应用。证券行业属于数据密集型企业,在日常的工作中积累了大量交易、财务、财经数据。证券公司通过建立数据仓库可以充分利用这些数据,从这些数据中发现有价值的信息。利用数据仓库提供的强大数据分析能力,能使证券公司在提升客户服务、提高资产质量、降低成本上起到非常重要的作用。数据仓库具有面向主题的、集成的、相对稳定的、非易失性等特点。
那么,证券行业数据仓库中数据粒度如何确定呢?首先是数据存储量的估算,在这里我们不可能知道精确的存储量,但可采用粗略估算的方法来估算数据仓库中将要使用到的DASD(直接存取存储设备)数量。面对数据仓库中确定的各主题域,设计者要建立若干事实表,对每一个表中可能存储的最多和最少数据进行估算是估算DASD的第一步。在估算过程中我们同样不可能知道每个表的精确行数,这里可以以数量级为估算单位初步估计行数的上下限。对于未来数据量变化趋势,则只能以市场变化情况为依据来估算数据量的变化情况。例如证券行业,可以根据过去若干年的客户变化情况,估计未来一年内客户数量的变化,进而估计5~10年的变化情况(注意要估算最多和最少的情况)。对每个事实表进行如上估算后,结合估算事实表的索引项大小,可以计算出最大、最小的DASD数。如证券行业数据仓库系统以Oracle作为DBMS,得到数据量估算表。(如表1)
表1 数据量估算表
表空间名 表空间说明 用途 MIN(M) MAX(M) SYSTEM 系统表空间 系统 X1 Y1 TEMPI 系统临时表空间 X2 Y2 TOLS 系统应用表空间 X3 Y3 TOLS 系统用户表空间 X4 Y4 小计 T1 T2 TS_ORIGEN_TABLE 原始层表 事实表 行大小*MIN(行数)* 行大小*MAX(行数)* TS_DC_IDX 数据中心索引表空间 估计索引项大小 估计索引项大小 总计 S1 S2
从表1我们得到了DASD的最大最小估算数据和行数的最大最小估算值,紧接着就是确定数据粒度了。这时可以参照行业经验值来确定是否需要双重或多重粒度, 但不管经验值如何,笔者认为除非是轻量级的数据仓库,一般均需要双重粒度,大多数情况下数据仓库需要多重粒度。表2是行业经验值。
表2 数据粒度经验值
一年期 两年期 10,000,000行 双重粒度级 20,000,000行 双重粒度级 1,000,000行 双重粒度 10,000,000行 双重粒度 100,000行 都可以 1,000,000行 都可以 10,000行 都可以 100,000行 都可以
通过以上两个步骤,我们对数据仓库设计有一个初步认识,下面是如何确定数据粒度级别。
如果数据仓库只需要单一粒度,则数据粒度的级别就没有很高的讨论价值,所以数据粒度级别是针对多重粒度而言出现的一个概念。什么是数据粒度级别?数据粒度级别应该着重分析“级别”二字,其分析的对象是主题领域中某个确定的“维度”。例如对客户交易在时间维度上进行分析,那么就可以将数据粒度级别理解为:你准备在时间维上按什么标准来对数据进行处理。对于双重粒度和多重粒度的级别设计问题,没有一个特别可行的方法来指导我们设计,唯一可行的办法是采用猜测方法。在做数据仓库设计时,你无法得到精确的需求,对DSS分析员来说,只有你拿出了具体的设计方案后,他们才能将有用的信息反馈给你,所以猜测法的出发点是DSS分析员的大概需求和你的实际经验。总的来说,针对特定的主题域、特定的维度到底在何种级别上建立汇总数据,要根据项目大小来做决定,在太低细节级数据上建立汇总会使该汇总没有任何实际意义,处理数据时将消耗大量资源;在太高细节级上建立汇总数据将会使处理时过多依赖真实档案。笔者在设计证券行业数据仓库时,粒度级别是这样确定的:如果要对客户交易行为分析,可以确定如下分析维度,交易方式(现场、非现场)、交易手段(互联网、电话、热键、刷卡)、交易时间等等。现在DSS分析员要对客户的交易手段进行分析,在设计数据仓库时,多重粒度的设计是毫无疑问的了,那么数据粒度级别如何确定呢?你在时间维上按什么来汇总数据确保DSS分析员做分析时能得到他们需要的数据呢?首先考虑的是在详细数据的基础上以较低级别来汇总数据(如以交易日为单位),那么做年度数据分析时,系统必然要消耗很大资源;但如果在较高级别上汇总数据(以年为单位),则极有可能需要向下挖掘数据来分析其月或者日的数据。 因此,你唯一可行的办法是猜测,进而与DSS分析员交流来确定数据粒度级别。在这里,采用三重粒度设计方案,数据仓库中包括详细数据、按月汇总数据、按年汇总数据。经过上述几个步骤,基本符合要求的数据粒度已经确立,在最终确定以前必须与用户反复讨论,确定数据粒度划分是否符合所有主题域分析需求。