ディメンション構築でのレベル参照
レベルはボトムアップ階層から定義され、リーフ・メンバーはレベル0で、ディメンション名に近い各ステップはレベルを1ずつ増分します。ボトムアップ・ソースからEssbaseディメンションを構築する場合は、Level構築方法を使用します。ソース・データにNULLが含まれている場合は、プロセス・レベルのNULL作成方法を使用します。
ボトムアップのデータソースでは、各レコードにより、特定のディメンションの単一のメンバーが定義されます。定義はメンバーに関する最も詳細な情報から始まり、より全般的な情報になっていきます。通常、レコードでは新規メンバーの名前が指定され、さらにそのメンバーの親の名前、親の親の名前と続き、以降も同様に指定されます。
たとえば、次に示すアウトラインでは、最下位レベルのメンバーがProductディメンションの分岐の最下部にあります。
図14-3世代とレベル番号

ディメンション構築ジョブを使用してアウトラインを構築するには、次のボトムアップ・データ・ソースを入力します。
100-10-12 100-10 100
100-20-12 100-20 100通常、最下位レベルのメンバーが左から右に順序付けられている場合は、「レベル」構築方法を使用してディメンション構築を実行します。レベル0 (リーフ・レベル)メンバーは最初のフィールド、レベル1メンバーは2番目のフィールドに置かれ、以降同様に続きます。これは、世代参照(トップダウン)でデータが示される方法とは反対になります。
Productディメンションを含むキューブがあり、次のボトムアップのタブ区切りデータ・ファイルを使用してProductディメンションに追加の製品メンバーを構築すると仮定します。
600-10-11 600-10 600
600-20-10 600-20 600
600-20-18 600-20 600データソースはボトムアップであるため、データソースの最初の列には新規のリーフ・レベルのメンバー(600-10-11、600-20-10および600-20-18)が含まれています。2番目の列には新規メンバーの親(600-10と600-20)が含まれ、3番目の列にはその親の親(600)が含まれています。
ディメンション構築ロード・ルールでは、レベル参照構築方法を使用して、メンバーをProduct次元に追加します。このルールでは、データ・ソースの各フィールドに対してレベル番号およびフィールド・タイプを指定します。ソース・データにNULLが含まれていないかぎり、ルールのディメンション・プロパティで「レベル」構築方法も選択する必要があります(そのユース・ケースについては、後述の「空のフィールドの処理」を参照してください)。

Essbaseは、データ・ソースとルールから次の階層を構築します。
図14-4レベル

空フィールドの処理
ソース・データの世代参照またはレベル参照からディメンションを作成する場合は、NULL値を処理することを選択できます。nullの処理により、データソースで空フィールドが検出されたときに実行するEssbaseのアクションが指定されます。
ノート:
NULL処理オプションは、通常のディメンション構築ルール(索引ベースではない)にのみ使用できます。nullの処理が有効になっていない場合は、null値を持つすべてのレコードがEssbaseによって拒否され、エラー・ログにエラーが書き込まれます。
null処理を有効にするには、新しい次元構築ルールの作成時に、ディメンション・プロパティでnull処理構築方法のいずれかを選択します。

Process level nullビルド・メソッドを使用する場合、ソース・データ内のレベル参照を処理する際に、EssbaseにNULL値を予期するように指示します。これにより、エラーの防止に役立ちます。
例
このディメンション構築の例では、Sample Basicの新しいチャネル・ディメンションに次のような不規則/非対称階層を追加するとします。

データ・ソースはボトムアップです。つまり、各レコードの最下位レベルが最初に表示されます。したがって、レベル参照構築方法を使用することは理にかなっています。ただし、null処理命令が必要です。間接チャネルのロケーション・データがないため、最初の3つのソース・データ・レコードにはnullフィールドが含まれています。
Channel-04,,Indirect,"All Channels"
Channel-07,,Indirect,"All Channels"
Channel-24,,Indirect,"All Channels"
Channel-21,Outlet,Direct,"All Channels"
Channel-29,Mall,Direct,"All Channels"
Channel-31,Kiosk,Direct,"All Channels"プロセス・レベルNULL構築方法を使用して、ディメンションを構築し、NULLに関連するエラーを回避するルールを作成できます。
この例のルールを作成するには、次のようにします。
-
Essbaseサーバー上のファイル・カタログにあるギャラリから利用可能なアプリケーション・ワークブックを使用して、Sample Basicキューブをインポート/構築します。
-
次に示すようなカンマ区切りのデータ・ファイルを作成して、
levchannel.txtという名前を付けて、Sample Basicキューブ・ディレクトリにアップロードします。Channel-04,,Indirect,"All Channels" Channel-07,,Indirect,"All Channels" Channel-24,,Indirect,"All Channels" Channel-21,Outlet,Direct,"All Channels" Channel-29,Mall,Direct,"All Channels" Channel-31,Kiosk,Direct,"All Channels" -
ホーム・ページでアプリケーションを開き、データベース(キューブ)を開きます
-
「スクリプト」タブを選択して、「ルール」をクリックします。

-
「作成」をクリックして、「ディメンション構築(標準)」を選択します。

-
「新規ルール」ダイアログで、次のように操作します。
-
ルール名を入力します(例: levchannel)。
-
「ソース・タイプ」で「ファイル」を選択し、「カタログ」をクリックして
levchannel.txtにナビゲートします。「カタログ」をクリックすると、ファイルはデフォルトでEssbaseサーバーのキューブ・ディレクトリに配置されるため、Essbase Webインタフェースの「ファイル」セクションを使用してすでにアップロード済である必要があります。ファイルがクライアント・マシン上にある場合は、「ファイル・ブラウザ」をクリックしてファイルを検索します。
-
「ヘッダー・レコード番号」および「ディメンション構築レコード番号」フィールドは0のままにします。ヘッダー・レコードは、ディメンションの構築には役立ちません。
-
「続行」をクリックします。
-
ディメンション構築ルールは、未定義のフィールドと、フィールドの下のグリッドを移入した(テキスト・ファイルからの)プレビュー・データとともに表示されます。

-
-
これは新しいルールであるため、ディメンションはまだ関連付けられていません。
- 「ディメンション」をクリックします。

- 新しいディメンション名Channelを入力し、「追加」をクリックします。
- 「ディメンション」をクリックします。
-
次に、構築方法を定義し、他のディメンション構築操作手順を確認する必要があります。ディメンション・プロパティを編集するには、「チャネル」リンクをクリックします。
-
「作成方法」を「プロセス・レベルNULL」に変更します。

「OK」をクリックします。
-
フィールド1の「ディメンション」セレクタをクリックし、「チャネル」を選択します。

-
フィールド1の「タイプ」セレクタを「レベル」に変更します。
-
チャネルIDがレベル0であるため、「レベル」を0に増やします。
-
フィールド2から4で、「チャネル」がディメンションとして選択されるようになりました。「タイプ」セレクタを「レベル」に変更し、レベル番号をフィールド2の場合は1、フィールド3の場合は2、フィールド4の場合は3としてマークします。

-
ルールを検証してから、保存して閉じます。エラーがある場合は、「有効なディメンション構築ルール・ファイルの要件」を参照してください。
-
ディメンション構築ジョブを実行します。
-
アウトラインを表示して、チャネル・ディメンションおよびメンバーの予期される階層が追加されたことを確認します。
レベルベースのディメンション構築のNull処理フロー
nullの処理が有効な場合は、Essbaseによりレベルnullが次のような方法で処理されます。
-
NULLレベル・フィールド: Essbaseで「レベル」フィールドが想定される場所にnullが出現した場合、Essbaseによって次の「レベル」フィールドが昇格され、欠落フィールドが置き換えられます。
例
ディメンション構築では、レベル1のフィールド2にNULLが含まれているため、レベル2ではなくレベル1に間接が配置されます。

-
セカンダリ・フィールドの前のnullフィールド:セカンダリ・フィールドの直前にnullが出現した場合、Essbaseではセカンダリ・フィールドが無視されます。(セカンダリ・フィールド・オプションには、別名、プロパティ、式、重複したレベル、重複したレベルの別名、通貨名、通貨のカテゴリ、属性の親、UDAおよび属性ディメンションの名前があります。)
例
フィールド2にNULLが含まれているため、ディメンション構築ではフィールド3の別名が無視されます。Essbaseによって、間接がレベル1に配置され、すべてのチャネルがレベル2に配置されます。

-
Nullセカンダリ・フィールド: Essbaseでセカンダリ・フィールドが想定される場所にnullが出現した場合、Essbaseではセカンダリーのnullフィールドが無視され、ロードが続行されます(これはLevelビルド・メソッドの場合と同じ動作です)。
例
ディメンション構築では、フィールド3の最初の別名は無視されます。これは、そのフィールドにNULLが含まれているためです。メンバー・アウトレットは、別名なしでアウトラインに追加されます。
