可供选择的聚合
2008-04-02 10:49:24来源:互联网 阅读 ()
当人们想起 OLAP 多维数据集的结构时,他们通常想到的是一组分层维度和一组使用求和来确定度量值的度量。多维数据集通常包括通过使用求和来聚合的度量。现在存在各种其他的聚合类型,但 Analysis Services 并非对任何这些类型都提供本机支持。非传统聚合的一个典型示例是库存分析。当您分析库存时,您无需通过对三个月来的库存数字求和来确定每个季度的库存;您只需要使用该季度最后一个月的库存量。您能够在 Analysis Services 中轻松地实现这种聚合,但他不是您能够选择的本机聚合类型之一。我们先讨论本机类型,然后了解如何实现两个非本机聚合类型。www.c hinaitpower.comlFIdvBBw
本机聚合
首先,我们先提供一些术语。多维数据集单元是多维数据集中的一个位置,各个维度在该位置相交。就像您能够在 X、Y 和 Z 轴上使用数值来标识三维空间中的点相同,您能够使用每个维度中的成员来标识多维数据集中的单元。因为每个维度都有一个默认的成员,所以您不必显式列出每个维度的成员,就能够唯一地标识一个多维数据集单元。例如,元组 (USA, Drinks) 足以标识 FoodMart 2000 Sales 多维数据集中的一个唯一单元(虽然 Sales 多维数据集有 12 个维度),因为其他 10 个维度位于其默认成员的位置上(也就是说,他们已被占用,因此您无需对他们显式命名)。www.c hinaitpower.comlFIdvBBw
每个多维数据集单元对于多维数据集的每个度量都有一个值。有些多维数据集单元的度量值是加载的(也就是说,直接来自源数据),而有些多维数据集单元的度量值则是由聚合来确定的。聚合是 Analysis Services 通过对其他多维数据集单元执行某些数学函数来确定的值。简言之,任何叶级单元的值都是加载值,这意味着这些值是基于源数据计算的,而不是基于其他单元中的值计算的。非叶级单元值是聚合确定的。叶级单元是完全由最低层的维度成员(没有子级的维度成员)标识的单元。www.c hinaitpower.comlFIdvBBw
表 1 显示了 Analysis Services 的本机聚合类型(数学函数)和他们的说明。非重复计数是个特别类型,这里应该解释一下。Analysis Services 只允许一个多维数据集中有一个非重复计数度量,而且非重复计数度量的值从不聚合(即从不通过其他单元值来确定)。在处理多维数据集时,Analysis Services 直接从事实数据表派生非重复计数度量值。非重复计数值是由特定多维数据集单元所标识的非重复类型的事实数据表记录数来确定的。例如,假如多维数据集单元是 (1997, Beverages),则非重复计数就是 1997 年期间在 Beverages 产品类别中出现的不同类型的事实数据表记录的数量。当您创建非重复计数度量时,应在事实数据表中指定一列,用于确定事实数据表记录的类型。非重复计数度量不同于典型的计数度量,因为非重复计数不是事实数据表记录的计数,而是事实数据表中特定列的非重复值的计数。数据库管理员通常使用非重复计数来确定当一个以上的事实数据表记录来自同一个事务时存在的唯一事务的数量。www.c hinaitpower.comlFIdvBBw
本机聚合类型的一个特征是,Analysis Services 在任何多维数据集维度中用同样的方式来处理他们。非本机库存聚合则不具备这一特征。对库存量进行聚合时,您要对除 Time 维度之外的任何维度使用求和。您能够通过使用最后一个子级(也就是最近的值)对 Time 维度进行聚合。图 1显示了 Product 维度如何将各个库存总数聚合为一个总和,而 Time 维度则使用最后一个子级。www.c hinaitpower.comlFIdvBBw
非本机聚合
因为 Analysis Services 不提供对最后一个子级聚合的本机支持,所以您不得不自己创建聚合支持。对于如何实现此目的,您能够有几种选择。您能够在 Time 维度中使用计算度量、计算单元或自定义汇总公式。我倾向于使用将性能影响限制在多维数据集的最小百分比的方法。例如,FoodMart Sales 多维数据集包含除库存量度量之外的其他度量,因此我建议挑选一种不向其他度量增加额外处理的方法。Analysis Services 会计算每个度量的自定义汇总公式,因此自定义汇总不是解决这一问题的适当选择。您能够使用计算单元或计算度量方法来分离聚合处理,这样他只会影响库存量度量。当您在计算单元和计算度量之间进行选择时,您需要考虑两个情况。注意,计算单元只能随企业版的 SQL Server 提供。但计算度量在支持钻取的多维数据集中会出现问题,因为当您指定计算度量作为标识多维数据集的单元的元组(即成员列表)的一部分时,不能使用钻取操作。www.c hinaitpower.comlFIdvBBw
为了进行库存分析,我建议使用计算度量,这只是因为大多数 OLAP 前端工具都提供了创建计算度量的功能。例如,当您在 FoodMart Sales 多维数据集中使用以下计算度量公式时,他返回 [Unit Sales],就好象他是库存量相同:www.c hinaitpower.comlFIdvBBw
IIF( Time.CURRENTMEMBER.LEVEL .NAME <> "Month", Time.CURRENTMEMBER.LASTCHILD, (Time.CURRENTMEMBER, [Unit Sales]) )
这个递归公式确定当前 Time 成员的级别名称是否为 Time 维度中的最低级别,假如不是,则返回当前成员的最后一个子级。该公式的 LASTCHILD 部分使公式不断重新进行递归求值,直到级别的名称为 Month;然后,该公式返回当前 Month 的 Unit Sales 值。www.c hinaitpower.comlFIdvBBw
有些多维数据集不包含每个叶级 Time 成员的加载值。在那些多维数据集中,您不能使用上面那样简单的公式来确定度量的最近的值。我在构建一个用于跟踪软件缺陷的多维数据集时就碰到过这样的情况。该多维数据集是用包含缺陷状态转变的事实数据表构建的。软件质量确保流程通过 state 来跟踪缺陷,这些状态的名称包括 found but not assigned to a developer、assigned to a developer、fixed but awaiting the next product build、fixed but not verified 或 closed。缺陷状态转换就是从一种状态向另一种状态转换时发生缺陷的情况。例如,每个条目都包含缺陷 ID、说明、发生变化的日期、原来的状态和新的状态。我使用的事实数据表包含 date that the defect changed 状态、origination 状态和 destination 状态。要在多维数据集中创建一个返回任何时期的缺陷状态的度量,必须包括一个回溯到最近的 date that the defect changed 状态的公式:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: SQL Server 连接基础知识
下一篇: 构建基于 Web 的分析系统
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash