维构建中的生成参考

占据公用分支的 Essbase 维成员在同一层代中。第 1 代是维名称,每个较低级别递增生成编号。从自上而下源构建维时,请使用生成构建方法。如果源数据包含空值,请使用流程生成空值构建方法。

自上而下的数据源按从高到低的顺序从左到右组织。每个记录都从最一般的信息开始,并转到最具体的信息。新成员的名称位于记录的末尾。使用自上而下的数据源时,请使用生成引用构建方法。在规则文件中,指定数据来源的每个字段的生成编号和字段类型。

Essbase 根据维中成员的分层位置对维中的成员进行编号。这些数字称为生成参考。维始终是第 1 代。维中同一分支中的所有成员都称为生成。世代根据其相对于维度的位置进行自上而下的编号;即相对于维度 1。

例如,如下图所示,产品维是第 1 代。产品具有 100 成员,即第 2 代。100 具有成员,例如第 100-10 代,即第 3 代。要使用生成引用生成方法,请在规则文件中指定生成引用编号。

图 14-1 代


此图说明了生成参考编号,如图像前面的文本中所述。

假设您有一个具有“产品”维度的多维数据集。维是第 1 代,因此产品是第 1 代。假设要使用以下自上而下制制表符分隔的数据文件来构建产品维:

500	500-10	500-10-10
500	500-10	500-10-20
500	500-20	500-20-12
500	500-20	500-20-15
500	500-20	500-20-20

通常,当底层成员按从右到左的顺序排列(如上所示)时,可以使用生成构建方法运行维构建。

可以使用以下规则使用生成引用构建维。该规则为数据来源中的每个字段指定生成编号。您还必须在规则的维属性中选择生成构建方法,除非源数据包含空值(对于该用例,请参阅下面的“处理空字段”)。

用于生成构建的规则文件。字段 1:产品,第 2 代名称为“类别”。字段 2:名为“产品 SKU”的第 3 代“产品”。字段 3:产品,第 4 代名称的促销

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

图 14-2 生成参考


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

处理空字段

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

注意:

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

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

要启用空处理,请在创建新维构建规则时选择维属性中的空处理构建方法之一:流程生成为空值或流程层为空值。


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

如果使用流程生成空值构建方法,它会告知 Essbase 在处理源数据中的生成引用时需要一些空值,这有助于防止出错。

示例

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


渠道维是第 1 代。“All Channels(所有渠道)”层次结构是第 2 代。第 3 代包括“间接”和“直接”成员。在第 4 代,“间接”将通道 ID 作为子代。Direct 在第 4 代具有位置成员 "Outlet"、"Mall" 和 "Kiosk",其次是第 5 代的通道 ID。间接通道 ID 位于第 4 代,而直接通道 ID 位于第 5 代,这使之成为不平衡/拉伸的层次结构。

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

    4. 单击继续

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

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

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

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

  9. Build Method(构建方法)更改为 Process generation null


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

    单击 "OK"(确定)。

  10. 单击字段 1 中的选择器,然后选择渠道


    维构建规则编辑器中字段 1 的图像,其中选择了通道维。

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

  12. 生成递增到 2,因为“所有渠道”层次成员位于级别 2。生成 1 成员始终是维名称;在本例中为通道。

  13. 在字段 2 - 4 中,现在应选择渠道作为维。将 Type(类型)选择器更改为 Generation(生成),将字段 2 的生成编号标记为 3 ,将字段 3 的生成编号标记为 4 ,将字段 4 的生成编号标记为 5


    此图显示了通过使用流程生成空值构建方法创建具有粗糙层次结构的渠道维的规则。字段 1 定义为“通道”、“生成”、“2”,并且包含“所有通道”。字段 2 定义为“渠道”、“生成”、“3”,并且包含三个记录的“间接”和三个记录的“直接”。字段 3 定义为通道、层代和 4,并且包含三个空字段和三个位置字段(Outlet、Mall 和 Kiosk)。字段 4 定义为通道、层代、5,并且包含通道 ID。

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

  15. 运行维构建作业

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

基于生成的维构建的处理流为空

如果启用了空值处理,则 Essbase 会通过以下方式处理空值生成:

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

    示例

    维构建会将通道 ID 提升到第 4 代,而不是第 5 代,因为第 4 代包含空值。


    字段 1 是通道,第 2 代包含所有通道。字段 2 是通道,第 3 代包含间接。字段 3 是通道,第 4 代包含空值。字段 4 是通道,第 5 代包含通道 ID。

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

    示例

    维构建会忽略字段 4 中的别名,因为第 4 代包含空值,并将通道 ID 提升到第 4 代而不是第 5 代。


    字段 1 是通道,第 2 代包含所有通道。字段 2 是通道,第 3 代包含间接。字段 3 是通道,第 4 代包含空值。字段 4 是包含目录的通道别名。字段 5 是通道,第 5 代包含通道 ID。

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

    示例

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


    字段 1 是通道,第 2 代包含所有通道。字段 2 是通道,第 3 代包含直接。字段 3 是通道,第 4 代包含插座。字段 4 是包含空值的通道别名。字段 5 是通道,第 5 代包含通道 ID。