隐式共享问题

方案:

对于具有隐式共享关系的成员,如果父代和子代显示在同一个 Oracle Hyperion Planning 表单上,则将仅保留为父代输入的值。在以下示例中,Planning 将在父代 A 与子代 1 之间创建一种隐式共享关系,因为父代与子代的值始终相同。这些示例假设所有成员都被设置为“存储”数据类型。

示例 1:

   Parent A 
        Child 1 (+) 

示例 2:

   Parent A 
        Child 1 (+) 
        Child 2 (~) 
        Child 3 (~) 

因为大多数 Planning 应用程序都是自下而上的应用程序,父代是只读的,因此通常为子代输入数据。事件的典型顺序:

  1. 表单通常将子代显示在父代上方。

  2. 为子代输入新数据。

  3. 此时将保存表单。保存操作按从左至右、从上至下的顺序读取表单,因此会先保存子代。

  4. 然后,保存操作会读取网格中最后出现的值(最底层最右侧的值),由于隐式共享的原因,该操作会覆盖子代的值。为子代输入的数据被丢弃。

解决方案:

根据您的 Planning 表单的要求,可以使用下列方法来避免隐式共享。

  • 对于在相同表单上的父代和子代:添加一个虚拟成员作为聚合子代。该虚拟成员包括在大纲中,但不会在表单上使用。父代只有一个聚合子代时,将禁用隐式共享。

  • 对于“仅标签”父代:不管有多少聚合子代,都与第一个子代存在隐式共享。要禁用这种情况下的隐式共享,请更改“仅标签”存储类型,或者避免将父代和子代包括在同一个表单上。

  • 对于可设置为“从不共享”的父代:如果对应用程序有必要,则可将父代成员设置为“从不共享”存储设置。“从不共享”父代的作用类似于具有多个聚合子代的“存储”父代。但是,与“存储”父代不同,“从不共享”父代仅显示运行聚合后其子代的聚合值。

注:

对于具有单个子代的父代,使用默认存储类型“存储”(保留隐式共享关系)通常更有优势,因为这样做可以减少创建的块数量和数据库大小并缩短计算和聚合时间。请仅在必要时使用“从不共享”。

有关隐式共享的详细信息,请参阅《Oracle Essbase Database Administrator's Guide》