数据仓库中的数据粒度确定原则

数据分析在决策支持及趋势分析中发挥着重要的作用。通常数据仓库中包含大量数据表,如何在软硬件资源确定的情况下,正确划分数据粒度,确保数据满足客户的决策分析需求,成了数据仓库逻辑设计的一个重要方面。

1 确定数据粒度的基本准则

    数据粒度是指数据仓库中保存数据的细化或综合程度。数据仓库中包含大量数据表,这些数据表中的数据以什么粒度来存储,会对信息系统的多方面产生影响。在做 数据仓库设计时,设计者确定以数据的什么层次作为粒度的划分标准,将直接影响到数据仓库中数据的存储量及查询质量,并进一步影响到系统是否能满足最终用户 的分析需求。一般情况下,根据数据粒度划分标准可以将数据仓库中的数据划分为:详细数据、轻度总结、高度总结三级或更多级。在确定数据粒度时,应注意的一 条原则是:细化程度越高,粒度越小;细化程度越低,粒度越大。确定数据粒度是数据仓库设计的基础,当数据粒度合理确定后,设计和实现的其他问题就会变得非 常容易,相反,如果没有合理地确定粒度,后续的工作就会很难进行下去。

2 数据粒度划分基本方法

    在数据仓库逻辑设计过程中如何确定数据粒度,目前还没有一个精确度量的方法,设计者应将考虑的重点放在数据仓库中数据的存储量大小及数据是否满足最终客户 需求上。下面以笔者参与的证券行业数据仓库设计过程中数据粒度划分为例,来说明数据粒度准则在实际工作中如何应用。

    证券行业属于数据密集型企业,在日常的工作中积累了大量交易、财务、财经数据。这些海量的数据长期处于无价值状态,如何充分利用这些数据,从这些数据中发 现有价值的信息呢?建立数据仓库是证券公司一个不错的选择。利用数据仓库提供的强大数据分析能力,能使证券公司在提升客户服务、提高资产质量、降低成本上 起到非常重要的作用。数据仓库具有面向主题的、集成的、相对稳定的、非易失性等特点。那么,证券行业数据仓库中数据粒度如何确定呢?首先是数据存储量的估 算,在这里我们不可能知道精确的存储量,但可采用粗略估算的方法来估算数据仓库中将要使用到的DASD(直接存取存储设备)数量。面对数据仓库中确定的各 主题域,设计者要建立若干事实表,对每一个表中可能存储的最多和最少数据进行估算是估算DASD的第一步。在估算过程中我们同样不可能知道每个表的精确行 数,这里可以以数量级为估算单位初步估计行数的上下限。对于未来数据量变化趋势,则只能以市场变化情况为依据来估算数据量的变化情况。例如证券行业,可以 根据过去若干年的客户变化情况,估计未来一年内客户数量的变化,进而估计5~10年的变化情况(注意要估算最多和最少的情况)。对每个事实表进行如上估算 后,结合估算事实表的索引项大小,可以计算出最大、最小的DASD数。笔者参与的证券行业数据仓库系统以Oracle作为DBMS,得到数据量估算表(见 表1)。

图片点击可在新窗口打开查看


表1 数据量估算表

    从表1我们得到了DASD的最大最小估算数据和行数的最大最小估算值,紧接着就是确定数据粒度了。这时可以参照行业经验值来确定是否需要双重或多重粒度, 但不管经验值如何,笔者认为除非是轻量级的数据仓库,一般均需要双重粒度,大多数情况下数据仓库需要多重粒度。表2是行业经验值。


图片点击可在新窗口打开查看

表2 数据粒度经验值
 

     通过以上两个步骤,我们对数据仓库设计有一个初步认识,下面是如何确定数据粒度级别。如果数据仓库只需要单一粒度,则数据粒度的级别就没有很高的讨论价 值,所以笔者认为数据粒度级别是针对多重粒度而言出现的一个概念。什么是数据粒度级别?笔者参考了大量数据仓库书籍,对数据粒度级别均没有明确的定义。笔 者认为数据粒度级别应该着重分析“级别”二字,其分析的对象是主题领域中某个确定的“维度”。例如对客户交易在时间维度上进行分析,那么就可以将数据粒度 级别理解为:你准备在时间维上按什么标准来对数据进行处理。对于双重粒度和多重粒度的级别设计问题,没有一个特别可行的方法来指导我们设计,唯一可行的办 法是采用猜测方法。在做数据仓库设计时,你无法得到精确的需求,对DSS分析员来说,只有你拿出了具体的设计方案后,他们才能将有用的信息反馈给你,所以 猜测法的出发点是DSS分析员的大概需求和你的实际经验。总的来说,针对特定的主题域、特定的维度到底在何种级别上建立汇总数据,要根据项目大小来做决 定,在太低细节级数据上建立汇总会使该汇总没有任何实际意义,处理数据时将消耗大量资源;在太高细节级上建立汇总数据将会使处理时过多依赖真实档案。笔者 在设计证券行业数据仓库时,粒度级别是这样确定的:如果要对客户交易行为分析,可以确定如下分析维度,交易方式(现场、非现场)、交易手段(互联网、电 话、热键、刷卡)、交易时间等等。现在DSS分析员要对客户的交易手段进行分析,在设计数据仓库时,多重粒度的设计是毫无疑问的了,那么数据粒度级别如何 确定呢? 你在时间维上按什么来汇总数据确保DSS分析员做分析时能得到他们需要的数据呢?首先考虑的是在详细数据的基础上以较低级别来汇总数据(如以交易日为单 位),那么做年度数据分析时,系统必然要消耗很大资源;但如果在较高级别上汇总数据(以年为单位),则极有可能需要向下挖掘数据来分析其月或者日的数据。 因此,你唯一可行的办法是猜测,进而与DSS分析员交流来确定数据粒度级别。在这里,笔者采用三重粒度设计方案,数据仓库中包括详细数据、按月汇总数据、 按年汇总数据。经过上述几个步骤,基本符合要求的数据粒度已经确立,在最终确定以前必须与用户反复讨论,确定数据粒度划分是否符合所有主题域分析需求。

3 结束语

    选择合适的粒度级别是数据仓库建设好坏的重要关键内容。选择粒度级别的一般方法,是先利用常识建立数据仓库的一小部分,并让用户去访问这些数据;然后根据 系统运行情况及客户的反映,适当调整粒度的级别。在设计数据粒度时,通常需重点考虑以下因素:(1)要接受的分析类型、可接受的数据最低粒度和能存储的数 据量;(2)粒度的层次定义越高,就越不能在该仓库中进行更细致的分析;(3)在同一模式中使用多重粒度;(4)如果存储资源有一定的限制,就只能采用较 高粒度的数据粒度划分策;(5)粒度的确定实质上是业务决策分析、硬件、软件和数据仓库使用方法的一个折衷;(6)数据粒度划分策略一定要保证数据的粒度 确实能够满足用户的决策分析需要,这是数据粒度划分策略中最重要的一个准则。
posted @ 2009-04-08 18:34  JerryNee  阅读(4470)  评论(1编辑  收藏  举报