数据存储

一个 Essbase 维中的一个成员与另一个维中的一个成员之间的交集是数据值。通过以不同方式对数据库进行切片,可以基于成员关系对数据进行透视图。要存储和访问数据, Essbase 使用块和索引。

注意:

此信息仅适用于块存储 (BSO) 多维数据集,不适用于聚合存储 (ASO) 多维数据集。

Essbase 数据库中的每个数据值都存储在一个单元格中。通过沿每个标准维指定特定数据值的坐标来引用该值。

注意:

Essbase 不存储属性维的数据。用户检索数据时, Essbase 会动态计算属性维数据。

考虑图 2-13 中所示的简化数据库。此数据库具有三个维:帐户、时间和方案:

  • “帐户”维有四个成员:销售、销货成本、利润和利润百分比。

  • 时间维有四个季度成员,Qtr1 有三个月成员

  • 方案维有两个子成员:预算值的预算和实际值的实际值。

图 2-13 A 多维数据库大纲


此图像显示具有三个维的大纲,如图像前面的文本中所述。

数据值

一个 Essbase 维中的一个成员与另一个维中的一个成员的交叉点表示一个数据值。数据值是最小的数据切片。

下面的示例包含三个维(帐户、时间和方案);因此,数据库中的维和数据值可以表示为多维数据集。

图 2-14 三维数据库


此图将三维数据库描述为立方,如图像前面的文本中所述。

指定“销售”时,要指定包含八个“销售”值的数据库的时段,其中“销售”与“实际”和“预算”相交。

图 2-15 数据库的销售切片


此图显示了多维数据集中的数据片段,如图像前面的文本中所述。

对数据库进行切片相当于将一个或多个维固定为常量值,同时允许其他维发生变化。

指定“实际销售”时,将指定包含四个“销售”值的数据库的时段,其中“实际”值与“销售”值相交。

图 2-16 数据库的实际销售切片


此图显示了多维数据集中的数据片段,如图像前面的文本中所述。

数据值存储在数据库中的一个单元格中。要引用多维数据库中的特定数据值,可在每个维上指定其成员。例如,时段“销售额”、“一月”、“实际”由一个数据值组成。还可以使用跨维运算符 (->) 表示数据值,例如“Sales(销售)”>“Actual(实际)”>“Jan(一月)”。

图 2-17 Sales->Jan->Actual Data Value


此图显示了立方中的数据值,如图像前面的文本中所述。

数据库和索引系统

Essbase 使用两种类型的内部结构来存储和访问数据:数据块和索引系统。

Essbase 为稀疏标准维成员的每个唯一组合创建一个数据块(前提是稀疏维成员组合至少存在一个数据值)。数据块表示稀疏维成员组合的所有密维成员。

Essbase 为每个数据块创建一个索引条目。该索引表示稀疏标准维成员的组合。它包含至少存在一个数据值的稀疏标准维成员的每个唯一组合的条目。

例如,在图 2-18 中显示的 Sample.Basic 数据库大纲中,“产品”和“市场”是稀疏维。

图 2-18 Sample.Basic 数据库中的产品和市场维


此图显示了产品和市场维度的大纲。

如果纽约存在 Caffeine Free Cola 的数据,则 Essbase 会为 Caffeine Free Cola (100-30) -> New York 的稀疏成员组合创建一个数据块和一个索引条目。如果佛罗里达州销售无咖啡因可乐,则 Essbase 为稀疏成员组合创建数据块或索引条目:Caffeine Free Cola (100-30) -> Florida。

数据块 Caffeine Free Cola (100-30) -> New York 代表了 Caffeine Free Cola (100-30) -> New York 的所有年份,度量和场景尺寸。

可以将每个唯一的数据值视为存在于数据块中的单元格中。当 Essbase 搜索数据值时,它会使用索引查找相应的数据块。然后,在数据块中,它定位包含数据值的单元格。索引条目提供了指向数据块的指针。索引可以有效地处理稀疏数据,因为它仅包含指向现有数据块的指针。

图 2-19 显示了 Sample.Basic 数据库的数据块的一部分。块的每个维都表示 Sample.Basic 数据库中的密集维:时间、度量和方案。产品和市场稀疏维成员的每个唯一组合都存在数据块(前提是该组合至少存在一个数据值)。

图 2-19:Sample.Basic 数据库的数据块的一部分


此图显示了具有三个密集维的部分数据块,如图像前面的文本中所述。

每个数据块都是一个多维数组,其中包含密集维成员的每个可能组合的固定有序位置。访问块中的单元格不涉及顺序搜索或索引搜索。搜索几乎是瞬时的,从而实现最佳的检索和计算速度。

Essbase 根据成员在数据库大纲的密集维中的顺序对数据块中的单元格进行排序。

A (Dense)
   a1
   a2
B (Dense)
   b1
       b11
       b12
   b2
       b21
       b22
C (Dense)
   c1
   c2
   c3
D (Sparse)
   d1
   d2
       d21
       d22
E (Sparse)
   e1
   e2
   e3

图 2-20 中的块表示前面数据库大纲中稀疏成员 d22 和 e3 的组合中的三个密集维。在 Essbase 中,成员组合由跨维运算符表示。交叉维运算符的符号为 ->,因此 d22 -> e3 表示 d22 和 e3 的块。A、b21 和 c3 的交集写为 A -> b21 -> c3。

图 2-20 表示 d22 -> e3 的密集维的数据块


此图显示了表示密集维的数据块,如图像前面的文本中所述。

Essbase 为稀疏维 D 和 E 的每个成员的唯一组合创建一个数据块(前提是该组合至少存在一个数据值)。

数据块(如图 2-20 中的块)可能包括不包含数据值的单元格。如果块中至少存在一个数据值,则会创建数据块。Essbase 压缩磁盘上缺少值的数据块,并在将块引入内存时完全展开每个块。数据压缩是可选的,但默认情况下处于启用状态。

通过仔细选择密集和稀疏的标准尺寸,您可以确保数据块不包含许多空单元,从而最大限度地降低磁盘存储要求并提高性能。在 Essbase 中,空单元格称为 #MISSING 数据。

切片:多个数据视图

对于需要分析数据类别间关系的用户, Essbase 数据库支持多个数据集视图。以不同的方式对数据库进行切片可以让您对数据有不同的看法。

例如,在图 2-21 中,Jan 的分片将检查年份维在 1 月固定的所有数据值。

图 2-21 1 月的数据


此图显示了 1 月份的一块数据。

图 2-22 中的分片显示了 2 月的数据:

图 2-22 二月份的数据


此图显示了 2 月的数据片。

图 2-23 中的分片显示利润率数据:

图 2-23 利润率数据


此图显示了利润率的一块数据。