维构建中的层参考

级别是从自下而上的层次定义的,其中叶成员为 0 级,靠近维名称的每一步都将级别递增 1。从自下而上的源构建 Essbase 维时,请使用级别构建方法。如果源数据包含空值,请使用流程层空值构建方法。

在自下而上的数据源中,每条记录定义一个维的单个成员。定义从成员的最具体信息开始,并逐步提供更一般的信息。典型记录指定新成员的名称,然后指定其父代的名称,再指定其父代的名称等。

例如,在下面所示的大纲中,最低级别的成员位于 Product 维的分支的底部。

图 14-3 生成和级别编号


此图显示每个成员的生成编号和级别编号。

要使用维构建作业构建大纲,可以输入以下自下而上的数据源:

100-10-12  100-10  100
100-20-12  100-20  100

通常,当底层成员按从左到右的顺序排序时,可以使用级别构建方法运行维构建。第 0 级(叶级别)成员位于第一个字段中,第 1 级成员位于第二个字段中,依此类推。此组织与生成参考(自上而下)的数据显示方式相反。

假设您有一个具有“产品”维的多维数据集,并且您希望使用以下自下而上、以制表符分隔的数据文件为“产品”维构建更多产品成员。

600-10-11	600-10	600
600-20-10	600-20	600
600-20-18	600-20	600

数据源是“自下而上的”,因为数据源的第一列包含新的叶级别成员(600-10-11、600-20-10 和 600-20-18)。第二列包含新成员的父项(600-10 和 600-20),第三列包含父项的父项 (600)。

维构建加载规则使用层参考构建方法将成员添加到产品维。该规则为数据来源的每个字段指定级别编号和字段类型。您还必须在规则的维属性中选择级别构建方法,除非源数据包含空值(对于该用例,请参阅下面的“处理空字段”)。

级别构建的维构建规则

Essbase 根据数据和规则的来源构建以下层次结构:

图 14-4 层


此图显示了在级别构建期间创建的新成员。

处理空字段

从源数据中的生成或层引用构建维时,可以选择处理空值。Null 处理指定 Essbase 在数据源中遇到空字段时应执行的操作。

注意:

空处理选项仅适用于常规维构建规则(不基于索引)。

如果未启用 NULL 处理,则 Essbase 会拒绝所有值为 NULL 的记录,并将错误写入错误日志。

要启用空值处理,请在创建新维构建规则时选择维属性中的空值处理构建方法之一。


新规则的维属性中的处理构建方法为空值

如果使用 Process level null 构建方法,它会告知 Essbase 在处理源数据中的级别引用时需要一些 null 值,这有助于防止出错。

示例

对于此维构建示例,假定您要将如下所示的粗糙/非对称层次添加到 Sample Basic 上的新通道维中。


通道维包含四层成员深度。渠道 ID 位于级别 0。间接通道 ID 在其上方有三个级别的成员,而直接通道 ID 在其上方有四个级别的成员,这使之成为不平衡/拉伸的层次结构。

数据源自下而上,这意味着最低级别首先出现在每个记录中。因此,使用级别引用构建方法是有意义的。但是,将需要空处理指令。前三个源数据记录包含空字段,因为间接通道没有位置数据。

Channel-04,,Indirect,"All Channels"
Channel-07,,Indirect,"All Channels"
Channel-24,,Indirect,"All Channels"
Channel-21,Outlet,Direct,"All Channels"
Channel-29,Mall,Direct,"All Channels"
Channel-31,Kiosk,Direct,"All Channels"

您可以使用流程层空值构建方法创建规则以构建维并避免与空值相关的错误。

要为此示例创建规则,请执行以下操作:

  1. 使用 Essbase 服务器上的文件目录中的中提供的应用程序工作簿导入/构建示例基本多维数据集。

  2. 创建一个逗号分隔的数据文件,如下所示,将其命名为 levchannel.txt,然后将其上载到 Sample Basic 多维数据集目录。

    Channel-04,,Indirect,"All Channels"
    Channel-07,,Indirect,"All Channels"
    Channel-24,,Indirect,"All Channels"
    Channel-21,Outlet,Direct,"All Channels"
    Channel-29,Mall,Direct,"All Channels"
    Channel-31,Kiosk,Direct,"All Channels"
  3. 主页上,打开应用程序,然后打开数据库(多维数据集)。

  4. 选择脚本选项卡,然后单击规则


    选择了“Scripts(脚本)”选项卡,并在 Essbase Web 界面中突出显示了“Rules(规则)”磁贴。

  5. 单击创建,然后选择维构建(常规)


    在数据库对话框中,按“创建”按钮并选择“维构建(常规)”选项

  6. 在“新建规则”对话框中,

    1. 输入规则名称;例如, levchannel

    2. 对于源类型,选择文件,单击目录并导航到 levchannel.txt

      单击目录时,默认情况下该文件应位于 Essbase Server 的多维数据集目录中,因此您必须已使用 Essbase Web 界面文件部分上载该文件。如果文件位于客户机上,请单击文件浏览器以查找文件。

    3. 题头记录编号维构建记录编号字段保留为 0。标头记录对维构建没有用处。

    4. 单击继续

    5. 此时将打开维构建规则,其中包含未定义的字段,并且预览数据(来自文本文件)以填充字段下方的网格。
      新规则 "levchannel" 的维构建规则编辑器,未定义的字段 1 到 4 作为等待填充的元数据列。每个字段下方是从源数据文件导入的数据值。

  7. 由于这是新规则,因此尚未关联维。

    1. 单击
      规则编辑器中的“维”按钮

    2. 键入新的维名称 Channel ,然后单击 Add(添加)
  8. 现在,您需要定义构建方法并检查其他维构建操作说明。单击渠道链接可编辑维属性。

  9. 构建方法更改为流程层空值


    维构建规则编辑器中的“编辑维”窗口,其中选择了“流程层为空”。

    单击 "OK"(确定)。

  10. 单击字段 1 中的选择器,然后选择渠道
    维构建规则编辑器中的字段 1,填充了数据,并选择了“通道”维。

  11. 将字段 1 的 Type 选择器更改为 Level

  12. 级别递增到 0,因为通道 ID 位于级别 0。

  13. 在字段 2 - 4 中,现在应选择渠道作为维。将 Type(类型)选择器更改为 Level(级别),并将字段 2 的级别编号标记为 1 ,字段 3 的级别编号标记为 2 ,字段 4 的级别编号标记为 3


    维构建规则,使用流程层 NULL 构建方法创建具有细分层次结构的渠道维。字段 1 定义为通道、层、0,并包含通道 ID。字段 2 定义为通道、层、1,并且包含三个空字段和三个位置字段(Outlet、Mall 和 Kiosk)。字段 3 定义为三个记录的“渠道”、“级别”、“2”和“间接”,三个记录的“直接”。字段 4 定义为“通道”、“级别”、“3”,并且包含“所有通道”。

  14. 验证该规则,然后保存并关闭。如果存在任何错误,请参阅有效维构建规则文件的要求

  15. 运行维构建作业

  16. 查看大纲以确认已添加渠道维和成员的预期层次结构。

基于级别的维构建的处理流为空

如果启用了 NULL 处理,则 Essbase 会通过以下方式处理级别 NULL:

  • Null 级别字段:如果 Essbase 需要“级别”字段,则 Essbase 会提升下一个“级别”字段以替换缺少的字段。

    示例

    维构建将间接放置在级别 1 而不是级别 2 中,因为级别 1 的字段 2 包含空值。


    字段 1 是“通道”,级别 0 包含第一行中的通道 ID。字段 2 是通道,级别 1 在第一行包含空值。字段 3 是第一行中包含“间接”的“通道”级别 2。字段 4 是包含所有通道的通道级别 3。

  • 辅助字段前为空值字段:如果辅助字段前直接出现空值,则 Essbase 会忽略辅助字段。(辅助字段选项包括别名、属性、公式、重复级别、重复级别别名、货币名称、货币类别、属性父代、UDA 和属性维的名称。)

    示例

    维构建将忽略字段 3 中的别名,因为字段 2 包含空值。Essbase 将在级别 1 中放置“间接”,在级别 2 中放置“所有渠道”。


    字段 1 是通道,级别 0 包含通道 ID。字段 2 是通道,级别 1 包含空值。字段 3 是包含目录的通道、别名。字段 4 是包含“间接”的通道级别 2。字段 5 是“通道”,级别 3 包含所有通道。

  • Null 辅助字段:如果 Essbase 需要辅助字段,则 Essbase 会忽略辅助 NULL 字段并继续加载(这与级别构建方法的行为相同)。

    示例

    维构建将忽略字段 3 中的第一个别名,因为该字段包含空值。成员 Outlet 将添加到大纲中,没有任何别名。


    字段 1 是通道,级别 0 包含通道 ID。字段 2 是通道,第 1 层包含第一行中的插座,以及接下来的两行中的 Mall 和 Kiosk。字段 3 是通道别名,第一行包含空值,接下来的两行包含一些别名。字段 4 是通道,级别 2,在所有行中包含直接。字段 5 是“通道”,级别 3 包含所有行中的所有通道。