データの割当てには、サマリー・データから下位レベル・データを作成する必要があります。この項では、OLAP DML文を使用したデータの割当て方法の概要を説明します。項目は次のとおりです。
OLAP DMLを使用してデータを割り当てる場合、データの割当て方法を指定するALLOCMAP型aggmapオブジェクトを作成し、ALLOCATEコマンドを使用してそのオブジェクトを実行することにより、データを実際にソース・オブジェクトからターゲットのセルに配分する必要があります。ターゲットは、1つ以上の階層ディメンションによってディメンション化された変数です。ソース・データは、ターゲット・セルを指定する値より上位レベルの階層ディメンションにあるディメンション値により指定されます。
ALLOCATEは、aggmapを使用して、割当てで使用する階層のディメンションおよび値、ディメンションに使用する処理の方法、および割当ての他の側面を指定します。
割当て処理の一部は、既存のデータに基づきます。そのデータを含むオブジェクトは、割当ての基礎オブジェクトとなります。このような処理では、ALLOCATEは基礎オブジェクトの値に基づいて、ソースからデータを配分します。
ALLOCATEは、AGGREGATEコマンドの処理の逆の処理を実行します。割当て処理の方法は、単純な割当てから非常に複雑な割当てにまで及びます。単純な割当てには、ソース・データをターゲット変数のセルへコピーすることなどが含まれ、複雑な割当てには、他の計算式に基づいて配分された量、ターゲットとしての複数の変数、および異なるディメンションに異なる割当ての方法を指定するaggmapを使用して、計算式であるソースからデータを比例配分することなどが含まれます。
Oracle OLAPの割当てシステムは非常に柔軟性があり、次のような多くの機能があります。
ソース・オブジェクト、基礎オブジェクトおよびターゲット・オブジェクトは、同じ変数または異なるオブジェクトにすることができます。
ソース・オブジェクトおよび基礎オブジェクトは、計算式にすることが可能なため、既存のデータで計算を実行し、その結果を割当てのソースまたは基礎として使用できます。
ディメンションに対する割当ての処理方法を指定できます。この処理は、単純なものから非常に複雑なものまであります。
割り当てられた値を、ターゲット・セルの既存の値に追加するかまたは置換するかを指定できます。
結果をターゲット・セルに割り当てる前に、割り当てられた値を加算または乗算する量を指定できます。
ディメンション階層の個々の値をロックして、それらのディメンション値のターゲット・セルのデータが割当てにより変更されないようにすることが可能です。ディメンション値をロックすると、割当てシステムはソース・データを正規化し、ロックされたデータを割当て前にソースから除外します。ソース・データを正規化しないように選択できます。
特定の処理に最小値、最大値、下限値または上限値を指定できます。
割り当てられたデータを2番目の変数にコピーして、複数の割当てのターゲットであるセルへの各割当てを記録できます。
基礎がNULL値の場合の割当ての処理方法を指定できます。
異なるALLOCATEコマンドで同じaggmapを使用して、異なるソース・オブジェクト、基礎オブジェクトまたはターゲット・オブジェクトで、同じディメンション階層値、処理および引数のセットを使用できます。
aggmapオブジェクトを使用してデータを割り当てるには、次のようなOLAP DML文を、示されている順序で使用します。
DEFINE AGGMAP文を発行して、aggmapオブジェクトを定義します。
注意: DEFINE AGGMAP文の直後にOLAP Worksheetをコマンドライン・レベルで使用する場合は、ALLOCMAP文をコーディングして、空の割当て仕様を入力します。例を次に示します。DEFINE myaggmap AGGMAP ALLOCMAP 'END' |
実行する割当てを指定するaggmapオブジェクトに仕様を追加します。詳細は、ALLOCMAPを参照してください。
aggmapオブジェクトをアナリティック・ワークスペースの中で永続化する場合は、UPDATE文およびCOMMITを順に実行して、aggmapオブジェクトを保存します。
(オプション)POUTFILEUNITオプションを設定し、割当ての進捗を監視できるようにします。
(オプション)ALLOCERRLOGFORMATおよびALLOCERRLOGHEADERオプションを非デフォルト値に設定し、割当てのエラー・ログを再設計します。
(オプション)1つ以上の変数に$ALLOCMAPプロパティを設定して、aggmapがその変数のデフォルトの割当て仕様であることを指定します。
(推奨されるオプション)変数をターゲット・セル(データを割り当てるセル)に制限します。
ALLOCATE文を発行して、データを割り当てます。
値をターゲット変数に割り当てる際に既存のデータを上書きする場合や、割当て前にNA
基礎を持つターゲット・セルに、割り当てられた値を書き込む場合があります。たとえば、製品ディメンションに新しい製品を作成する場合、budget変数の新しい製品には基礎が存在しません。この場合でも、新しい製品を含む製品種目全体に広告費を割り当てることができます。
NA
値は、次のようにRELATION文で計算式および階層演算子を使用して処理できます。
計算式を使用したNAデータの処理: NA
値を処理する方法の1つとして、必要なターゲット・セルのみを示している基礎を構成します。これは、推奨される方法です。計算式から基礎を取得することにより、基礎値の選択内容を絞り込むことができます。次の文では、新しい製品の値を既存製品の値の2倍と等しくなるようにする計算式を定義しています。このような計算式を、新しい製品に広告費を割り当てる基礎として使用できます。
DEFINE formula_basis FORMULA DECIMAL <product> EQ IF product EQ 'NEWPRODUCT' - THEN 2 * product.budget(product 'EXISTINGPRODUCT') - ELSE product.budget
階層演算子を使用したNAデータの処理: 現在NA
値を持つターゲット・セルにデータを割り当てるには、割当て仕様でRELATION文に階層演算子を使用します。階層演算子は、割当ての基礎として、既存のデータではなくディメンションの階層を使用します。階層演算子を使用する際の注意点として、詳細レベルのデータが稠密に移入される可能性があるため、アナリティック・ワークスペースが非常に大きくなり、データの集計に多くの時間が必要になる可能性があります。
この例の続きでは、新しい製品に広告費を割り当てるために、階層の最後の演算子HLASTを使用して、製品ディメンション階層の新しい(おそらく最新の)製品にコストを割り当てるように指定します。