ディメンション構築のレベル参照

レベルはボトムアップの階層から定義されます。リーフ・メンバーはレベル0であり、レベルは、ステップがディメンション名に近いほど大きくなります(1ずつ)。ボトムアップのソースからEssbaseディメンションを構築するときは、「レベル」構築方法を使用します。ソース・データに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を処理する構築方法のいずれかを選択します。


新しいルールの「ディメンション・プロパティ」にあるNullを処理する構築方法

「レベルnullの処理」構築方法を使用する場合は、ソース・データ内のレベル参照の処理中にnull値を想定するように、Essbaseが指示されます。これは、エラーの防止に役立ちます。

このディメンション構築の例では、次のような不規則/非対称階層をSample Basic上の新しいChannelディメンションに追加するとします。


Channelディメンションには、メンバーの深さのレベルが4つあります。チャネルIDはレベル0にあります。IndirectのチャネルIDには上にメンバーのレベルが3つあり、DirectのチャネルIDには上にメンバーのレベルが4つあるため、これは、不均衡/不規則階層になります。

データ・ソースはボトムアップです。つまり、各レコードで最下位レベルが最初に表示されます。したがって、レベル参照の構築方法を使用することが理にかなっています。ただし、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に関連するエラーを防ぐルールを作成できます。

この例のルールを作成するには、

  1. Sample Basicキューブをインポートまたは構築します。その際には、Essbaseサーバーにあるファイル・カタログ内のギャラリから入手可能な、アプリケーション・ワークブックを使用します。

  2. 次のようなカンマ区切りのデータファイルを作成し、それに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"
  3. 「アプリケーション」ページでアプリケーションを開き、データベース(キューブ)を開きます。

  4. 「スクリプト」タブを選択して、「ルール」をクリックします。


    「スクリプト」タブが選択され、Essbase Webインタフェースで「ルール」タイルが強調表示されています。

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


    データベース・ダイアログで、「作成」ボタンが押されていて、「ディメンション構築(標準)」オプションが選択されています

  6. 「新規ルール」ダイアログで、次のように操作します。

    1. ルール名を入力します(例: levchannel)。

    2. 「ソース・タイプ」「ファイル」を選択し、「カタログ」をクリックし、levchannel.txtに移動します。

      「カタログ」をクリックする場合、そのファイルは、デフォルトではEssbaseサーバー上のキューブ・ディレクトリに配置されると想定されているため、Essbase Webインタフェース「ファイル」セクションを使用してすでにアップロードしてある必要があります。そのファイルがクライアント・マシンにある場合は、「ファイル・ブラウザ」をクリックしてそのファイルを特定します。

    3. 「ヘッダー・レコード番号」および「ディメンション構築レコード番号」フィールドは0のままにします。ヘッダー・レコードは、ディメンション構築には役立ちません。

    4. 「続行」をクリックします。

    5. ディメンション構築ルールは、未定義のフィールドと、フィールドの下のグリッドに移入されたプレビュー・データ(テキスト・ファイルからのデータ)とともに表示されます。
      新しいルール

  7. これは新しいルールであるため、ディメンションはまだ関連付けられていません。

    1. 「ディメンション」をクリックします。
      ルール・エディタの「ディメンション」ボタン

    2. 新しいディメンション名Channelを入力し、「追加」をクリックします。
  8. 次は、構築方法を定義し、他のディメンション構築操作手順を確認する必要があります。「Channel」リンクをクリックしてそのディメンション・プロパティを編集します。

  9. 「構築方法」「レベルnullの処理」に変更します。


    「レベルnullの処理」が選択されている、ディメンション構築ルール・エディタ内の「ディメンションの編集」ウィンドウ。

    「OK」をクリックします。

  10. フィールド1で「ディメンション」セレクタをクリックし、「Channel」を選択します。
    ディメンション構築ルール・エディタ内の、データが移入され、Channelディメンションが選択されているフィールド1。

  11. フィールド1の「タイプ」セレクタを「レベル」に変更します。

  12. チャネルIDがレベル0にあるため、「レベル」を0にします。

  13. フィールド2から4で、「Channel」がディメンションとして選択されるようになりました。「タイプ」セレクタを「レベル」に変更し、レベル番号をフィールド2で1、フィールド3で2、フィールド4で3にします。


    「レベルnullの処理」の構築方法を使用して不規則な階層を持つChannelディメンションを作成するディメンション構築ルール。フィールド1は、「Channel」、「レベル」、「0」として定義されており、チャネルIDが含まれています。フィールド2は、「Channel」、「レベル」、「1」として定義されており、3つのnullフィールドと3つの位置フィールド(Outlet、MallおよびKiosk)が含まれています。フィールド3は、「Channel」、「レベル」、「2」として定義されており、3つのレコードに「Indirect」、3つのレコードに「Direct」があります。フィールド4は、「Channel」、「レベル」、「3」として定義されており、「All Channels」が含まれています。

  14. ルールを検証してから、保存して閉じます。エラーがある場合は、「有効なディメンション構築ルール・ファイルの要件」を参照してください。

  15. ディメンション構築ジョブを実行します。

  16. アウトラインを表示して、Channelディメンションおよび想定されているメンバー階層が追加されたことを確認します。

レベル・ベースのディメンション構築の場合のnull処理フロー

null処理が有効になっている場合は、Essbaseで、次の方法でレベルnullが処理されます。

  • nullレベル・フィールド: Essbaseで「レベル」フィールドが想定されている位置にnullが出現した場合、Essbaseによって次の「レベル」フィールドに昇格されて欠落フィールドが置き換えられます。

    このディメンション構築では、レベル1のフィールド2にnullが含まれているため、レベル2ではなくレベル1にIndirectが配置されます。


    フィールド1は、Channel、レベル0であり、1行目にチャネルIDが含まれています。フィールド2は、Channel、レベル1であり、1行目にnullが含まれています。フィールド3は、Channel、レベル2であり、1行目にIndirectが含まれています。フィールド4は、Channel、レベル3であり、All Channelsが含まれています。

  • セカンダリ・フィールドの前のnullフィールド: セカンダリ・フィールドの直前にnullが出現した場合、Essbaseではセカンダリ・フィールドが無視されます。(セカンダリ・フィールド・オプションには、別名、プロパティ、式、重複したレベル、重複したレベルの別名、通貨名、通貨のカテゴリ、属性の親、UDAおよび属性ディメンションの名前があります。)

    フィールド2にnullが含まれているため、ディメンション構築ではフィールド3の別名は無視されます。Essbaseは、レベル1にIndirectを配置し、レベル2にAll Channelsを配置します。


    フィールド1は、Channel、レベル0であり、チャネルIDが含まれています。フィールド2は、Channel、レベル1であり、nullが含まれています。フィールド3は、Channel、別名であり、Catalogが含まれています。フィールド4は、Channel、レベル2であり、Indirectが含まれています。フィールド5は、Channel、レベル3であり、All Channelsが含まれています。

  • nullのセカンダリ・フィールド: Essbaseでセカンダリ・フィールドが想定されている位置にnullが出現した場合、Essbaseによってセカンダリのnullフィールドが無視され、ロードが続行されます(これは、「レベル」構築方法の場合と同じ動作です)。

    このディメンション構築では、フィールド3にある最初の別名は無視されます。このフィールドにはnullが含まれているためです。メンバーOutletは、別名なしでアウトラインに追加されます。


    フィールド1は、Channel、レベル0であり、チャネルIDが含まれています。フィールド2は、Channel、レベル1であり、1行目にOutlet、2行目にMallとKioskが含まれています。フィールド3は、Channel、別名であり、1行目にnull、次の2行にいくつかの別名が含まれています。フィールド4は、Channel、レベル2であり、すべての行にDirectが含まれています。フィールド5は、Channel、レベル3であり、すべての行にAll Channelsが含まれています。