组稀疏成员组合

要提高 Essbase 块存储 (block storage,BSO) 数据加载的性能,可以对数据进行结构化,以最大程度地减少所需的磁盘 I/O(读取和写入)量。

此部分不适用于聚合存储多维数据集。

提高性能的最有效策略是最大限度地减少 Essbase 在读取或写入多维数据集时必须执行的磁盘 I/O 数量。由于 Essbase 按块加载数据块,因此组织与物理块组织相对应的源数据可减少 Essbase 必须执行的物理磁盘 I/O 数。

排列源数据,以便将具有相同稀疏维唯一组合的记录组合在一起。此排列对应于数据库中的块。

本章中的示例说明如何按照此策略组织数据。这些示例使用 Sample.Basic 多维数据集的子集,如下所述:

表 33-1 示例的维和值

稀疏、非属性维 密集型维

方案(预算,实际)

度量(销售、利润、COG、利润)

产品(可口可乐,根啤酒)

年份(1 月、2 月)

市场(俄亥俄州佛罗里达州)

 

注意:

由于您未将数据加载到属性维中,因此它们与此讨论无关,尽管它们很稀疏。

请考虑以下数据源。由于它不是按稀疏维成员组合进行分组的,因此未对数据进行最佳排序。当 Essbase 读取每个记录时,它必须处理稀疏维的不同成员。

Jan
Actual    Cola          Ohio      Sales    25
Budget    "Root Beer"   Florida   Sales    28
Actual    "Root Beer"   Ohio      Sales    18
Budget    Cola          Florida   Sales    30

上述数据源加载缓慢,因为 Essbase 访问四个块而不是一个块。

以下为同一 Sample Basic 多维数据集的更优化的数据源,其记录按稀疏维成员的唯一组合排序:Actual -> Cola -> Ohio。Essbase 仅访问一个块来加载以下记录:

Actual     Cola    Ohio    Jan   Sales     25
Actual     Cola    Ohio    Jan   Margin    18
Actual     Cola    Ohio    Jan   COGS      20
Actual     Cola    Ohio    Jan   Profit     5

要优化源数据,以便为每个记录导入多个单元格,

  1. 确保按唯一的稀疏维成员组合将记录分组在一起。

  2. 对记录进行排序,以便您为其提供多个值的记录中的维是密集维。

下一个示例使用标题记录来标识“度量”维的成员,该维是密集维。数据首先按密集维“年”的成员排序,然后按其他维的成员分层进行分组。每个记录上都提供了“度量”维的多个值。

                                 Sales  Margin   COG  Profit
Jan Actual  Cola         Ohio       25      18    20       5
Jan Actual  Cola         Florida    30      19    20      10
Jan Actual  "Root Beer"  Ohio       18      12    10       8
Jan Actual  "Root Beer"  Florida    28      18    20       8

请注意,此示例中的标题和第一个数据行需要两行;上一个示例需要四行才能获得相同的数据。