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

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

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

Essbase Webインタフェース「データのクリア」ジョブを使用するか、CLIのclearコマンドを使用するか、alter database MaxL文をclear data in region構文とともに使用できます。このトピックの例は、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セット式のカンマ区切りリストを使用して複数の物理リージョンからクリアできます。

  • 論理クリア

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

    図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のすべての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;