BSOキューブの最適化

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

  • ゼロ・ブロックを#missingブロックに置換
  • #missingブロックを削除してデータベース・サイズを削減
  • データ型がスマート・リスト、日付、テキストおよびパーセンテージのメンバーの集計演算子として、「なし」を使用

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:

    • UPDATECALCCREATENONMISSINGBLKおよび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:

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

キューブから#Missingブロックを削除

#missingブロックを削除してBSOデータベース・サイズを削減します。次の2つの方法のいずれかを使用して、#missingブロックをクリアします:

方法1

明示的な密の再構築を実行します

Planningでは、このプロセスを手動またはジョブを介して実行できます。データベースの再構築は、EPM自動化およびREST APIを使用して実行することもできます。

Calculation Managerを使用してデータベースの再構築を実行するには:

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

情報ソース:

方法2

すべてのデータをクリアします。事前に環境にアップロードしたファイルからデータを再ロードします。

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

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