集約ストレージ・キューブからのデータのクリア
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;