BSOキューブの最適化

BSOキューブを最適化すると、データベースのサイズが小さくなります。次のプロセスが含まれます:

  • 明示的な再構築を実行します。
  • Essbaseブロック分析レポートを実行して、BSOキューブ内の繰返し値およびゼロを特定します。
  • ゼロ・ブロックを#missingブロックに置き換えます。
  • データ型がスマート・リスト、日付、テキストおよびパーセンテージのメンバーの集計演算子として、「なし」を使用します。

明示的なキューブ再構築の実行

Planningでは、明示的なキューブ再構築を手動またはジョブを介して実行できます。また、restructureCube EPM自動化コマンドまたはキューブの再構築REST APIを使用してキューブを再構築することもできます。

Note:

  • これはデータベース・リフレッシュではなく、キューブの明示的な密の再構築です。
  • 明示的な再構築により、#missingブロックが削除されてBSOデータベース・サイズが縮小されます。

Calculation Managerを使用してキューブを再構築するには:

  1. 「ナビゲータ」で、「作成および管理」の下にある「ルール」を選択して、「Calculation Manager」を開きます。
  2. 「アクション」、「データベース・プロパティ」の順に選択します。
  3. 「エンタープライズ・ビュー」で、再構築するキューブを含むデータベースを展開します。
  4. 再構築するキューブを右クリックし、次に「データベースの再構築」を選択します。

キューブ内のデータの分析

まず、Essbaseブロック分析レポートを生成します。次の情報ソースを参照してください。

Note:

Essbaseブロック分析レポートを生成するためのソースとして使用されるエクスポート・ファイルにキューブ・データをエクスポートすると、キューブは読取り専用モードに設定されます。キューブのサイズに応じて、エクスポートには時間がかかる場合があります。そのため、この分析を実行するには、インスタンスをテスト・インスタンスにクローニングすることをお薦めします。

Essbaseブロック分析レポートは、次の3つの領域に関する情報を提供します:

  1. ゼロのみを含むブロックのパーセンテージ。これは、ゼロのみを含むブロックを、エクスポート・ファイルに含まれるすべてのブロックに対するパーセンテージとして示します
  2. ゼロ付近の値のみを含むセルのパーセンテージ。ブロック内のゼロ付近の値(0.000000001604など)を含むセルの割合を示します。

  3. 数値セルの繰返し値上位10件(数値セルのパーセンテージ)。これは、繰返し値の上位10件を、エクスポート・ファイル内のすべての値に対するパーセンテージとして示します。
  4. 繰返し値を持つ密メンバーの組合せ上位100件。これは、キューブ内で繰返し値を持つ密の組合せ上位100件を示します。「セルの値」列には、各メンバーの値が、階層内に表示される順序で個別の列として表示されます。たとえば、期間が列にある場合、1月、2月などには別の列が設けられます。それ以外の密ディメンションは行に表示されます。これにより、繰返し値の場所が識別しやすくなります。

BSOキューブのゼロ付近の値のゼロへの変換

BSOキューブ内の疎ディメンションのゼロ付近の値または非常に小さい値を削除するには、@roundまたは@truncate関数を使用し、それらの値をゼロに変換します。その後、#missingブロックに置き換えることで、これらのゼロ値を削除できます。BSOキューブのゼロの削除を参照してください。

ゼロ付近の値をゼロに変換するには:

  1. ゼロ付近の値または非常に小さい値をゼロに丸めるか切り捨てるビジネス・ルールを作成します。

    このルールを最適化するために、ビジネス・ルール環境を構成します。このルールは現在、レベル0で実行されるように設定されています。ゼロ付近の値がゼロに変換され、キューブからクリアされた後(次の項を参照)、SET AGGMISSGが有効になっている場合、次回の集計時に上位レベルのメンバーからもこれらの値がクリアされます。

    SET UPDATECALC OFF;
    SET CREATENONMISSINGBLK OFF;
    SET CREATEBLOCKONEQ OFF;
    FIXPARALLEL(NumberThreads, @RELATIVE("SparseDim",0))
    FIX on all level 0 sparse dimension @RELATIVE(SparseDim,0)
    

    Note:

    • UPDATECALC、CREATENONMISSINGBLKおよびCREATEBLOCKONEQは、デフォルトでは無効になっていますが、ビジネス・ルールで明示的にオフにすることをお薦めします。
    • SparseDimは、ゼロ・ブロックが置換される疎ディメンションの名前に必ず置換してください。
    • FIXPARALLELを使用してパフォーマンスを向上させます(例: FIXPARALLEL(4, @RELATIVE("Scenario",0)))。
    • ENDFIXPARALLELを必ず指定してください。
  2. 最適化された次の計算設計のいずれかを使用して、ゼロ付近の値をゼロ値に変更します。ディメンション設計、データ・パターンおよびプロセスに応じて、パフォーマンスが向上する計算設計を選択します。

    計算設計1 (密または疎の計算)

    この計算では、ゼロ付近の値がゼロに変更されます。

    "DenseMbr" = @round("DenseMbr",<Insert Decimal Place>);
    "SparseMbr" = @round("SparseMbr ",<Insert Decimal Place>);
    

    計算設計2 (ブロック・モードの密メンバーのみ)

    "DenseBlockHeader" (
        @CALCMODE(BLOCK);
           "DenseMbr" =@round("DenseMbr",<Insert Decimal Place>);
    )
    

    Note:

    DenseMbr、SparseMbr、およびDenseBlockHeaderを実際の名前に置き換えます。

    このルールを実行した後に、結果として生じるゼロを削除します。手順は、BSOキューブのゼロの削除を参照してください。

BSOキューブのゼロの削除

キューブ内の疎ディメンションのゼロ・ブロックを#missingブロックに置換して削除することから始めます。

ゼロ・ブロックを#missingブロックに置換するには:

  1. ゼロ・ブロックを#missingブロックに置換するビジネス・ルールを作成します。

    このビジネス・ルールを最適化するためのビジネス・ルール環境を設定します:

    SET UPDATECALC OFF;
    SET CREATENONMISSINGBLK OFF;
    SET CREATEBLOCKONEQ OFF;
    FIXPARALLEL(NumberThreads, @RELATIVE("SparseDim",0))
    FIX on all level 0 sparse dimension @RELATIVE(SparseDim,0)
    

    Note:

    • UPDATECALC、CREATENONMISSINGBLKおよびCREATEBLOCKONEQはデフォルトで無効になっていますが、ビジネス・ルールで明示的にオフにすることをお薦めします。
    • SparseDimは、ゼロ・ブロックが置換される疎ディメンションの名前に必ず置換してください。
    • FIXPARALLELを使用してパフォーマンスを向上させます(例: FIXPARALLEL(4, @RELATIVE("Scenario",0)))。
    • ENDFIXPARALLELを必ず指定してください。
  2. 次の最適化された計算設計のいずれかを使用して、ゼロ・ブロックを#missingブロックに変更します。ディメンション設計、データ・パターンおよびプロセスに応じて、パフォーマンスが向上する計算設計を選択します。

    計算設計1 (密または疎の計算)

    この計算の結果は元の値になり、ゼロ値が#missingに変更されます。

    "DenseMbr" = "DenseMbr" * "DenseMbr" / "DenseMbr";
    "SparseMbr" = "SparseMbr" * "SparseMbr" / "SparseMbr";

    計算設計2 (ブロック・モードの密メンバーのみ)

    "DenseBlockHeader" (
        @CALCMODE(BLOCK);
           IF ("DenseMbr" == 0) 
               "DenseMbr" = #Missing;
           ENDIF

    Note:

    DenseMbrとSparseMbr、およびDenseBlockHeaderを実際の名前に置換します。

データ型がスマート・リスト、日付、テキストおよびパーセンテージのメンバーの集計演算子として「なし」を使用

データ型がスマート・リスト、日付、テキストおよびパーセンテージのディメンション・メンバーは、集計演算子として「なし」を使用する必要があります。「加算」集計演算子を使用すると、値を加算せずにキューブ・サイズが増加します。集計演算子として「無視」を使用すると、メンバーのディメンション内でのみ加算が停止します。他のディメンションからの値のロールアップが停止することはありません。これにより、不要なブロックが作成される可能性があります。