集約ストレージ・データベースの準備
この項のトピックでは、集約ストレージ・データベースとブロック・ストレージ・データベース間のディメンション構築およびデータ・ロード・プロセスの違いについて説明します。 データ・ロード、ディメンション構築およびルール・ファイルの概念と手順をよく理解している必要があります。
データ・ソースを使用したアウトラインの変更およびデータ値のロードの詳細は、「データ・ロードおよびディメンション構築の理解」および「データ・ロードまたはディメンション構築の実行およびデバッグ」を参照してください。
構築可能な集約ストレージ・アウトラインの最大サイズの詳細は、「アウトライン・ページング制限」を参照してください。
集約ストレージ・データベースでのディメンションの構築
集約ストレージ・ディメンション構築でアウトラインを変更すると、ディメンション構築の終了時にすべての集約ビューまたはすべてのデータ値がデータベースからクリアされる可能性があります。 「集約ストレージ・データベースの再構築」には、アウトライン変更の結果が記述されます。
複数のデータ・ソースを使用してディメンションを構築する場合、増分ディメンション構築を実行することで処理時間を節約できます。 増分ディメンション構築では、すべてのデータ・ソースが処理されるまで再構築を延期できます。
増分ディメンション構築の詳細は、「遅延再構築ディメンション構築の実行」を参照してください。
ブロック・ストレージ・アウトラインと集約ストレージ・アウトラインのアウトライン特性の違いは、データ・ソースおよびルール・ファイルに影響します。 たとえば、ディメンションを疎または密として定義することは、集約ストレージ・アウトラインには関係ありません。
集約ストレージ・ディメンション構築のルール・ファイルの相違点
集約ストレージ・アウトラインを構築するためのルール・ファイルでは、集約ストレージ・アウトラインに適用されるアウトライン・プロパティおよびフィールド・タイプのみを定義する必要があります。
ブロック・ストレージ・アウトラインを集約ストレージに変換した後、ルール・ファイルを集約ストレージ・バージョンのアウトラインに関連付けて更新します。
フィールド・タイプの差異
このフィールドには、アウトラインでメンバーが評価される順序を指定する数値(0-127)が含まれます。 0より小さい値または127より大きい値は、それぞれ0および127にリセットされます。 警告メッセージは表示されません。 解決順プロパティの詳細は、「計算順序」を参照してください。
解決順の有効な作成メソッド:
-
Generation
-
Level
-
親子参照
集約ストレージ・ディメンション構築のデータ・ソースの相違点
次の表に、集約ストレージ・データベース・アウトラインのメンバーのプロパティとしてディメンション構築データ・ソースで認識されるメンバー・コードを示します。 他の連結コードは無視され、+ (追加)が想定されます。 (集約ストレージ・アウトラインを変更するためのデータ・ソースには、ブロック・ストレージ・アウトラインにのみ適用されるフィールド値を含めないでください。)
表36-1 集約ストレージ・アウトラインのメンバーの連結コード
コード | 説明 |
---|---|
% |
連結内の現在の合計に対するパーセンテージとして表されます(動的階層のメンバーにのみ適用されます) |
* |
連結の現在の合計に乗算します(動的階層のメンバーにのみ適用されます) |
+ |
連結の現在の合計に加算されます(動的階層のメンバーにのみ適用されます) |
- |
連結の現在の合計から減算します(動的階層のメンバーにのみ適用) |
/ |
連結の現在の合計で除算します(動的階層のメンバーにのみ適用) |
~ |
連結から除外します(動的階層のメンバーまたは保管階層のラベルのみメンバーの下のメンバーにのみ適用されます) |
C |
保管階層の最上位としてのメンバーの設定(ディメンション・メンバーまたは世代2メンバーに適用) |
D |
メンバーを動的階層の最上位として設定(ディメンション・メンバーまたは世代2メンバーに適用) |
H |
ディメンション・メンバーを複数階層使用可能として設定(ディメンション・メンバーにのみ適用) |
K |
タイム・バランス・プロパティをNONEにリセットします(勘定科目ディメンションにのみ適用されます)。 |
N |
データ共有を許可しません |
O |
ラベルのみとしてタグ付け |
P |
タイム・バランス・スキップ・オプションをNONEにリセットします(勘定科目ディメンションにのみ適用されます)。 |
通貨名および通貨カテゴリ・フィールド・タイプは、集約ストレージ・アウトラインではサポートされていません。
集約ストレージ・アウトラインでは、MDX数値式と同じフォーマットで式を指定する必要があります。
集約ストレージ・データベースでの代替階層の構築
集約ストレージ・アウトラインで共有メンバーを構築するには、ルール・エディタで次の選択を行います:
-
「プロパティ」タブで「自動構成」を選択
-
「ディメンション」タブの「ディメンション・プロパティ」で、「一般」タブの「共有」を選択します
自動構成および共有を有効にすると、新しい親の下に共有メンバーとして重複メンバーが自動的に作成されます。
ノート:
重複生成(DUPGEN)メソッドを使用した集約ストレージ・アウトラインでの代替階層の構築には制限があります。
注意:
集約ストレージ・データベースの代替階層では、level-0メンバーにのみ属性を関連付けることができます。
集約ストレージ・データベースでの排他的操作の理解
集約ストレージ・データベースでは、複数の排他的操作を同じデータベースで同時に実行することはできません。 1つの排他的操作が実行中で、2つ目の排他的操作が同時に試行されると、2つ目の操作は拒否され、最初の操作の進行中は操作を続行できないことを示すメッセージが表示されます。 たとえば、集約ストレージ・データベースで部分データ・クリアを実行する場合、操作によってデータベース内の異なるリージョンがクリアされる場合でも、別の部分データ・クリアをデータベースで同時に実行することはできません。 ほとんどの排他的操作は相互に排他的ですが、いくつかの例外があります。
排他的な操作と例外:
-
Export
エクスポートは読取り専用操作であるため、複数のエクスポート操作を同時に実行できます。 エクスポート操作は、作成集計およびバックアップと同時に実行できますが、どちらも排他的操作です。ただし、エクスポートは他の排他的操作とは互換性がありません。
-
集計の作成
-
バックアップ(データベースを読取り専用アーカイブ・モードにする)
-
データ・ロード(データベースへのロード・バッファの内容のコミット)
集約ストレージ・ロード・バッファの作成およびロード・バッファへのデータのロードは、排他的な操作ではありません。 これらの操作は、他の操作と同時に実行できます。 ただし、ロード・バッファ内のデータをデータベースにコミットする操作は排他的です。
-
スプレッドシートの送信操作(セルの更新など)
別の排他的操作が試行されている間に送信操作が実行されている場合、新しい操作は送信操作が完了するまで待機してから続行します。 送信操作と互換性はありませんが、送信操作は常に小さく高速(5秒未満)であるとみなされるため、新しい操作はエラーになりません。 これは、多くのユーザーが、相互に互換性がないために拒否されずにスプレッドシート送信操作を同時に実行できることを意味します。
ノート:
送信操作の実行中に複数の排他的操作が試行される場合、送信操作の完了後に新しい排他的操作が実行される順序はランダムです。順序は、新しい排他的操作が試行された順序に基づきません。 たとえば、送信操作が実行中で、別のタイプの排他的操作が試行された場合、新しい排他的操作は送信操作が完了するまで待機してから続行します。 一方、他のユーザーがさらに多くの送信操作を試行すると、それらの送信操作は、その後に試行された場合でも、他の排他的操作の前に実行される可能性があります。 したがって、実行を待機している送信操作が少なくとも1つあるかぎり、排他的操作は無限に待機する可能性があります。
-
スライスのマージ
-
データ・クリア操作(完全、集計のみおよび一部)
問合せは、すべての排他的操作と同時に実行できます。 ただし、操作によってデータベース内のデータが追加、変更または削除された場合、変更が問合せに表示されると、操作の最後に次の順序が発生します:
-
新しい問合せの開始は一時的にブロックされます(問合せは待機します)。
-
既存の問合せの実行が終了します。
-
排他的操作によるデータ変更は、データベースにコミットされます。
-
待機中の問合せは続行されます。
集約ストレージ・キューブのデータを変更する操作のため、問合せが拒否または取り消されることはありません。
集約ストレージ・データベースへのデータのロード
集約ストレージ・データベースを使用すると、最大100万以上のメンバーを含む非常に大きいディメンションの分析が容易になります。 このような大規模なデータベースへのデータ値のロードを効率的にサポートするために、Essbaseは次のことを行います:
-
一時集約ストレージ・データ・ロード・バッファを介して複数のデータ・ソースを処理できます
-
データ・ロード・バッファが使用するリソースの割合を制御できます
-
集約ストレージ・データベースに複数のデータ・スライスを含めることができます(データベースへの問合せは各スライスにアクセスし、すべてのデータ・セルを収集します)
-
増分データのサイズに比例した時間内に完了する増分データ・ロード・プロセスを提供
集約ストレージ・データベースに値をロードするには、「Essbase webインタフェース」のジョブ・ページを使用するか、MaxLのalter databaseおよびimport data文を使用します。 このドキュメントの例は、MaxLの使用に基づいています。
ノート:
値が集計によって計算および格納されている場合、Essbaseでは、データ値が変更されると、上位レベルの格納された値が自動的に更新されます。 追加の計算ステップは必要ありません。 集計の存在とサイズは、データ・ロードの実行にかかる時間に影響する可能性があります。
データをデータベースにロードする場合、データをエクスポートできません。
データ・ロード・バッファを使用したデータの増分ロード
import data MaxL文を使用して単一のデータ・ソースからデータ値をロードする場合、集約ストレージ・データ・ロード・バッファは必要ありません。
複数のimport database data MaxL文を使用してデータ値を集約ストレージ・データベースにロードする場合、最初に一時データ・ロード・バッファに値をロードし、すべてのデータ・ソースの読取り後にストレージへの最終書込みを行うことで、パフォーマンスを大幅に向上させることができます。
集約ストレージ・データ・ロード・バッファでは、Essbaseは、すべてのデータ・ソースの読取り後に値をソートしてコミットします。 特定のデータ・セルで複数の(または重複する)レコードが検出された場合、値は累積されます。 その後、Essbaseは累積値(既存のデータ値に対する置換、加算または減算)をデータベースに格納します。 集約ストレージ・データ・ロード・バッファを使用すると、全体的なデータ・ロードのパフォーマンスを大幅に向上できます。
ノート:
集約ストレージ・データ・ロード・バッファを使用する場合、データ・バッファの内容をデータベースにロードするときに、データ・ソースのセット全体に対して値の置換、加算または減算の選択肢が指定されます。
データ・ロード・バッファがメモリーに存在している間は、集計の作成やスライスのマージはできません。これは、これらの操作がリソース集中型であるためです。 ただし、他のデータ・ロード・バッファにデータをロードし、データベースで問合せやその他の操作を実行できます。 完全なデータ・セットがデータベースにコミットされて集計が作成されるまで、問合せの待機が短い場合があります。
データ・ロード・バッファは、バッファの内容がデータベースにコミットされるか、アプリケーションが再起動されるまでメモリー内に存在し、そこでバッファが破棄されます。 コミット操作が失敗した場合でも、バッファは破棄され、データはデータベースにロードされません。 alter database MaxL文を使用して、データ・ロード・バッファを手動で破棄できます。
ノート:
バッファの内容をコミットする前にアプリケーションを停止すると、バッファが破棄されます。 この場合、アプリケーションを再起動した後、新しいバッファを初期化してデータをロードする必要があります。
集約ストレージ・データベースにデータ・ロード・バッファを使用するには:
次の増分データ・ロードの例は、新しいデータ値が既存の値と交差しない場合に最適なパフォーマンスを提供します:
-
ignore_missing_valuesおよびignore_zero_valuesプロパティを使用して、単一のデータ・ロード・バッファを作成します。 例:
alter database ASOsamp.Sample initialize load_buffer with buffer_id 1 property ignore_missing_values, ignore_zero_values;
データベースの更新中にデータ・リクエストの送信にデータベースが使用可能である必要がある場合は、80%に設定されたresource_usage文法を使用してデータ・ロード・バッファを初期化します。 例:
alter database ASOsamp.Sample initialize load_buffer with buffer_id 1 resource_usage 0.8 property ignore_missing_values, ignore_zero_values;
-
データをバッファにロードします。 例:
import database ASOsamp.Sample data from server data_file 'file_1.txt' to load_buffer with buffer_id 1 on error abort; import database ASOsamp.Sample data from server data_file 'file_2' to load_buffer with buffer_id 1; on error abort;
-
スライスを作成して値を追加することで、データ・ロード・バッファの内容をデータベースにコミットします。 例:
import database ASOsamp.Sample data from load_buffer with buffer_id 1 add values create slice;
データ・ロード・バッファのリソース使用率の制御
増分データ・ロードを実行する場合、Essbaseはデータのソートに集約ストレージ・キャッシュを使用します。 パーセンテージを指定することで、データ・ロード・バッファで使用できるキャッシュの量を制御できます。 パーセンテージは.01から1.0までの数値で、小数点以下の2桁のみが意味を持ちます。たとえば、0.029は0.02として解釈されます。 デフォルトでは、データ・ロード・バッファのリソース使用率は1.0に設定されており、データベースに作成されるすべてのデータ・ロード・バッファの合計リソース使用率は1.0を超えることはできません。 たとえば、サイズが0.9のバッファが存在する場合、サイズが0.1より大きい別のバッファは作成できません。
ノート:
送信操作では、サイズが0.2のロード・バッファが内部的に作成されるため、デフォルト・サイズの1.0のロード・バッファでは、データ・ロード・バッファ・リソースが不足しているため、送信操作が失敗します。
バッファで使用できるリソースの量を設定するには、「Essbase webインタフェース」でデータ・ロードを開始するときの割合を指定します。 MaxLを使用している場合は、resource_usage文法でalter database MaxL文を使用します。
たとえば、resource_usageを合計キャッシュの50%に設定するには、次の文を使用します:
alter database ASOsamp.Sample
initialize load_buffer with buffer_id 1
resource_usage .5;
データ・ロード・バッファのプロパティの設定
データを増分的にロードする場合、データをデータ・ロード・バッファにロードするときに、ソース・データの欠損値およびゼロ値がどのように扱われるかを指定できます。
重複セルのセル競合を解決するために、ロード・バッファにロードされた最後のセルを使用するかどうかを指定できます。
データ・ロード・バッファのプロパティ:
-
ignore_missing_values: 受信データ・ストリームの#MI値を無視
-
ignore_zero_values: 受信データ・ストリームのゼロを無視
-
aggregate_use_last: 最後にロード・バッファにロードされたセルの値を使用して、重複するセルを結合
ノート:
テキストおよび日付値を集約ストレージ・データベースにロードする場合は、aggregate_use_lastプロパティを使用して無効な集約を排除します。 その他のガイドラインについては、「テキストおよび日付メジャーのロード、クリアおよびエクスポート」を参照してください。
コマンドで複数のプロパティを使用し、競合がある場合は、リストされている最後のプロパティが優先されます。
データ・ロード・バッファのプロパティを設定するには、property文法でalter database MaxL文を使用します。
例:
alter database ASOsamp.Sample
initialize load_buffer with buffer_id 1
property ignore_missing_values, ignore_zero_values;
セルの競合の解決
デフォルトでは、同じキーを持つセルが同じデータ・ロード・バッファにロードされると、Essbaseは値を加算してセルの競合を解決します。
ロード・バッファに最後にロードされたセルの値を受け入れることで、重複するセルを結合するデータ・ロード・バッファを作成するには、aggregate_use_last文法でalter database MaxL文を使用します。
例:
alter database ASOsamp.Sample
initialize load_buffer with buffer_id 1
property aggregate_use_last;
ノート:
aggregate_use_last文法でデータ・ロード・バッファを使用する場合、重複キーがなくてもデータ・ロードは大幅に遅くなります。
複数のデータ・ロードのパラレル実行
集約ストレージ・データベースには、複数のデータ・ロード・バッファが存在できます。 時間を節約するために、複数のデータ・ロード・バッファに同時にデータをロードできます。
データベースでアクティブにできるデータ・ロード・コミット操作は一度に1つのみですが、同じコミット操作で複数のデータ・ロード・バッファをコミットできます。これは、バッファを個別にコミットするよりも高速です。
複数のデータ・ロード・バッファに同時にデータをロードするには、個別のMaxL Shellセッションを使用します。 たとえば、あるMaxL Shellセッションで、IDが1のバッファにデータをロードします:
alter database ASOsamp.Sample
initialize load_buffer with buffer_id 1 resource_usage 0.5;
import database ASOsamp.Sample data
from data_file "dataload1.txt"
to load_buffer with buffer_id 1
on error abort;
同時に、別のMaxL Shellセッションで、IDが2のバッファにデータをロードします:
alter database ASOsamp.Sample
initialize load_buffer with buffer_id 2 resource_usage 0.5;
import database ASOsamp.Sample data
from data_file "dataload2.txt"
to load_buffer with buffer_id 2
on error abort;
データがデータ・ロード・バッファに完全にロードされたら、次のいずれかのMaxL文を使用し、バッファIDのカンマ区切りリストを使用して両方のバッファの内容をデータベースにコミットします:
たとえば、次の文はバッファ1および2の内容をロードします:
import database ASOsamp.Sample data
from load_buffer with buffer_id 1, 2;
ノート:
SQLデータを集約ストレージ・データベースにロードする場合、最大8つのルール・ファイルを使用してデータをパラレルにロードできます。 この機能は、前述のプロセスとは異なります。 複数のSQLデータ・ロードをパラレルで実行する場合、「複数のrules_fileの使用」文法で単一のimport database MaxL文を使用できます。 Essbaseは、複数の一時集約ストレージ・データ・ロード・バッファ(ルール・ファイルごとに1つずつ)を初期化し、すべてのバッファの内容を1回の操作でデータベースにコミットします。 「Oracle Essbase SQLインタフェース・ガイド」を参照してください。
集約ストレージ・データベースのデータ・ロード・バッファのリスト
集約ストレージ・データベースには、複数のデータ・ロード・バッファが存在できます。 集約ストレージ・データベースに存在するデータ・ロード・バッファのリストおよび説明は、list load_buffers文法でquery database MaxL文を使用してください:
query database appname.dbname list load_buffers;
この文は、既存の各データ・ロード・バッファに関する次の情報を戻します:
表36-2 データ・ロード・バッファ情報
フィールド | 説明 |
---|---|
buffer_id |
データ・ロード・バッファのID (1から4,294,967,296までの数値)。 |
internal |
データ・ロード・バッファがEssbaseによって内部的に作成されたか(TRUE)、ユーザーによって作成されたか(FALSE)を示すブール値。 |
active |
データ・ロード・バッファが現在データ・ロード操作で使用されているかどうかを示すブール値。 |
resource_usage |
データ・ロード・バッファで使用できる集約ストレージ・キャッシュの割合(.01から1.0までの数値)。 |
集計メソッド |
バッファ内の同じセルの複数の値を結合するために使用されるメソッドの1つです:
|
ignore_missings |
受信データ・ストリームの#MI値を無視するかどうかを指定するブール値。 |
ignore_zeros |
受信データ・ストリームのゼロを無視するかどうかを指定するブール値。 |
データ・スライスの作成
データ・ロード・バッファを集約ストレージ・データベースに増分コミットして、スライスを作成できます。 新しいスライスをデータベースにロードした後、新しいデータが問合せで参照できるようになる前に、Essbaseによって、スライスに関する必要なすべてのビュー(集約ビューなど)が作成されます。
データ・スライスを作成すると、増分データ・ロードのパフォーマンスが向上するため便利です。 増分データ・ロードにかかる時間は、新しいデータの量に比例します。データベースのサイズはファクタではありません。
データ・スライスを作成するには、「スライスの作成」文法でimport database MaxL文を使用します。
たとえば、値をオーバーライドしてスライスを作成するには(デフォルト)、次の文を使用します:
import database ASOsamp.Sample data
from load_buffer with buffer_id 1
override values create slice;
ノート:
スライスの作成時にオーバーライド値を使用すると、#MISSINGの値はゼロに置き換えられます。 このオプションを使用すると、値の追加または値の減算オプションを使用するよりも大幅に遅くなります。
増分データ・スライスのマージ
集約ストレージ・データベースへのデータ・ロード時の増分データ・スライスの自動マージ
AUTOMERGEおよびAUTOMERGEMAXSLICENUMBERの構成設定を使用して、集約ストレージ・データベースへのデータ・ロード時にEssbaseで増分データ・スライスを自動的にマージするかどうかを指定できます。
AUTOMERGE構成設定オプション:
-
ALWAYS-集約ストレージ・データベースへのデータ・ロード時に増分データ・スライスを自動的にマージすることを指定します。 デフォルトでは、マージは連続する4つの増分データ・スライスごとに1回実行されます。 ただし、AUTOMERGEMAXSLICENUMBER構成設定が使用されている場合は、AUTOMERGEMAXSLICENUMBER値を超えると自動マージ・プロセスがアクティブ化されます。 増分データ・スライスのサイズは、マージするデータ・スライスを選択するファクタではありません。
デフォルト値はALWAYSです。
-
NEVER-集約ストレージ・データベースへのデータ・ロード時に増分データ・スライスを自動的にマージしないことを指定します。 増分データ・スライスを手動でマージするには、merge文法でalter database MaxL文を使用します。
-
SELECTIVE-AUTOMERGEMAXSLICENUMBER構成設定で指定された増分データ・スライスの数を超えた場合に、増分データ・スライス自動マージ・プロセスをアクティブ化することを指定します。 データ・ロードの増分データ・スライスの数がAUTOMERGEMAXSLICENUMBERの値を超えない場合、自動マージ・プロセスはアクティブ化されません。
増分データ・スライスの手動マージ
すべての増分データ・スライスをメイン・データベース・スライスにマージしたり、メイン・データベース・スライスを変更せずにすべての増分データ・スライスを単一のデータ・スライスにマージできます。 スライスをマージするには、データをロードする場合と同じ権限(管理者またはデータベース・マネージャ権限)を持っている必要があります。
新しい入力ビューがデータベースに書き込まれると、Essbaseによってスライスの集約ビューが作成されます。 新しいスライス用に作成されるビューは、メイン・データベース・スライスに存在するビューのサブセットです。
ノート:
マージの実行中はデータをエクスポートできません。
論理的なリージョンのクリア操作を使用してリージョンからデータをクリアし、クリアしたセルの値がゼロになった場合、マージ操作中にゼロ値のセルを削除することを選択できます。
マージ操作を実行するには、merge文法でalter database MaxL文を使用します。
たとえば、すべての増分データ・スライスをメイン・データベース・スライスにマージするには、次の文を使用します:
alter database ASOsamp.Sample
merge all data;
すべての増分データ・スライスをメイン・データベース・スライスにマージし、ゼロ値のセルを削除するには、次の文を使用します:
alter database ASOsamp.Sample
merge all data remove_zero_cells;
すべての増分データ・スライスを単一のデータ・スライスにマージするには、次の文を使用します:
alter database ASOsamp.Sample
merge incremental data;
ノート:
集約ストレージ・アプリケーションをコピーする前に、すべての増分データ・スライスをメイン・データベース・スライスにマージする必要があります。 マージされていない増分データ・スライスのデータはコピーされません。
データベースまたは増分データ・スライスの内容の置換
短いデータ待機時間を維持しながら完全にリロードするのに十分に小さいデータ・セットの場合、Essbaseはデータベースの現在の内容を削除し、データベースを指定されたデータ・ロード・バッファの内容で置き換えることができます。 アトミック置換機能は、サービスを中断することなく、データベースの古いコンテンツを問い合せて新しいコンテンツに遷移します。 新しくロードされたデータ・セットが集計され、置換されたデータ・セットに対して存在していたビューと同じビューのセットが作成されます。
Essbaseでは、データベース内のすべての増分データ・スライスの内容を原子的に置換することもできます。 更新されない比較的大規模な静的データ・セットと、個々の更新が識別は困難だが揮発性データ・セットに限定される比較的小さい揮発性データ・セットにデータを分割できる状況を考えてみます。 たとえば、大規模な静的データ・セットは過去3年間の履歴トランザクション・データで構成されていますが、過去2か月間のトランザクション・データについては、ユーザーはソース・データベースのトランザクションの特性を変更できます。 これらの変更のトラッキングは、非常に複雑になる場合があります。 静的データ・セットをデータベースのメイン・スライスとして、揮発性データ・セットを1つ以上の増分スライスとしてロードできます。
Essbaseは、すべての増分データ・スライスの現在の内容を削除し、指定されたデータ・ロード・バッファの内容で(「値の追加」文法を使用して)新しいスライスを作成します。 新しくロードされたデータ・セットは、メイン・スライスに存在するビューのセットに基づいて集計ビューで拡張されます。
ノート:
override文法を使用するには、パフォーマンスを最適化するために、ignore_missing_valuesプロパティを使用してデータ・ロード・バッファを作成します。 また、静的データ・セットと揮発性データ・セットの間に競合がないことを確認する必要があります(たとえば、同じセルの各データ・セットに値を設定しないでください)。
データベースの内容またはデータベース内の増分データ・スライスを置き換えるには、import database MaxL文をoverride文法で使用します。
たとえば、データベースの内容を置き換えるには、次の文を使用します:
import database ASOsamp.Sample data
from load_buffer with buffer_id 1
override all data;
すべての増分データ・スライスの内容を新しいスライスに置き換えるには、次の文を使用します:
import database ASOsamp.Sample data
from load_buffer with buffer_id 1
override incremental data;
ノート:
オーバーライド置換が失敗した場合、Essbaseは引き続き古いデータ・セットを処理します。
増分データ・スライス統計の表示
Essbaseでは、増分データ・スライスのサイズと数、および増分データ・スライスを問い合せるコストに関する統計が提供されます。
問合せがすべての増分データ・スライスにアクセスするのにかかる時間は、パーセント(.01以上1.0以下)で表されます。 データベースにメイン・スライスと複数の増分データ・スライスがある場合、0.66の問合せ統計は、問合せ時間の3分の2が増分データ・スライスの問合せに費やされ、3分の1がメイン・データ・スライスの問合せに費やされたことを意味します。 増分データ・スライスの問合せコストが高すぎる場合は、スライスをマージできます。
増分データ・ロード用のディスク領域の管理
集約ストレージ・データベースの増分データ・ロードでは、現在のデータ・ファイルのサイズの最大2倍のディスク領域を使用できます。 たとえば、データベース.dat
ファイルのサイズが1 GBで、増分データ・ロードのサイズが200 MBで、合計データベース・サイズが1.2 GBであるとします。 増分データ・ロード・プロセス中に、Essbaseは最大2.4 GBのディスク領域を使用する場合があります。
データベースが2 GBを超える場合は、デフォルト表領域の最大ファイル・サイズを2 GB以下に設定することで、ディスク領域使用量を減らすことができます。
デフォルト表領域の最大ファイル・サイズを設定するには、alter tablespace MaxL文を使用できます。
Smart Viewの使用方法
Smart Viewでは、発行コマンドは、override文法で増分データ・ロード機能を使用するのと同じです。
送信操作の実行中、ロック、ロック解除、取得およびロックの新しいリクエストは、送信操作が完了するまで待機します。
集約ストレージのデータ・ロードにおけるデータ・ソースの相違点
集約ストレージ・データベースに値をロードするためにデータ・ソース・レコードを処理する際、Essbaseでは、メンバーに式がないレベル0のディメンション交差のソース・データ・レコードのみが処理されます。
次の例は、レベル0の交差のみのレコードを含むデータ・ソースを示しています。 最後のフィールドにはデータ値が含まれ、他のフィールドはそれぞれのディメンションのレベル0メンバーです。
Jan, Curr Year, Digital Cameras, CO, Original Price, 10784
Jan, Prev Year, Camcorders, CO, Original Price, 13573
Essbaseでは、上位レベルのメンバーを指定するレコードは無視され、データ・ロードの最後にスキップされたレコードの数が表示されます。
たとえば、メンバーMid Westはレベル1のメンバーであるため、次のレコードはスキップされます:
Jan, Curr Year, Digital Cameras, Mid West, Original Price, 121301
「Essbaseサーバー」では、値をデータベースにコミットする前にレコードを内部的に読み取り、ソートするため、データ・ソースのソートは不要です。
集約ストレージ・データ・ロードのルール・ファイルの相違点
集約ストレージ・データベースに値をロードするためのルール・ファイルの指定は、集約ストレージのデータ・ロード・プロセスを反映しています。
ブロック・ストレージ・データ・ロードの場合、ルール・ファイルを介して、既存の値を上書きするか、データ・ソースの値を既存の値に追加するか、または既存の値から減算するかをデータ・ソースごとに選択します。
集約ストレージ・データ・ロード・バッファを使用する集約ストレージ・データ・ロードの場合は、データベースにロードする前に、データ・ロード・バッファに収集されるすべてのデータ・ロード・ソースに対してこれを選択します。
集約ストレージ・データベースからのデータのクリア
集約ストレージ・データベースからデータを選択的にクリアすることも、すべてのデータをクリアすることもできます。
「集積体のクリア」も参照してください。
集約ストレージ・データベースの特定のリージョンからのデータのクリア
集約ストレージ・データベース内の指定したリージョンからデータをクリアし、他のリージョンにあるデータを保持できます。 この機能は、揮発性データ(前月に対応するデータなど)を削除するが、履歴データを保持する場合に役立ちます。 データをクリアするには、データベース・マネージャまたは管理者権限が必要です。
リージョンからデータをクリアする方法:
-
物理
次に示すように、指定したリージョンの入力セルが集約ストレージ・データベースから物理的に削除されます。
図36-2 データ・リージョンの物理的クリア
データベースに複数のデータ・スライスがある場合、物理的なリージョンのクリア操作では、すべてのデータ・スライスがメイン・データ・スライスに自動的にマージされます。 指定したリージョンのデータがクリアされると、Essbaseは、リージョンのクリア操作が行われる前に、メイン・データ・スライスに存在していたすべての集約ビューをマテリアライズします。
データを物理的にクリアするプロセスは、クリアされるデータのサイズではなく、入力データのサイズに比例した時間で完了します。 したがって、このメソッドは、大量のデータを削除する場合にのみ使用できます。
データを物理的にクリアするには、alter database MaxL文を「リージョン内のデータのクリア」文法およびphysicalキーワードとともに使用します:
alter database appname.dbname clear data in region 'MDX set expression' physical;
-
Logical
次に示すように、指定したリージョンの入力セルが負の補正値とともに新しいデータ・スライスに書き込まれ、クリアするセルの値はゼロになります。
図36-3 データ・リージョンの論理的なクリア
論理クリア・リージョン操作では、値がゼロのデータ・スライスのみがメイン・データ・スライスに自動的にマージされます。データベース内の他のデータ・スライスはマージされません。 指定したリージョンのデータがクリアされると、Essbaseは新しいデータ・スライスでのみ集約ビューをマテリアライズします。
データを論理的にクリアするプロセスは、クリアされるデータのサイズに比例した時間で完了します。 相殺セルが作成されるため、このオプションではデータベースのサイズが大きくなります。
データを論理的にクリアするには、「リージョン内のデータのクリア」文法でphysicalキーワードを指定せずにalter database MaxL文を使用します:
alter database appname.dbname clear data in region 'MDX set expression';
論理的にクリアされたリージョンへの問合せでは、#MISSING値ではなくゼロ値が返されます。 空のセルの#MISSING値に依存する式を更新する必要がある場合があります。
値がゼロのセルを削除するには、alter database MaxL文をmerge文法およびremove_zero_cellsキーワードとともに使用します。
ノート:
Oracleでは、最初の操作で作成された補正セルはクリアされず、新しい補正セルも作成されないため、同じリージョンで別の論理クリア・リージョン操作を実行することはお薦めしません。
クリアするリージョンを指定する場合は、次のガイドラインに従います:
-
リージョンは対称である必要があります。
-
{(Jan, Budget)} は、Janのすべての予算データをクリアする有効な対称リージョンです。
-
{(Jan, Forecast1),(Feb, Forecast2)} は、非対称リージョン(Jan、Forecast1およびFeb、Forecast2)で構成されているため、無効なリージョンです。
-
-
リージョン指定のディメンションの個々のメンバーは、保管済メンバーである必要があります。
-
リージョン内のメンバーは次のことができません:
-
動的メンバー(暗黙的または明示的MDX式を持つメンバー)
-
属性ディメンションから
属性によってセルをクリアする必要がある場合は、Attribute MDX関数を使用します。
-
-
リージョン内のメンバーは、保管階層内の上位レベルのメンバーになることができます。これは、複数のレベル0メンバーを指定する場合に便利です。
たとえば、Jan、FebおよびMar (Qrt1のレベル0の子)を指定するのと同じQrt1を指定できます:
次の2つのMaxL文で同じ結果が生成されます:
alter database appname.dbname clear data in region '{Qtr1}';
alter database appname.dbname clear data in region '{Jan, Feb, Mar}';
-
(物理的にクリアされたデータのみ)リージョン内のメンバーは、代替階層の上位レベルのメンバーになることができます。
たとえば、フラット・パネル、HDTV、デジタル・レコーダおよびノートブック(ハイ・エンド商品の共有、レベル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.Sample clear data in region 'CrossJoin({Jan},{Forecast1, Forecast2})';
リージョンのクリア操作中は、データベースを更新する操作(データのロード、データ・スライスのマージ、別のリージョンからのデータのクリアなど)やデータのエクスポートは実行できません。 データベースを問い合せることができますが、問合せ結果はリージョンのクリア操作の前のデータ・セットに基づきます。
「リージョン内のデータのクリア」文法では、データベース全体からデータをクリアできません。
集約ストレージ・アプリケーションのコピー
集約ストレージ・アプリケーションのすべてのデータをコピーするには、すべての増分データ・スライスをメイン・データベース・スライスにマージする必要があります。 マージされていない増分データ・スライスのデータはコピーされません。
データ・ロードとディメンション構築の組合せ
集約ストレージ・データ・ロード・バッファを使用する場合、データ・ソースとルール・ファイルを組み合せて、アウトラインにメンバーを追加し、データ値をレベル0のセルにロードできます。 ファイルの指定順序に関係なく、Essbaseはアウトラインを変更し、データ値をロードします。
ノート:
一部のディメンションではデータの損失につながる可能性があるため、Oracleでは、ディメンション構築操作をデータ・ロード操作から分離することをお薦めします。 「集約ストレージ・データベースでのディメンションの構築」を参照してください。