Hierarchies in ASO Cubes(ASO 多维数据集中的层次)

Essbase 大纲中的维包含相关级别和成员的一个或多个层次。层次结构是存储的或动态的。存储的层次根据大纲结构快速聚合。动态层次结构在检索时使用公式和解析顺序进行计算。替代层次结构是属性或共享成员的结构。

ASOsamp.Basic 数据库中的时间维包括层次结构 MTD、QTD 和 YTD:

图 36-1 大纲显示时间维上的多个层次和成员


此图显示为多个层次启用时间维的大纲。

在聚合存储多维数据集中,层次结构可以存储动态

维可以同时包含存储层次和动态层次。每种类型都有自己的优点和限制。要在维中使用多个层次(即使它们都是存储的层次),必须为该维启用多个层次。

将维成员标记为启用多个层次时,系统会自动仅为其标记标签。

如果未将维标记为启用多个层次,则该维将自动标记为存储的层次(标记为“帐户”的维除外,该维标记为动态层次)。

注意:

在已启用多个层次的维中,第一个层次必须是存储层次。

Essbase Web 界面中,您可以使用成员属性为维启用多个层次。

存储的层次结构

根据大纲结构聚合存储层次的成员。由于聚合存储数据库已针对聚合进行了优化,因此对存储层次的数据值进行聚合的速度非常快。要允许这种快速聚合,存储层次的成员具有以下限制:

  • 存储的层次可以具有无合并 (~) 运算符(仅标签下方的成员)或加 (+) 运算符。

  • 存储层次不能有公式。

存储的层次对仅标签成员有限制。请参见 Outline Differences for ASO

在下面显示的层次结构中,“所有商品”层次结构和“高端商品”层次结构是存储的层次结构。“All Merchandise(所有商品)”成员和“High End Merchandise(高端商品)”成员是层次结构的顶部,并且都标记为存储层次结构的顶部。

图 36-2 在产品维上显示备用层次高端商品的聚合存储大纲


此图显示“产品”维度包括高端商品替代层次结构的大纲。

Essbase Web 界面中,您可以使用成员属性指定存储的层次。

可以使用 import database MaxL 语句将层次的顶层成员标记为存储层次的顶层成员。

可以将以下成员标记为存储层次结构的顶部:

  • 维成员(第 1 代)。 如果维成员被标记为存储层次的顶部,则整个维被视为单个存储层次,并且维中的任何其他成员都不能标记为存储层次或动态层次的顶部。

  • 维成员的子代(第 2 代)。 如果第 2 代成员被标记为存储层次的顶部,则维中的所有第 2 代成员也必须被标记为存储层次或动态层次的顶部。必须存储该维中的第一个层次结构。

标记为帐户的维将自动视为动态层次结构。无法将帐户维指定为存储层次结构。

动态层次结构

要评估动态层次, Essbase 将计算成员和公式,而不是聚合成员和公式。成员和公式的评估顺序由解析顺序属性定义。请参阅 ASO 多维数据集中的计算顺序和求解顺序

在检索时, Essbase 会计算所需的成员组合并计算任何必需的大纲成员公式。由于要计算动态层次,因此数据检索时间可能比从存储层次检索数据长。但是,在设计数据库时,动态层次结构具有以下优点:

  • 它们可以包含任何合并运算符。

  • 他们可以有公式。

Essbase Web 界面中,您可以使用成员属性指定动态层次。

可以使用导入数据 MaxL 语句将层次的顶层成员标记为动态层次的顶层成员。

可以将以下成员标记为动态层次的顶部:

  • 维成员(第 1 代) - 如果维成员被标记为动态层次的顶层,则整个维被视为单个动态层次,并且维中的任何其他成员都不能标记为动态层次的顶层或存储层次的顶层。

  • 维成员的子代(第 2 代) - 如果第 2 代成员被标记为动态层次的顶部,则维中的所有第 2 代成员也必须被标记为动态层次的顶部或存储层次的顶部。维中的第一个层次必须是存储的层次。

注意:

如果成员的所有子代上都具有不合并运算符 (~),则该成员必须仅标记标签。

标记的维帐户将自动视为动态层次结构。无法将帐户维指定为存储层次结构。

Essbase 无法为聚合视图选择动态层次成员。

备用层次

可以通过以下任一方式对备用层次进行建模:

  • 作为属性维,它使用属性对维中的成员进行逻辑分类(例如,产品维可以具有大小和风格等属性)。

    注意:

    如果将属性维用作替代层次,则一个有用的查询是按基本维成员列出的属性维成员的交叉表报表。例如,产品销售信息的交叉表报表可能会在行上的列和产品上显示大小属性(例如小和大)。如果将共享成员用作备用层次,则无法按原型成员创建共享成员的等效交叉表报告查询。

  • 作为共享成员的一种层次。备用层次具有指向大纲中以前层次的原型成员的共享成员。共享成员根据与原型成员不同的层次结构进行汇总。动态层次上的共享成员可以具有公式。下表显示了 ASOsamp.Basic 数据库的层次结构。下图显示了 "Products"(产品)维。

表 36-1 ASOsamp.Basic 产品维的层次结构和替代层次结构示例

Product 层次 替代层次(包含共享成员)

平板

产品,所有商品,个人电子,家庭娱乐,电视

产品,高端商品

HDTV

产品,所有商品,个人电子,家庭娱乐,电视

产品,高端商品

图 36-3 在产品维上显示备用层次高端商品的聚合存储大纲


此图显示“产品”维度包括高端商品替代层次结构的大纲。

共享成员的替代层次结构限制

以下限制适用于聚合存储大纲中的备用层次:

  • 在成员的任何共享实例之前,成员原型实例必须出现在大纲中。例如,在上面的大纲中,成员 HDTV 出现在“所有商品”层次结构中,然后作为高端商品的替代层次结构中的共享成员出现。

  • 启用了多个层次的维中的第一个层次不能包含共享成员。

  • 存储层次维不能有共享成员。多层次维中的存储层次可以具有共享成员。

  • 为了确保不会重复计算值,“存储”层次不能包含同一个共享成员的多个副本。例如,存储的层次结构不能包含共享成员及其任何祖先。在上述大纲中,您不能将共享成员“电视”添加为“高端商品”的子代,因为这样做会使“电视”成为其子代、共享成员“平面面板”和“HDTV”的同级,从而导致“平面面板”和“HDTV”的值被添加两次。

  • 成员的原型实例必须与共享成员位于同一维中(与块存储大纲相同)。

  • 存储的层次结构不能包含原型实例和同一成员的共享实例。

  • 只有动态层次的成员为不包含公式的 0 级成员时,存储层次才可以包含该动态层次成员的共享实例。

注意:

在聚合存储多维数据集中,共享成员自动共享与其原型成员关联的任何属性。

在 ASO 多维数据集中,共享成员自动共享与其原型成员关联的任何属性。这也适用于隐含的共享成员(例如,只有一个子代的成员)。您可以通过设置“从不共享”属性来防止隐含共享。ASO 数据库中共享成员和属性的这种行为与块存储 (BSO) 数据库中的行为不同。