不需要加载规则的数据源

要将数据加载到 Essbase 多维数据集,通常需要加载规则,除非源数据完全映射到多维数据集。但是,如果数据源包含所需的所有信息,则可以直接在自由格式数据加载中加载数据源,而无需任何规则。

如果要执行维构建,请跳过此部分。维构建始终需要加载规则。

要成功加载数据值, Essbase 必须在遇到数据值之前遇到每个维中的一个成员。例如, Essbase 使用成员 Texas、100-10、Jan、Sales 和 Actual 将数据值 42 加载到数据库中。


此图说明了数据源中记录和字段的概念,如图像前面的文本中所述。

如果 Essbase 在指定每个维的成员之前遇到数据值,它将停止加载数据。

要完美映射,数据源必须包含以下所有内容,而不包含任何其他内容:

  • 每个维中的一个或多个有效成员。如果成员名称包含以下任何一项,则必须用引号将其括起来:

    • 空格

    • 数值字符(0 – 9)

    • 短划线(减号、连字符)

    • 加上符号

    • & 符号

      如果您在没有规则文件的情况下执行数据加载,当 Essbase 遇到无效的成员字段时,即使 "Abort on Error" 标志未设置为 true,也会停止数据加载。Essbase 将在无效字段之前读取的所有字段加载到数据库中,从而导致部分加载数据值。

  • 一个或多个有效数据值。请参阅有效数据字段

    如果数据源包含数据值的空白字段,则将空白字段替换为 #MI 或 #MISSING。否则,可能无法正确加载数据值。

  • 有效分隔符。请参见 Valid Delimiters

数据源中的字段必须按 Essbase 可理解的顺序进行格式化。设置记录格式的最简单方法是包括每个维中的成员和数据字段,如下所示:

Sales "100-10" Ohio Jan Actual 25
Sales "100-20" Ohio Jan Actual 25
Sales "100-30" Ohio Jan Actual 25

不正确格式化的数据源将不会加载。您可以使用文本编辑器编辑数据源并修复问题。如果必须执行多次编辑(例如移动多个字段和记录),请使用加载规则。

以下各节介绍格式化自由格式源的更复杂方法。

源数据中的成员字段范围

可以将 Essbase 成员名称表示为维中的范围。范围是一系列值。数据源一次可以包含多个维的范围。了解如果未使用加载规则, Essbase 如何在数据加载期间处理范围。

如果要执行维构建,则此信息不适用,因为维构建始终需要规则。如果要执行数据加载,则当未使用任何规则时,此信息适用(但在设计数据加载规则时,了解范围也很有帮助)。

可以将成员名称表示为维中的范围。例如,“销售”和“销货成本”在“度量”维中形成一个范围。一组成员名称可以处理一系列值。

数据源一次可以包含多个维的范围。在下面的示例中,Jan 和 Feb 在 Year 维中形成一个范围,Sales 和 COGS 在 Measures 维中形成一个范围。


Actual   Texas   Sales   COGS
           Jan   Feb   Jan   Feb
"100-10"   98    89    26    19
"100-20"   87    78    23    32

请注意,为前两列定义了销售额,为后两列定义了销货成本。

自动范围

Essbase 遇到来自同一维的多个成员而没有干预数据字段时,它会为该维设置一个范围。范围将一直有效,直到 Essbase 遇到来自同一维的另一个成员名称,此时 Essbase 会将该范围替换为新成员或新成员范围。

以下示例包含“Year(年度)”维中“Jan to Feb(一月至二月)”的范围。在 Essbase 遇到另一个成员名称(例如 Mar)之前,该名称一直有效。当 Essbase 遇到 Mar 时,范围将更改为 Jan、Feb、Mar。

Texas   Sales
                    Jan   Feb   Mar
Actual   “100-10"   98    89    58
         “100-20”   87    78    115

超出范围的数据值

Essbase 遇到成员范围时,它假定存在相应的数据值范围。如果数据值不在成员范围内,则数据加载将停止。Essbase 将在无效字段之前读取的任何数据字段加载到多维数据集,从而导致部分数据加载。

以下示例包含的数据字段比定义的成员范围中的成员字段多。数据加载到达 10 个数据字段时停止。Essbase 将 100 和 120 个数据字段加载到多维数据集。

Cola   Actual   East
        Jan   Feb
Sales   100   120   10
COGS    30    34    32

范围内的重复成员

源数据中的结构范围,以便 Essbase 正确解释它们。如果某个成员在一个范围内出现多次,则 Essbase 会忽略重复的成员。

下表显示了实际、预算、销售和销货成本的重复成员,以及两个范围:实际到预算和销售到销货成本。Essbase 会忽略实际、预算、销售和销货成本的重复实例(例如,在第二行中,将忽略重复的实际和预算):


Cola   East
      Actual   Budget   Actual   Budget
      Sales   Sales   COGS   COGS
Jan   108     110     49     50
Feb   102     120     57     60

对于第一个范围的第一个成员“实际”, Essbase 将数据值映射到第二个范围的每个成员(销售和销货成本)。然后, Essbase 继续转至第一个范围“预算”的下一个值,该值与第二个范围的每个成员相似。因此, Essbase 将按如下所示解释文件:

Cola   East
      Actual         Budget
      Sales   COGS   Sales   COGS
Jan   108     110    49      50
Feb   102     120    57      60

源数据中的列

了解如果未使用加载规则, Essbase 如何在数据加载期间处理列。加载到多维数据集的源数据的列可能是对称的或不对称的。

如果要执行维构建,则此信息不适用,因为维构建始终需要规则。如果要执行数据加载,则当未使用任何规则时,此信息适用(但在设计数据加载规则时,了解列也很有帮助)。

数据源通常包含字段列。Essbase 支持从对称或非对称列加载数据。

对称的列

对称列下具有相同数量的成员。在以下示例中,每个维列下都有一列成员。例如,产品在其下方有一列(100-10 和 100-10),市场在其下方有一列(德克萨斯州和俄亥俄州)。


Product    Measures   Market    Year   Scenario   
"100-10"   Sales      Texas    Jan    Actual     112
"100-10"   Sales      Ohio     Jan    Actual     145

以下文件中的列也是对称的,因为 Jan 和 Feb 的成员数相同:

                                 Jan               Feb
                           Actual   Budget   Actual   Budget
"100-10"   Sales   Texas   112      110      243      215
"100-10"   Sales   Ohio    145      120      81       102

非对称列

非对称列下有不同数量的成员。在以下示例中,Jan 和 Feb 列不对称,因为 Jan 在其下有两个列(实际和预算),而 Feb 在其下有一个列(预算):

                           Jan      Jan      Feb
                           Actual   Budget   Budget
"100-10"   Sales   Texas   112      110      243
"100-10"   Sales   Ohio    145      120      81

如果文件包含非对称列,则使用适当的成员名称标记每个列。

上面的示例有效,因为 Jan 标签现在超过了“实际”和“预算”。Essbase 很明显,这两个列都映射到 Jan。

以下示例无效,因为列标签不完整。“Jan(一月)”标签必须出现在“Actual(实际)”和“Budget(预算)”列上。

                           Jan               Feb
                           Actual   Budget   Budget
"100-10"   Sales   Texas   112      110      243
"100-10"   Sales   Ohio    145      120      81