集約ストレージ・キューブからのデータのクリア

Essbase集約ストレージ(ASO)キューブからすべてのデータをクリアすることも、指定したリージョンからデータをクリアして、他のリージョンにあるデータを保持することもできます。物理クリアまたは論理クリアを実行できます。

データをクリアするには、データのロードと同じアプリケーション権限(データベース更新権限以上)が必要です。

Essbase Webインタフェースデータのクリア・ジョブを使用するか、CLIのclearコマンドを使用するか、alter databaseMaxL文をリージョン内のデータのクリア文法とともに使用できます。このトピックの例では、MaxLを使用しています。

特定のリージョンからのデータのクリア

この方法は、履歴データを保持しながら、揮発性データ(過去1か月間のデータなど)を削除する場合に便利です。

ASOリージョンからデータをクリアする方法には、物理クリアと論理クリアがあります。

  • 物理クリア

    次に示すように、指定したリージョン内の入力したセルが集約ストレージ・キューブから物理的に削除されます。

    図37-2データのリージョンの物理的クリア


    このイメージは、物理的な方法を使用してデータをクリアするときに、入力セルがどのように物理的に削除されるかを示しています。

    キューブ内に複数のデータ・スライスがある場合は、リージョンの物理クリア操作によって、すべてのデータ・スライスがメイン・データ・スライスに自動的にマージされます。指定したリージョンのデータがクリアされた後、リージョンのクリア操作が発生する前にメイン・データ・スライスに存在したすべての集約ビューがEssbaseによって生成されます。

    データを物理的にクリアするプロセスが完了するまでの時間は、クリアされるデータのサイズではなく、入力データのサイズに比例します。したがって、この方法は、大きいデータ・スライスを削除する場合にのみ使用します。

    データを物理的にクリアするには、alter database MaxL文でclear data in region構文およびphysicalキーワードを使用します。

    alter database appname.dbname clear data in region 'MDX set expression' physical;

    時間を節約するために、MDX set expressionsのカンマ区切りリストを使用して複数の物理リージョンからクリアできます。

  • 論理的クリア

    次に示すように、指定したリージョン内の入力セルが負の相殺値を含む新しいデータ・スライスに書き込まれ、その結果、クリアする対象のセルの値がゼロになります。

    図37-3データのリージョンの論理的なクリア


    このイメージは、論理的な方法を使用してデータをクリアするときに、補正値を含む新しいデータ・スライスがどう作成されるかを示しています。

    リージョンの論理クリア操作によって、ゼロ値を含むデータ・スライスのみがメイン・データ・スライスに自動的にマージされます。キューブ内の他のデータ・スライスはマージされません。指定したリージョンのデータがクリアされた後、Essbaseによって、新しいデータ・スライスのみの集約ビューが生成されます。

    データを論理的にクリアするプロセスは、クリアされるデータのサイズに比例して完了する時間です。補正セルが作成されるため、このオプションではキューブのサイズが大きくなります。

    データを 論理的にクリアするには、alter database MaxL文でclear data in region構文を使用し、physicalキーワードを使用しません。

    alter database appname.dbname clear data in region 'MDX set expression';

    論理的にクリアされたリージョンに対する問合せでは、#MISSING値ではなくゼロ値が戻されます。空のセルの#MISSING値に依存する式を更新する必要がある場合があります。

    値がゼロのセルを削除するには、alter database MaxL文でmerge文法とremove_zero_cellsキーワードを使用します。

    alter database appname.dbname merge all data remove_zero_cells;

    ノート:

    2回目のリージョンの論理クリア操作では、最初の操作で作成された相殺セルがクリアされず、新しい相殺セルが作成されないため、この操作を同じリージョンで2回実行することはお薦めしません。

クリアするASOリージョンを指定する際は、次のガイドラインに従います。

  • リージョンは対称である必要があります。例

    • {(Jan, Budget)}は、JanのすべてのB Budgetデータをクリアする有効な対称領域です。

    • {(Jan, Forecast1),(Feb, Forecast2)}は、2つの非対称リージョン(Jan、Forecast1およびFEB、Forecast2)で構成されているため、無効なリージョンです

  • リージョン指定のディメンションの個々のメンバーは、保管済メンバーである必要があります。

  • リージョン内のメンバーは、次のものにできません。

    • 動的メンバー(暗黙的または明示的なMDX式を持つメンバー)

    • 属性ディメンションのメンバー

      セルを属性によってクリアする必要がある場合は、Attribute MDX関数を使用します。

  • リージョン内のメンバーは、保管階層の上位レベルのメンバーにでき、この方法は、複数のレベル0のメンバーを指定する場合に便利です。

    たとえば、Qrt1を指定できます。これは、Jan、FebおよびMar (Qrt1のレベル0の子)を指定することと同じです。


    このイメージは、イメージの前のテキストで説明されている、アウトラインを示しています。

    次の2つのMaxL文では、同じ結果が生成されます。

    alter database appname.dbname clear data in region '{Qtr1}';
    alter database appname.dbname clear data in region '{Jan, Feb, Mar}';
  • 物理クリアの場合のみ、リージョン内のメンバーは、代替階層の上位レベル・メンバーになる場合があります。

    たとえば、High End Merchandiseを指定できます。これは、Flat Panel、HDTV、Digital RecordersおよびNotebooks (High End Merchandiseの共有のレベル0の子)を指定することと同じです。


    このイメージは、イメージの前のテキストで説明されている、アウトラインを示しています。

    次の2つのMaxL文では、同じ結果が生成されます。

    alter database appname.dbname clear data in region '{High End Merchandise}';
    alter database appname.dbname clear data in region '{[Flat Panel],[HDTV],[Digital Recorders],[Notebooks]}';

    データを論理的にクリアするときに、代替階層のメンバーを指定するには、Descendants MDX関数を使用します。

    ノート:

    リージョンに代替階層の上位レベルのメンバーが含まれている場合は、パフォーマンスが低下することがあります。この場合は、レベル0のメンバーのみを使用することを検討してください。

  • MDXのセット式は一重引用符で囲む必要があります。

たとえば、Forecast1およびForecast2のシナリオのJanuaryのすべてのデータをクリアするには、次の文を使用します。

alter database ASOSamp.Basic clear data in region 'CrossJoin({Jan},{Forecast1, Forecast2})';

リージョンのクリア操作中は、キューブを更新する操作(データのロード、データ・スライスのマージまたは別のリージョンのデータのクリアなど)を実行できず、データのエクスポートもできません。キューブの問合せは可能です。ただし、問合せ結果は、リージョンクリア操作の前のデータ・セットに基づきます。

clear data in region句では、キューブ全体のデータはクリアできません。

すべてのデータの消去

集約ストレージ・キューブからすべてのデータをクリアすることは、ブロック・ストレージ・キューブの場合と同じです。キューブ全体をクリアするには、alter database MaxL文でresetキーワードを使用します。

alter database appname.dbname reset;