|
数据分析讲堂
第四课 设计和实现OLAP模型的实践步骤
第七讲 更复杂的聚合与分析
如在本讲开头所述,存在很多不同的方法允许你顺序地定义和实现OLAP模型。根据你自己的情况,你可以考虑或者不考虑更复杂的问题。然而,一般地,你很可能需要先把所有的基本聚合搞通。我感觉本讲之中的问题对某些人来说,可能在某些情况下出现。本讲不讨论如何建立决策树这类分析技术,也不讨论进行聚合分析或定义带约束的优化。相反,我们关注的是,在多维环境中出现的可能影响分析过程的派生说明。 1. 非叶子输入数据 数据并不总是叶子或基本等级输入立方体。我们看一些或本分配的例子,这些例子也是沿着与销售信息集合一样的产品层次结构进行运行的。成本数据在层次结构的最顶层输入立方体,然后向下分配。记住,输入和派生的属性是数据的功能而不是维成员的。 从实践的角度来说,你需要能够识别不再基本等级输入立方体的数据,并且要了解什么时候公式依赖的输入数据来源于非叶子等级,尤其是存在叶子等级数据时。 需要了解存在非叶子等级数据的一个原因是,并不是所有的产品都同等程度接受非叶子等级输入数据。如在本讲前面讨论的,数据共享相同的层次结构但却不共享相同的聚合等级的情况有很多。回忆前面销售立方体的例子,那里销售数据在商店等级输入,而宏观经济数据在国家等级输入。假设你所用的产品支持叶子等级数据输入,只要数据仅仅在非叶子等级输入就不应该存在任何问题。 如果相同的变量既要在叶子等级输入又要在非叶子等级输入,事情就变得很棘手了。考虑一个销售模型,销售数据通常在商店等级输入然后向上聚合。现在想象销售副总要做一个演示文稿,需要包含当前所有地区销售及其聚合的图表,但有一些涉及商店的数据还没有输入系统。最简单的解决方法是让地区销售经理手工输入本地区销售额的估计值,然后再把地区销售聚合到国家等级,要很好地实现此目标,需要多维系统能够对只输入估计值的地区等级进行聚合,如果系统只处理它已有的基本等级数据而忽略估计值,就会产生不正确的结果。 你可能也需要在所有的商店报告他们的销售之前禁止对基本等级的销售数据进行聚合。同样,你需要确保你所用的工具提供此项支持。 党公式需要存取同一个立方体内多个等级的数据时,我感到把公式写下来是有益的,至少对自己头脑中的模型来说是如此,公式中包含输入到公式的聚合等级。对前面的例子,我会写出如下公式: Sales, Geography.countries. = Sum ( Sales, Geography.regions. ) 2. 名词性的、顺序的和基数的分析 在一个有商店、时间、产品和销售变量维的立方体内,你可以跨越商店、产品、时间的任何组合进行销售的比较。在这个意义上说,变量的分析是相对于立方体的维结构发生的。接下来的问题是:更复杂的分析又是怎样的呢? 你执行诸如相关、回归、聚类、预测这些更复杂分析的能力,受到你的数据和维德定量结构的限制。换句话说,你的数据和维是名词性的、顺序的,还是基数的、典型的,除了时间维通常有基数和定量结构外,你的所有味都是名词性的,这意味着维德成员之间并不存在定量关系,相反,除了等级和其他分组,你的所有数字数据都是基数的。由于名词的、顺序的和基数的数据看起来都一样,你需要小心处理。 最重要的确保你不会试图在非基数的维和数据上,执行需要基数类型的维和数据的分析,如回归。例如,你不会希望在典型名词性结构的产品维上运行与成本相对的销售回归,你可以得到结果,但没有任何意义。 3. 稀疏性 大多数多维模型具有一定程度的稀疏性,稀疏性在前面已经进行了讨论。在设计和实现OLAP系统时,你需要了解下列信息: l 数据稀疏性有多大? l 哪些维组合是稀疏的,哪些是稠密的? l 稀疏性的类型有哪些? 根据你所采用的工具,你可能需要也可能不需要面对前两个问题。有些工具自动判断数据中存在的系数性,并在存贮上做相应的调整。另一些工具需要你来决定你的数据是否是稀疏的,并且如果是的话,哪些维组合是最稀疏的。 你可以通过计算模型基础等级交叉点的个数(等于每一维叶子成员个数的乘积),然后除以每个变量基础等级数据点的个数来回答第一个问题,这将给出你每个变量在模型基础等级上的稀疏性。 第二个问题回答起来比较困难,甚至可能不存在明确的答案。此问题的另一种表达方式是:你可以用哪些维分割立方体而得到相对稠密的立方体?稠密子立方体的维,于是被称为稠密维组合,用于分割的维称为稀疏维组合。无论如何,不仅为了解决此问题,而且这对理解数据也有所帮助。 你可以通过找出最有意义的稀疏纪录来取代术语0值、缺失值和不适用的方式来尝试解决第三个问题。在处理第二个问题时,为了领会稀疏的含义你需要对数据有所了解。例如,在零售模型中,你可能在装饰品、1月、佛罗里达和销售上发现稀疏交叉点,你可能猜测稀疏意味着数字0。可能是这样的,但在没有定义稀疏交叉点元数据意义描述的情况下,它可以有任何意义。可能是装饰品没有在佛罗里达销售,装饰品的数据或佛罗里达的数据缺失,或佛罗里达1月装饰品的销售量是0。 典型地,对零售数据来说,稀疏交叉点意味着0。然而,如果存在客户维,稀疏交叉点很可能意味着不适用,这是因为大部分客户只与小部分业务相关。对财务数据来说,稀疏交叉点通常指的是不适用的指示,比如一个公司过去12个月的股票价格只公开了6个月。在市场和运输模型中,模型稀疏性通常也是一个不适用的指示,可能一些特定的产品没有通过特定的渠道和运输段组合来销售。在社会经济学模型中,稀疏交叉点常常表示的是缺失数据。 确保你了解你所用的工具关于不存在的数据和0值数据所做的任何假定。不能区分0和无意义数据的产品,在批量处理用0值更新原来非0值单元的数据时会带来问题。这种产品会把0值单元当成无意义的值并忽略它们,因此不能正确地覆盖最初输入的非0值。 这里也一样,如果你不能确信你正在做什么,先检查以确保数据中存在稀疏。对于存储目的来说,你可以忽略在30%左右以下的稀疏性,但对计算目的来说,即使一个稀疏单元也会使你的计算出错。由于有些产品假定稀疏交叉点意味着0值,你需要确认它们确实是这个含义。 在你完成对聚合函数的定义以后,手工检查这些聚合是有意义的。由于你需要查看每一个输入数字来执行手工检查,你应该切割一个足够小的切片来检查每一个数字。一旦尼切割出一个工作切片,就对它进行检查,以确保如果稀疏单元是不适用的就在计算中将它们省去,这意味着它们不会进入平均值计算的分母。在求和计算中,你也应该计算一下有意义单元的个数,这样聚合结果的查看者也可以了解有多大比例的单元参加了聚合。如果有缺失值,也要执行检查,以确保对缺失值使用了替代值,或者被排除在计算之外。 4. 审核 最后一个需要处理的问题是建立可审核的模型。当有人在使用模型时,你希望他/她能容易地知道任何一片数据是否已经输入或提交。 l 如果数据是输入的,提出如下问题: l 数据来源于何处? l 存在多个数据源吗? l 源数据以什么频率进行刷新? l 哪些人对数据有写的特权? l 哪些人有读的权限? l 如果数据是派生的,提出如下问题: l 谁定义的公式? l 公式的类型是什么? l 存在那种公式的复杂性? l 公式存在那种类型的修改历史? 你需要知道是否存在关于模型任何部分的注释,比如维结构、层次结构、聚合公式等等。 你所能做的最好的事情是,在涉及模型时跟踪所有相关的元数据,并知道你缺的元数据是什么,你打算如何得到它。由于不是所有的产品对审核和注释都提供相同的支持,你应该检查你的工具是否以依赖跟踪的形式提供审核跟踪,如果是,又跟踪了什么等级的细节相关性。
|
一共有 4 条评论
Erik Thomsen著 电子工业出版社
http://www.chinakdd.com,