维和成员
如果您了解维和成员,那么您就可以了解多维数据库的强大功能了。
例如,“年”是“时间”类型的维,Qtr1 是成员:
Year Time
Qtr1 (+)
Jan (+)
......Feb (+)
......Mar (+)有两种维:标准维和属性。
-
标准维度代表业务计划的核心组成部分,通常与部门职能相关。典型的标准维度:时间、账户、产品线、市场和分部。维的更改频率低于成员。
-
属性维是与标准维关联的维。通过属性维,可以根据成员属性(特性)对标准维的成员进行分组和分析。例如,您可以将包装在玻璃中的非咖啡因产品的盈利能力与包装在罐中的非咖啡因产品的盈利能力进行比较。
成员是维的单个组成部分。例如,产品 A、产品 B 和产品 C 可能是产品维的成员。每个成员都有一个唯一的名称。可以存储与成员关联的数据(在本章中称为存储成员),也可以在用户检索数据时动态计算数据。
Outline Hierarchies
通过定义大纲开始设计 Essbase 多维数据集。大纲组织将数据类别的关系反映为结构层次结构和数学层次结构。
Essbase 数据库(多维数据集)开发从创建大纲开始,该大纲可实现以下目标:
-
定义结构关系
-
组织数据
-
定义项之间的合并和数学关系
成员概念用于表示数据层次结构。每个维都包含一个或多个成员。反过来,成员可以由其他成员组成。创建维时,可以定义如何合并其各个成员的值。在多维数据集大纲的树结构中,合并是树分支中的一组成员。
例如,许多企业每月汇总数据,汇总每月数据以获得季度数据,并汇总季度数据以获得年度数据。企业还可以按邮政编码、城市、州/省和国家/地区汇总数据。任何维都可用于合并数据以进行报告。
例如,在 Sample.Basic 多维数据集中,Year 维包括季度成员:Qtr1、Qtr2、Qtr3 和 Qtr4,每个成员存储单个季度的数据,以及存储年度汇总数据的 Year。Qtr1 包括 1 月、2 月和 3 月,每个季度都存储一个月的数据,以及存储该季度的汇总数据的 Qtr1。同样,Qtr2、Qtr3 和 Qtr4 包括代表单个月份的成员,以及存储季度总计的成员。
以下分层结构表示 Qtr1 中的数据合并和关系。
Year Time
Qtr1 (+)
Jan (+)
......Feb (+)
......Mar (+)有些维度由相对较少的成员组成,而其他维度可能有数百或数千个成员。
维和成员关系
Essbase 大纲的组织使用分层和家族术语进行描述,因为这是对维中的成员角色和关系进行概念化的一种简单方法。分层术语包括世代和级别,它们类似于根和叶。家族术语包括父母、子女、兄弟姐妹、后代和祖先。
本节中的子主题参考下面所示的大纲,以描述成员在大纲中的位置。
图 2-1 成员生成和级别编号

父母、子女和兄弟姐妹
大纲说明了以下父关系、子关系和同级关系:
-
父代是其下方具有分支的成员。例如,“利润”是“销售”和“销货成本”的父代成员。
-
子代是父代在其上方的成员。例如,“销售额”和“销售成本”是“利润”父项的子代。
-
兄弟姐妹是同一代的同一直接父代的子成员。例如,“销售”和“销货成本”是同级(它们都具有父利润),但“营销”(在同一分支级别)不是同级,因为其父项是“总费用”。
后代和祖先
大纲说明了以下后代和祖先关系:
-
子项是父项下方分支中的成员。例如,“利润”、“库存”和“比率”是度量的后代。“利润”、“库存”和“比率”的子代也是“度量”的后代。
-
祖先是成员上方的分支中的成员。例如,利润、利润和度量是销售的祖先。
层代和级别
在 Essbase 中,层代和层是有关成员在大纲结构中的位置的指示符。层代表示成员与维的根的距离。级别用于度量成员与以下最低成员(分层“叶”)之间的分支数。
代数
生成是指维中的合并级别。树的根分支为层代 1。层代编号在从根向叶成员计数时增加。在大纲中,“度量”是第 1 代,“利润”是第 2 代,“利润”是第 3 代。每个层的所有同级都属于同一层代;例如,库存和比率都是层代 2。
在下图中,显示了产品维的一部分,其层代编号。产品是第 1 代,100 是第 2 代,100-10 是第 3 代,100-10-12 和 100-10-16 是第 4 代。
图 2-2 代

级别
级别还指维中的分支;级别反转用于几代的数值排序。级别从叶成员向根计数。根级别编号因分支的深度而异。在本节开头的大纲图中,“销售和销货成本”为 0 级。所有其他叶成员也为 0 级。利润为级别 1,利润为级别 2。请注意,度量值的级别数量因分支而异。对于“比率”分支,“度量”为级别 2。对于“总费用”分支,“度量”为级别 3。
在下图中,显示了产品维的一部分,其级别编号为 2。100 是级别 2,100-10 是级别 1,100-10-12 和 100-10-16 是级别 0。
图 2-3 层

层代和层代名称
为了简化报表维护,您可以将名称分配给层代或层级,然后将该名称用作该层代或层级中所有成员的简写。由于对大纲的更改会自动反映在报表中,因此在使用生成名称和级别名称时,如果在数据库大纲中更改或删除了成员名称,则不需要更改报表。
Hierarchy Shapes
Essbase 中的层次结构可以是对称的或非对称的。
Essbase 根据层次配置处理某些操作的方式不同。当维包含非对称层次时,表格数据导出、某些计算函数(包括 @ANCESTVAL )和穿透钻取报表映射可以具有不同的结果。
对称层次结构
在对称层次中,具有相同级别编号的成员在大纲中的深度相同。例如,在下图中,成员 100-10 和 200-10 都是 0 级成员,它们都是第 3 代成员:

层代编号在维名称中以 1 开始计数;层代编号越大,与层次中的叶成员最近的层代编号越多。
级别编号在层次结构的最深部分以 0 开头;最高级别编号是维名称。
非对称层次结构
在非对称(或粗糙)层次结构中,具有相同的级别编号并不意味着成员在大纲中的深度相同。例如,在下图中,成员 aa 和成员 f 都是 0 级成员,但它们不是同一深度:

标准维和属性维
Essbase 具有标准维和属性维。本章重点介绍标准维,因为 Essbase 不会为属性维成员分配存储。相反,当用户查询与其关联的数据时,它会动态计算成员。
属性维是与标准维相关联的特殊类型的维。请参阅使用 Essbase 属性。
稀疏维和密集维
大多数多维数据库数据集具有以下两个特征:
-
数据不均匀地分布。
-
大多数成员组合不存在数据。例如,所有产品都不能在全国所有地区销售。
大多数多维数据库本质上是稀疏的;它们缺少大多数成员组合的数据值。稀疏维是已填充可用数据位置百分比低的维和。
例如,图 2-4 中 Sample.Basic 数据库的大纲包括 Year、Product、Market、Measures 和 Scenario 维。“产品”表示产品单位,“市场”表示产品销售所在的地理区域,“度量”表示帐户数据。因为并非每个产品都在每个市场销售,所以市场和产品被选为稀疏维度。
多维数据库还包含密集维。密集维具有很高的概率,即一个或多个单元格在每个维的组合中被占用。例如,在 Sample.Basic 数据库中,几乎所有市场中所有产品的客户数据都存在,因此度量被选为密集维。“Year(年份)”和“Scenario(方案)”也选择为密集维。“Year(年度)”表示时间(以月为单位),“Scenario(方案)”表示帐户值是预算值还是实际值。
含咖啡因、入门日期、盎司、套餐类型和群体是属性维度。请参阅使用 Essbase 属性。
将 Essbase 数据库存储在磁盘上时,密集成员组合的笛卡尔积将形成称为块的存储单元,并为数据库中的每个稀疏成员组合向磁盘写入一个块。
图 2-4 Sample.Basic 数据库大纲

密集维和稀疏维和选择
在大多数数据集中,现有数据往往遵循可预测的密度和稀疏性模式。如果正确匹配模式,可以将现有数据存储在合理数量相当密集的数据块中,而不是存储在许多高度稀疏的数据块中。
为了帮助您确定维是密集维还是稀疏维, Essbase 在大纲属性中提供了一个自动配置选项。
Essbase 可以根据以下因素为维的稀疏密集配置提供建议:
-
维上的时间和帐户标记
-
数据块的可能大小
-
属性为维的特性
您可以应用建议的配置,也可以关闭自动配置并手动为每个维设置稀疏或密集属性。请记住,只能将属性维与稀疏标准维关联。
注意:
密集维和稀疏维的自动配置仅提供估计值。它不能考虑将加载到数据库中的数据或多重用户注意事项的性质。
Sample.Basic 的密集 - 语法分析配置
考虑 Sample.Basic 数据库,该数据库代表饮料公司 (TBC) 的数据。
由于 TBC 没有在每个市场销售所有产品,因此数据集相当稀疏。产品和市场维中成员的许多组合不存在数据值。例如,如果佛罗里达州没有销售无咖啡因可乐,则组合无咖啡因可乐 (100-30) -> 佛罗里达州的数据值不存在,因此产品和市场是稀疏维度。因此,如果这些维中的特定成员组合不存在数据值,则不会为该组合创建数据块。
但是,请考虑年份、度量和方案维中成员的组合。这些维上的某些成员组合几乎始终存在数据值。例如,成员组合“销售”->“1 月”->“实际”存在数据值,因为至少有些产品在 1 月销售。因此,“年份”和“度量”和“方案”都是密集维。
Sample.Basic 数据库中标准维的稀疏密集配置可以总结为:
-
稀疏的标准尺寸是产品和市场。
-
密集标准维为“Year(年度)”、“Measures(度量)”和“Scenario(方案)”。
将为产品和市场维中的每个唯一成员组合创建一个数据块(请参阅数据存储)。每个数据块表示来自密集维的数据。数据块可能只有很少的空单元格。
例如,在图 2-5 中,考虑纽约的稀疏成员组合 Caffeine Free Cola (100-30):
-
如果 1 月存在此组合的帐户数据(由“度量”维表示),则可能存在 2 月和“年”维中的所有成员的帐户数据。
-
如果度量维中存在一个成员的数据值,则度量维中可能存在其他成员的其他帐户数据值。
-
如果存在“实际”帐户数据值,则可能存在“预算”帐户数据值。
图 2-5 Sample.Basic 数据库的密集数据块

密集和稀疏选择方案
在以下方案中,您将看到在选择不同的标准维时如何影响数据库。假设这些方案基于具有至少七个维和数百个成员的典型数据库。
方案 1:所有稀疏标准维
如果使所有维都稀疏,则 Essbase 会创建由包含单个数据值的单个数据单元格组成的数据块。将为每个数据块创建一个索引条目,因此,在此方案中为每个现有数据值创建一个索引条目。
此配置会生成需要大量内存的索引。索引条目越多, Essbase 搜索特定块的时间就越长。
图 2-6 包含所有稀疏标准维的数据库

方案 2:所有密集标准维
如果使所有维都密集,则 Essbase 会创建一个索引条目和一个大的稀疏块。在大多数应用程序中,此配置所需的存储量是其他配置的数千倍。Essbase 在搜索任何需要大量内存的数据值时必须将整个数据库加载到内存中。
图 2-7 包含所有密集标准维的数据库

场景 3:密集和稀疏标准维
根据您对公司数据的了解,您已确定了所有稀疏和密集的标准维度。
Essbase 创建可以轻松适应内存的密集块,并创建相对较小的索引。您的数据库使用最少的资源高效运行。
图 2-8 密集和稀疏维组合的理想配置

方案 4:典型的多维问题
考虑具有四个标准维度的数据库:时间、客户、区域和产品。在以下示例中,“时间和客户”是密集维,“区域”和“产品”是稀疏维。
下图中显示的二维数据块表示来自密集维的数据值:“时间”和“帐户”。时间维中的成员为 J、F、M 和 Q1。帐户维中的成员为 Rev、Exp 和 Net。
图 2-9:时间和帐户的二维数据块

Essbase 为稀疏标准维中的成员组合创建数据块(前提是该成员组合至少存在一个数据值)。稀疏维是“区域”和“产品”。Region 维的成员包括 East、West、South 和 Total US。产品维中的成员包括产品 A、产品 B、产品 C 和总产品。
下图显示了 11 个数据块。西部和南部的产品 A、东部和西部的产品 B 或东部的产品 C 不存在数据值。因此, Essbase 尚未为这些成员组合创建数据块。Essbase 创建的数据块只有几个空单元格。此示例有效地将所有稀疏性集中到索引中,并将所有数据集中到充分利用的块中。此配置提供高效的数据存储和检索。
图 2-10 为区域和产品上的稀疏成员创建的数据块

接下来,考虑对密集维和稀疏维选择进行反转。在以下示例中,“Region(区域)”和“Product(产品)”是密集维,“Time(时间)”和“Account(帐户)”是稀疏维。
在下图中,二维数据块表示来自密集维的数据值:Region 和 Product。在西部区域,数据不适用于产品 A 和产品 B。数据也无法用于美国的总产品。
图 2-11 区域和产品的二维数据块

Essbase 为稀疏标准维中的成员组合创建数据块(前提是该成员组合至少存在一个数据值)。稀疏标准维是“时间”和“帐户”。
下图显示了 12 个数据块。时间和帐户维中成员的所有组合都存在数据值;因此, Essbase 会为所有成员组合创建数据块。由于并非所有区域中的所有产品都存在数据值,因此数据块具有许多空单元格。具有许多空单元格的数据块存储数据效率低下。
图 2-12 为准时稀疏成员和帐户创建的数据块
