计算属性数据

Essbase 使用 Essbase 创建的系统定义维中的成员,在检索时动态计算属性数据。使用此维,可以对同一属性应用不同的计算函数,例如总和或平均值。

还可以对属性维的成员执行特定计算;例如,按盎司大小的产品确定盈利能力。

以下信息假定您了解属性维和 Essbase 计算(包括动态计算)的概念。请参阅以下部分。

属性计算维

在多维数据集中实施属性时,将自动为属性计算添加仅标签的动态计算维。Essbase 使用它在检索时计算属性数据。

在大纲中创建第一个属性维时, Essbase 将创建属性计算维,该维由五个成员组成,默认名称为“总和”、“计数”、“最小值”(最小值)、“最大值”(最大值)和“平均值”(平均值)。您可以在电子表格或报表中使用这些成员来动态计算和报告属性数据,例如西部的 12 盎司可乐瓶的平均年销售额。

“属性计算”维在大纲中不可见。无论您在何处选择维成员(如 Smart View 中),都可以看到它。

属性计算维具有以下属性:

  • 系统定义

    在应用程序中创建第一个属性维时, Essbase 会创建属性计算维及其成员(总和、计数、最小值、最大值和平均值)。每个成员表示要对属性执行的计算类型。

    请参阅属性计算维的默认成员

  • 仅标签

    与所有仅标签维一样,“属性计算”维共享其第一个子项“总和”的值。

    请参见 Member Storage Properties

  • 动态计算

    属性计算维中的数据在用户请求时计算,然后被丢弃。您不能在数据库中存储计算的属性数据。

    请参阅动态计算数据值

  • 未显示在大纲编辑器

    “属性计算”维不显示在大纲编辑器中。此维中的成员可以在电子表格和报表中查看。

没有沿属性维进行合并。无法使用合并符号(例如 + 或 -)或成员公式标记属性维中的成员,以计算属性数据。作为动态计算成员,属性计算不会影响按时间或计算顺序进行的批计算。

要在检索时计算属性数据, Essbase 将执行以下任务:

  1. 查找与当前查询中存在的属性维成员关联的基维成员。

  2. 为当前查询的属性 - 成员组合动态计算总和、计数、最小值、最大值或平均值。

  3. 在电子表格或报告中显示结果。

  4. 放弃计算的值,即这些值不存储在数据库中。

    注意:

    Essbase 在计算属性数据时不包括 #MISSING 值。

例如,如图 6-2 中所示,电子表格用户在电子表格报表中指定属性维(Ounces_16 和 Bottle)的两个成员和一个属性计算成员(平均)。检索时, Essbase 会为当前成员组合(实际 -> 销售 -> 东 -> Qtr1)动态计算与这些属性关联的所有产品的平均销售值:

图 6-2 检索属性计算成员


此图显示了属性计算维的查询成员,如图像前面的文本中所述。

请参阅在 Smart View 中访问属性计算成员

属性计算维的默认成员

Essbase 属性计算维包含用于计算和报告属性数据的五个成员(总计、计数、最小值、最大值和平均值)。

总和 - 计算具有属性或属性组合的成员值的总和或总和。

计数 - 计算具有指定属性或属性组合的成员数,该属性存在数据值。计数仅包括那些存在数据块的成员。要计算具有特定属性的所有成员的计数,而不管这些成员是否具有数据值,请将 @COUNT 函数与 @ATTRIBUTE 函数结合使用。

平均值 - 计算指定属性或属性组合的非缺失值的数学平均值或平均值(总和除以计数)。

最小值 - 计算指定属性或属性组合的最小数据值。

最大值 - 计算指定属性或属性组合的最大数据值。

注意:

这些计算都不包括 #MISSING 值。

您可以更改这些默认成员名称,但须遵循与标准成员相同的命名惯例。请参阅更改属性计算维的成员名称

属性计算示例

作为 Essbase 如何计算属性数据的示例,属性计算用于计算包装在瓶子和罐子中的产品的总和、计数、平均值、最小值和最大销售额。

请考虑以下东方的年度销售数据:

表 6-3:属性数据示例

基本维成员 关联属性 属性 - 成员组合的销售值

Cola

盎司 _12,罐

23205

减肥可乐

盎司 _12,罐

3068

饮食奶油

盎司 _12,罐

1074

Grape

盎司 _32,瓶子

6398

Orange

盎司 _32,瓶子

3183

草莓

盎司 _32,瓶子

5664

图 6-3 显示了计算属性数据在电子表格报表中的外观。可以检索属性的多个属性计算成员。例如,可以计算瓶子和罐子的总和、计数、平均值、最小值和最大值。

图 6-3 包含属性数据的电子表格样例


此图显示了基于图像上方表中提供的示例属性数据的示例电子表格。

访问 Smart View 中的属性计算成员

您可以从 Smart View 中的 Essbase 属性计算维访问成员。

在电子表格中,用户可以使用以下任一方法查看属性计算维成员:

  • 直接将成员输入工作表

  • 从查询设计器中选择成员

  • 以 EssCell 参数形式输入成员

属性计算和检索性能

要优化 Essbase 中的属性查询,请确保属性维是唯一的稀疏动态计算维,在密集维之后定位稀疏维,在检索之前向下钻取到基本维的最低级别,并根据基本维的属性对基本维的成员进行分组。

要优化属性计算和检索性能,请考虑以下事项:

  • 属性计算的计算顺序与动态计算的计算顺序相同。请参阅动态计算的计算顺序

  • 由于 Essbase 在检索时动态计算属性数据,因此属性计算不会影响整体(批)数据库计算的性能。

  • 将基本维成员标记为 Dynamic Calc(动态计算)可能会增加检索时间。

  • 当查询包括 Sum 成员和其关联基本成员标记为双遍的属性维成员时,检索时间可能会很慢。

  • 要最大限度地提高属性检索性能,请使用以下任一方法:

    • 使用 Optimize Outline Performance with Attributes 中的提示配置大纲。

    • 在检索数据之前,向下钻取到最低级别的基本维。例如,在 Smart View 中,打开“无数据导航”功能,向下钻取到报告中包含的基本维的最低级别,然后检索数据。

    • 当基本维的成员与多个属性维关联时,请考虑根据其属性对基本维的成员进行分组。例如,在 Sample Basic 数据库中,可以对所有 8 盎司的产品进行分组。

计算公式中的属性

除了使用“属性计算”维来计算属性数据之外,还可以对标准维或基本维的成员使用公式来对 Essbase 属性维的成员执行计算。

例如,您可以将公式应用于“帐户”维中的成员,以按盎司确定按盎司大小的产品的盈利能力。

您不能将公式与属性维的成员关联。

注意:

在与双遍成员关联的公式中使用属性时,某些限制适用。请参见 Two-Pass Calculations on Attribute Dimensions 中有关双遍计算的行。

可以使用以下函数对属性执行计算:

表 6-4 计算属性的函数

函数 计算类型

@ATTRIBUTE (用于块存储)或 MDX ATTRIBUTE() (用于聚合存储)

使用特定属性生成所有基本成员的列表。例如,生成具有“瓶”属性的成员列表,然后为这些成员提高价格。

@ATTRIBUTEVAL

@ATTRIBUTEBVAL

@ATTRIBUTESVAL

返回与要计算的基本成员关联的 0 级属性成员的值。

  • 从数字或日期属性维(使用 @ATTRIBUTEVAL)

  • 从布尔值属性维(使用 @ATTRIBUTEBVAL)

  • 从文本属性维(使用 @ATTRIBUTESVAL)

例如,返回正在计算的基本成员(例如,Cola)的 size 属性的数值(例如,Ounces 下的成员 12 为 12)。

有关在公式中使用 @ATTRIBUTEVAL 的附加示例,请参阅计算属性公式

@TODATE (用于块存储)或 MDX TODATE() (用于聚合存储)

将日期字符串转换为数字进行计算。例如,将 @TODATE 与 @ATTRIBUTEVAL 函数结合使用,以增加在特定日期之后打开的门店的间接费用成本。

@WITHATTR (用于块存储)或 MDX WITHATTR() (用于聚合存储)

生成与满足指定条件的属性关联的基本维成员列表。例如,生成一个大于或等于 20 盎司的产品列表,然后为这些产品提高价格。

属性计算和共享成员

要避免属性计算出现意外结果,请避免将共享成员和存储成员混合到 Essbase 大纲的层次结构中。

属性计算从 0 级开始,并在第一个存储成员处停止。因此,如果大纲在大纲层次结构中的两个共享成员之间放置了一个存储成员,则计算结果可能不包括较高的共享成员。

在以下示例中,执行属性计算时,计算从级别 0 成员 2 开始,遇到第一个存储成员(即成员 A)时停止。因此,成员 1 不会包括在计算中。

Member 1 (stored)
   Member A (stored)
     Member 2 (shared)
Member B (stored)
   Member 1 (shared member whose prototype member is Member 1 above)

如果成员 2 未共享,或者成员 1 在大纲中的其他位置没有相应的共享成员,则计算结果将不如预期。

计算属性和非属性成员之间的差异

要使属性维成员的聚合与标准维成员的聚合保持一致,请考虑从属性层次中删除重复的共享成员,或者修改 Essbase 大纲以消除多个聚合路径。

属性维成员的计算方式与标准维中存储或动态计算成员的计算方式不同。

Essbase 聚合标准维中的成员时,父代成员的值基于聚合父代成员的子代成员的值,无论子代成员是 0 级成员还是高级别成员。所有子成员值都构成了父成员的值。

Essbase 为请求属性聚合的每个父成员聚合属性维中的成员时,将展开后代列表,以包括需要聚合的从属级别 0 数据块以计算父值。

考虑到这些差异,如果涉及共享成员并且存在多个聚合路径,则聚合属性维成员的结果可能与聚合标准维成员的结果不同。

要解决此问题,请在聚合属性层次下删除重复的共享成员,或者对大纲进行重新建模,以便不会有多个聚合路径。