暗黙的な共有の問題

シナリオ:

暗黙的な共有関係のあるメンバーの場合、親と子が同じOracle Hyperion Planningフォームに表示されると、親に入力された値のみが保持されます。次の例では、親と子の値は常に同じなため、PlanningによりParent AとChild 1間に暗黙の共有関係が作成されます。これらの例ではすべてのメンバーが「保管」データ・タイプに設定されているものとします。

例1:

   Parent A 
        Child 1 (+) 

例2:

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

ほとんどのPlanningアプリケーションはボトムアップ・アプリケーションなので、通常、親は読取り専用なため、データは子に入力されます。イベントの典型的なシーケンス:

  1. フォームに子が、通常、親の上に表示されます。

  2. 子に対し新規データが入力されます。

  3. フォームが保存されます。保存操作では、フォームは左から右へ、上から下へ読み取られるので、子は最初に保存されます。

  4. 次に、保存操作はグリッド内の最後の値(一番下で一番右の値)を取り出しますが、暗黙的な共有のため、それにより子の値は上書きされます。子に入力されたデータは破棄されます。

解決策:

Planningフォームの要件に応じて、これらの方法を使用して、暗黙的な共有を避けることができます。

  • 親と子が同じフォームにある場合: 集約の子としてダミーのメンバーを追加します。ダミーのメンバーはアウトラインに含まれますが、フォームでは使用されません。暗黙的な共有は親が集約の子のみを持つ場合には使用できません。

  • ラベルのみの親の場合: 存在する集約の子の数にかかわらず、最初の子メンバーを含む暗黙的な共有が存在します。この状況で暗黙的な共有を使用不可にするには、「ラベルのみ」ストレージ・タイプを変更するか、または同じフォームに親と子を含めないようにします。

  • 「共有しない」に設定できる親の場合: アプリケーションで必要な場合、親メンバーを「共有しない」ストレージ設定に設定できます。「共有しない」親は、複数の集約の子を持つ「保管」親と同様に動作します。ただし、「保管」親とは異なり、「共有しない」親は集約の実行後に、その子の集約された値のみを表示します。

注:

1つの子を持つ親の場合、デフォルトのストレージ・タイプの「保管」の使用(暗黙的な共有関係を保持)は通常有利です。それにより、作成されるブロック数、データベース・サイズ、計算時間および集約時間が削減されるからです。必要な場合にのみ、「共有しない」を使用してください。

暗黙的な共有の詳細は、 Oracle Essbaseデータベース管理者ガイド を参照してください。