成员如何存储数据值的选项
您可以确定 Essbase 如何以及何时存储成员的数据值。例如,您可以指示 Essbase 仅当用户请求成员时才计算成员的值,然后放弃数据值。
每个可用成员存储属性如下所述。
表 5-4 选择存储属性
| 存储属性 | 行为 |
|---|---|
|
Store - 存储 |
将数据值与成员一起存储。 |
|
动态计算 |
除非用户请求数据值,否则不会计算该数据值,然后放弃该数据值。 |
|
仅标签 |
“仅标签”成员用于对其他成员进行分组或添加标签。“仅标签”成员的数据库中未存储任何数据。 |
|
共享成员 |
在成员之间共享值。例如,在 Sample Basic 数据库中,100-20 成员存储在 100 父代下,并在 Diet 父代下共享。 |
|
从不共享 |
不允许隐式共享成员。 标记为“从不共享”的成员只能显式共享。要显式共享成员,请创建具有相同名称的共享成员并将其标记为共享。 |
要使用 Essbase Web 界面设置成员存储属性,请打开大纲进行编辑,选择成员并编辑其常规属性。根据需要更改数据存储类型。有关更多信息,请参阅 Set General Properties 。
如果使用应用程序工作簿或 Cube Designer(多维数据集设计器)设置成员存储属性,请使用相应维工作表上每个成员旁边的相关代码更新 STORAGE 属性。S 表示存储,X 表示动态计算,O 表示仅标签,N 表示从不共享。有关详情,请参阅了解维工作表。
动态计算成员
当成员是动态计算时, Essbase 在用户请求该成员之前不会计算该成员的值。用户查看后, Essbase 不会存储该成员的值。
Essbase 会自动将属性维的成员标记为动态计算。无法更改此设置。
另请参阅动态计算数据值。
“仅标签”成员
“仅标签”成员是 Essbase 中的成员,没有任何关联数据。使用它们对成员进行分组,或者从 Smart View 简化导航和报告。通常,应仅为标签成员提供 "no Consolidation" 属性。
您不能将属性与仅标签成员关联。如果将属性关联的基本维成员标记为仅标签,则 Essbase 会删除属性关联并显示警告消息。
仅标签成员的后代不能标记为“动态计算”。在以下示例中,验证大纲时, Essbase 会发出一条错误消息,指示不能仅将 ChildB 标记为标签:
ParentA = Label Only
ChildB = Label Only
DescendantC = Dynamic Calc将 DescendantC 标记为“存储数据”可解决问题。
共享的成员
Essbase 共享成员可以帮助您计算大纲中多个父代的相同成员,当一个项属于多个类别时,该成员非常有用。与共享成员关联的数据值来自另一个具有相同名称的大纲成员(称为原型成员)。
共享成员存储指向原型成员中包含的数据的指针,并且数据仅存储一次。要将成员定义为共享成员,必须存在同名的原型成员。例如,在 Sample.Basic 数据库中,100 岁以下的 100-20 成员存储该成员的数据。Diet 下的 100-20 成员指出了这个值。
共享成员通常用于计算多个父代中的同一成员;例如,计算 100 个和 Diet 父代中的 Diet Cola 成员。
通过使用共享成员,您可以在整个维中重复使用成员。Essbase 仅存储一次数据值,但会在多个位置显示。仅存储一次数据值可节省空间并提高处理效率。
共享成员的准则
Essbase 共享成员必须没有子代、UDA、属性或公式。它们必须与原型处于相同的维度,并按照大纲顺序跟随它们。共享成员可以具有唯一的别名,并且可以与其他成员具有相同的名称。
请遵循以下准则,以避免在创建共享成员时发生错误:
-
共享成员必须与其原型成员位于同一个维。例如,Sample.Basic 数据库中的两个 100-20 成员都位于 Product 维中。
-
原型成员必须以大纲顺序排在共享成员之前。
-
共享成员不能有子代。
-
无限制数量的共享成员可以具有相同的名称。
-
不能将 UDA 或公式分配给共享成员。
-
您可以为具有重复成员名称的成员创建共享成员。
-
属性不能与共享成员关联。
-
如果将帐户属性分配给共享成员,则这些帐户属性的值将从原型成员中获取,即使共享成员上的帐户属性发生更改也是如此。
-
可以将别名分配给共享成员。
-
如果共享成员的别名为空,则 Essbase 将使用存储成员的别名。
-
如果为共享成员分配别名,并且更改原型成员的别名,则共享成员的别名不会更改。
-
原型成员必须位于其共享成员之前。
-
避免原型和共享成员之间的复杂关系,这些关系将成为属性计算的一部分,或者计算可能会返回意外的结果。请参阅属性计算和共享成员。
-
不能将共享成员及其原型成员置于同一父代下。在重复的成员大纲中,同级必须唯一。
-
在网格客户机(例如 Smart View )中,可以轻松地将共享成员与其原型成员区分开来,因为您可以指定使用限定名称(例如,[Parent].[Child])来显示共享成员。即使未设置大纲以启用重复的成员名称,也可以使用限定名称显示共享成员。此外,还可以使用限定成员名称在网格中搜索共享成员或使用成员选择。
追溯期间的共享成员检索
在放大(向下钻取)操作期间, Essbase 会检索原型成员,而不是共享成员(如果可用)。在共享成员上缩小(向上钻取)会检索共享成员父代,而不是原型。
Essbase 在向下钻取期间根据共享成员在电子表格或网格客户端中的位置检索共享成员。Essbase 在网格检索期间遵循以下规则:
-
默认情况下检索原型成员(而非其共享成员)。
-
首先从电子表格底部检索。
-
如果共享成员的父代是共享成员之一的原型成员的同级,则检索原型成员。
来自单个维的共享成员示例
如果基于 Sample.Basic 大纲中维 East 的原型成员创建具有所有共享成员的测试维,则大纲将与图 5-1 中所示的大纲类似:
图 5-1:单个维中的共享成员

在共享成员上缩放将返回共享父代,而不是原型成员。例如,如果在佛罗里达州缩小,则 Essbase 将返回共享父代 test。
如果仅检索 East 的子代,则所有结果都来自原型成员,因为 Essbase 默认情况下会检索原型成员。
但是,如果您在电子表格中检索带有其上方测试子项的数据,则 Essbase 将检索共享成员:
New York
Massachusetts
Florida
Connecticut
New Hampshire
test如果将 test 移到其最后两个子代之上,则 Essbase 会将前三个子代检索为共享成员,而将后两个子代检索为原型成员。同样,如果在上面的列表中插入一个不是共享成员的同级的成员(例如,在佛罗里达州和康涅狄格州之间插入的 California),则 Essbase 仅检索非同级成员与父代之间的共享成员(在本例中为加利福尼亚州和测试之间)。
使用交叉生成共享成员检索示例
可以修改 Sample.Basic 大纲以创建其原型成员对应对象是其父代的同级的共享成员,如 Figure 5-2 所示:
图 5-2 使用交叉层代共享成员检索

如果按此顺序创建具有共享成员的电子表格,则 Essbase 将检索所有共享成员,但检索原型成员 West,而不是共享成员 West:
West
New York
Massachusetts
Connecticut
New Hampshire
testEssbase 按此顺序检索成员,因为 test 是 west 的父代及其原型成员对应项 West 的同级。
隐含的共享成员
如果启用了隐式共享,则父代成员隐式共享其单个子代成员(仅有一个子代时)或其唯一合并子代(仅有一个子代合并时)的值,这意味着它具有 ~ 或 ^ 以外的运算符。
此类父代是隐含的共享成员,除非:
- 他们有一个公式
- 它们设置为从不共享
- 未启用隐含共享
默认情况下,隐式共享未启用。从 Essbase 21c 开始,您可以使用 IMPLIED_SHARE_ON_CREATE 配置设置根据需要启用它。
如果启用了隐式共享,则 Essbase 在以下情况下会假定(或暗示)共享成员关系:
-
一个父代只有一个子项。 在这种情况下,父代和子代包含相同的数据。Essbase 会忽略子项上的合并属性,并且仅存储一次数据,因此父项与子项具有隐含的共享关系。在以下示例中,父代 500 只有一个子代 500-10,因此父代共享该子代的值:
500 (+) 500-10 (+) -
一个父代只有一个合并到父代的子代。 如果父项有四个子项,但有三个子项标记为无合并,则合并的父项和子项包含相同的数据。Essbase 会忽略子项上的合并属性,并且仅存储一次数据,因此父项与子项具有隐含的共享关系。在以下示例中,父代 500 只有一个子代 500 ‑ 10 累计到该子代。其他子代标记为 No Consolidate(~),因此父代隐式共享 500 ‑ 10 的值。
500 (+) 500-10 (+) 500-20 (~) 500-30 (~)
上述案例在父代成员具有公式时不适用。
如果不希望隐式共享成员,请将父代标记为“从不共享”,以便改为复制数据。