聚合规则

每个度量都具有一个常规聚合。 除了常规聚合,还可以使用聚合规则。 聚合规则定义了一个度量如何按照一个或多个维度进行聚合。 度量聚合方法如下:首先将常规聚合应用到聚合规则未指定的所有维度,然后按照列出的顺序应用聚合规则。

聚合规则可以为
  • 分布式(计数、总和、最大值、最小值)
  • 非分布式(平均值、标准偏差、偏差)
  • 时间状态(第一个、最后一个、当前时间段)
分布式度量可以从一个级别聚合到下一个级别。 现有聚合值可用于计算较高级别的聚合。 非分布式度量必须从基本资料表数据进行计算。 它们无法从一个级别聚合到下一个级别。

非分布式度量

非分布式度量必须始终从详细资料表颗粒进行聚合,并且无法从一个汇总级别聚合到下一个汇总级别。

非分布式度量是使用诸如以下非分布式聚合规则定义的度量:

  • 计数差异
  • 平均值
  • 标准差
  • 差异

仅当聚合表从 SQL 查询的确切级别组进行计算时,才可使用聚合表。 如果没有聚合表完全匹配所需的累积,那么必须从资料表计算聚合值。 因此,针对较大资料表在较高级别聚合非分布式度量所花费的计算时间可能比可以利用外部聚合表的度量所花费的时间长

动态多维数据集将非分布式度量值存储在其数据高速缓存中,以供未来使用。

当在查询中计算汇总值时,非分布式度量要求每个汇总有一个单独的 SQL 查询。 这些汇总值是特定于查询的值,并且不会存储在数据高速缓存中。

对于带有行/列汇总的交叉表报表,每个汇总需要单独的 SQL 查询,根据基础数据库,这可能会对查询性能造成影响。

与非分布式度量不同,分布式度量可始终从一个级别聚合到下一个级别。 例如,某个季度的“销售”总和可通过汇总每个月的销售数据进行计算。

时间状态聚合规则

第一个最后一个当前时间段聚合规则表示某个度量在特定时间的状态。 它们通常用于库存或帐户余额。 使用时间状态聚集规则时,需要考虑以下几点:
  • 时间状态聚合规则按照资料表的详细程度进行计算。 如果事实表的粒度级别低于与具有 第一个聚集规则, 最后一个聚集规则或 当前时间段 聚集规则的度量相关联的维度, IBM® Cognos® Cube Designer 发出警告。
  • 跨多个多维数据集时无法正确计算聚合。 如果虚拟多维数据集包含底层基本度量具有聚集规则的度量,那么 Cognos Cube Designer 会发出警告。 仅当项目模型中存在包含聚合规则的基础多维数据集时,才会发出该警告。
  • 如果没有值与聚合规则的相应叶级别成员相关联,那么度量值为 NULL。
  • 时间状态聚合规则不受成员安全性影响。
  • 时间状态聚合规则不受属性安全性影响。
  • 父子层次结构不支持时间状态聚合规则。
  • 如果为用户保护时间状态聚合规则所基于的维度的安全,那么会按照为维度安全性建立的规则,将度量值计算为该维度的默认成员的相应值。
必须更正错误,才能发布多维数据集。 警告为参考信息,不会阻止多维数据集的发布。

第一

第一个聚合规则提供的度量值与特定维度(为其定义了半聚合规则)的当前成员的第一个叶级别后代相关联。 例如,时间层次结构包含年、季度和月,并且您要检查季度级别的数据。 针对每个季度,“第一个”规则会报告该季度第一个月的度量值。 当您检查年级别的数据时,该规则会报告每年第一个季度中第一个月的第一个值。

最后

最后一个聚合规则提供的度量值与特定维度(为其定义了半聚合规则)的当前成员的最后一个叶级别后代相关联。 例如,如果时间层次结构包含年、季度和月,并且您要检查季度级别的数据,那么针对每个季度,“最后一个时间段”规则会报告每个季度最后一个月的度量值。 当您检查年级别的数据时,它会报告每年最后一个季度中最后一个月的值。

本期

当前时间段聚合规则提供的度量值与特定“时间”维度(对应于“当前时间段”相对时间成员)的当前成员的叶级别后代相关联。 如果当前时间段不是当前成员的后代,那么它会提供“最后一个”叶级别后代的值。 例如,时间维度包含年、季度和月,并且第 1 季度从 1 月开始。 当前时间段设置为 2007 年 4 月。 在年级别,当前时间段选项会报告 2007 年 4 月的度量值。 在季度级别,该选项会报告第 2 季度中 4 月的度量值,因为 4 月是当前时间段,但它显示其他每个季度的最后一个有效月份的值;即,第 1 季度的 3 月,第 3 季度的 9 月和第 4 季度的 12 月。

仅当相对于标识为时间维度的维度进行定义时,才支持 当前时间段 聚集。 关联的维度必须是时间维度,并且时间维度中的每个层次结构都必须启用相对时间属性。

无法同时在层次结构上启用相对时间和安全性。 因此,受保护的时间层次结构上不支持当前时间段

带有多层次结构维度的时间状态聚合规则

针对带有相对于多层次结构维度的时间状态聚合规则的度量,会根据以下规则计算元组值:

规则 1:

如果元组具有来自多层次结构维度的任一层次结构的非 ALL 成员,那么针对时间状态聚合规则,仅非 ALL 成员会解析为对应的叶级别成员。

例如,“时间”维度具有两个层次结构:Time.Actual 和 Time.Fiscal。 两者都具有 ALL 成员。 Closing Inventory 度量的聚合规则为“最后一个”。

元组 (Closing Inventory, Time.Actual.ALL, Time.Fiscal.2012) 解析为: (Closing Inventory, Time.Actual.ALL, Time.Fiscal.2013Jan)。 结果为 Closing Inventory for 2013Jan ,因为聚合规则为“最后一个”,2013Jan 是 2012 财年的最后一个月。

元组 (Closing Inventory, Time.Actual.2012, Time.Fiscal.2012) 解析为 (Closing Inventory, Time.Actual.2012Dec, Time.Actual.2013Jan)。 结果为空,因为“时间”成员解析为排除任何资料数据的不同月份。

规则 2

如果元组仅表达来自多层次结构维度的 ALL 成员,那么针对时间状态聚合规则仅解析默认层次结构的默认成员。

例如,层次结构 Time.Actual 和 Time.Fiscal 都具有 ALL 成员。 Time.Actual.ALL 是默认层次结构的默认成员。

元组 (Closing Inventory, Time.Actual.ALL, Time.Fiscal.ALL) 解析为 (Closing Inventory, Time.Actual.2012Dec, Time.Fiscal.ALL)。结果为 Closing Inventory for 2012Dec