ルール・ファイルを使用した共有メンバーの構築

共有メンバーに関連付けられたデータは、共有メンバーと同じ名前を持つプロトタイプ・メンバーのデータです。共有メンバーにはプロトタイプ・メンバーに含まれたデータへのポインタが保存されるため、データはメンバー間で共有され、1回のみ保存されます。

たとえば、100-20 (Diet Cola)メンバーは100ファミリとDietファミリにロールアップされます。

図15-11 Sample.Basicデータベース内の共有メンバー


このイメージは、イメージの前のテキストで説明されている、共有メンバーを示しています。

メンバーを共有する親の数に制限はありません。Diet Colaには親が2つありますが(100とDiet)、さらに多くの親にロールアップするよう定義することもできます。

アウトライン内の複数世代でメンバーを共有できます。図15-11では、Diet Colaはアウトライン内の第2世代の2つのメンバーによって共有されていますが、図15-14のように第3世代と第4世代のメンバーで共有することもできます。

アウトライン内の異なる世代の共有メンバーは、アウトライン・エディタで簡単に作成できます。ディメンション構築を使用して共有メンバーを作成する方法は、より複雑です。構築方法を選択し、データソースを慎重にフォーマットする必要があります。

次の項では、データソースとルール・ファイルを使用してアウトライン内に共有メンバーを構築する方法を説明します。

ノート:

共有メンバーがプロトタイプ・メンバーの前に配置されるようなアウトラインは作成しないでください。作成すると、アウトラインの検証でエラーが発生する可能性があります。

同じ世代でのメンバーの共有

Essbaseアウトラインで同じ世代でメンバーを共有するのが、メンバーを共有する最も簡単な方法です。同じ世代での共有メンバーを構築するには、ディメンション構築ルールを設計するときに、ディメンション構築方法を使用して世代、レベルまたは親子参照を特定します。

同じ世代で共有されるメンバーは、同じ分岐にロールアップされます。次の例では、Sample Basicに基づいて、強調表示されたProductメンバー100-20 (Diet Cola)は第2世代であり、別の親メンバーDietによって共有されています。親(100とDiet)は両方とも同じ分岐(Productディメンション)にロールアップされます。

次の図では、100-400の下にある強調表示されているすべてのProductメンバーは、保管されているプロトタイプ・メンバーであり、Dietの下にあるすべてのメンバーは、保管されていない共有メンバーです。

図15-12 サンプル・アウトライン: 同じ世代で共有されるメンバー


Productディメンション内の同じ世代で共有されるメンバー。次のテキストでロールアップと説明されているすべてのメンバーは第2世代です。メンバー100-20は、メンバー100とメンバーDietにロールアップされます。メンバー200-20は、メンバー200とメンバーDietにロールアップされます。メンバー300-20および300-30は、メンバー300とメンバーDietにロールアップされます。メンバー400-20は、メンバー400とメンバーDietにロールアップされます。メンバーDietには、100-20、200-20、300-20、300-30および400-20という5つの共有メンバーがあります。

ディメンション構築において同じ世代でメンバーを共有するには、世代、レベルまたは親子参照を使用して構築方法を選択します。各構築方法の例は、次を参照してください:

世代参照を使用した同じ世代の共有メンバーの作成

「世代」構築方法を使用してEssbaseアウトラインにおいて同じ世代での共有メンバーを構築するルールを設計する場合は、ディメンション構築ルールにおいて、プロトタイプ・メンバーの親の後に、重複する世代を配置します。

世代参照による構築方法を使用して同じ世代での共有メンバーの親を構築するには、共有メンバーの親のフィールド・タイプを「重複する世代」として定義します。重複する世代は、代替ロールアップと呼ばれることもあり、子の共有メンバーが存在する世代です。例に示すように、プロトタイプ・メンバーの親(プライマリ・ロールアップとも呼ばれる)の後にそれを配置します。

次のディメンション構築ルールでは、Dietの親と一部の共有メンバー(100-20、200-20、300-20および400-20)が示されています。


この図では、世代参照による構築方法を使用して同じ世代での共有メンバーの親を作成するルールが示されています。フィールド1は、「Product」、「世代」、「2」として定義されており、フィールド「100」、「200」、「300」および「400」が示されています。フィールド2は、「Product」、「重複する世代」として定義されており、フィールド「Diet」、「Diet」、「Diet」および「Diet」が示されています。フィールド3は、「Product」、「世代」、「3」として定義されており、フィールド「100-20」、「200-20」、「300-20」および「400-20」示されています。

この例を再現するには、次のようにします。

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

  2. 次のようなタブ区切りのデータ・ファイルを作成し、shgenref.txtという名前を付けて、Sample Basicキューブ・ディレクトリにアップロードします。

    100	Diet	100-20
    200	Diet	200-20
    300	Diet	300-20
    400	Diet	400-20
  3. 「アプリケーション」ページで、アプリケーション(Sample)を展開します。

  4. キューブ名(Basic)の右側にある「アクション」メニューから、インスペクタを起動します。


    インスペクタを選択したポップアップ・メニュー

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


    データベース・インスペクション・ダイアログで「スクリプト」タブが選択されており、「ルール」が強調表示されています

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


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

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

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

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

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

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

    4. 「デリミタ」の値を「カンマ」から「タブ」に変更します。

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

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


      shgenrefという名前の未完成の新規ルール。フィールド1から3のフィールド・メタデータは、フィールド・セレクタでは空白になっています。レコードはフィールド・セレクタの下に移入され、手順2の.txtファイル内のデータと一致しています。

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

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

    2. ディメンション名「Product」を選択または入力し、「追加」をクリックします。
  9. 次は、構築方法を定義し、他のディメンション構築操作手順を確認する必要があります。「Product」をクリックしてそのプロパティを編集します。
    「ディメンションの編集」ダイアログ内のクリック可能な「Product」ディメンション名。

  10. 「構築方法」「世代」であることを確認し、「OK」をクリックします。


    Productのディメンション構築プロパティ。すべてのオプションがデフォルトのままになっており、「構築方法」は「世代」です。

  11. フィールド1で「ディメンション」セレクタをクリックし、「Product」を選択します。


    フィールド1の「ディメンション」ボックスから選択可能なProductディメンション

  12. フィールド1の「タイプ」セレクタを「世代」に変更し、その下の世代番号を増分して「2」にします。

  13. フィールド2で、「タイプ」セレクタを「重複する世代」に変更します。

  14. フィールド3で、「タイプ」セレクタを「世代」に変更し、その下の世代番号を増分して「3」にします。

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


    この図では、世代参照による構築方法を使用して同じ世代での共有メンバーの親を作成するルールが示されています。フィールド1は、「Product」、「世代」、「2」として定義されており、フィールド「100」、「200」、「300」および「400」が示されています。フィールド2は、「Product」、「重複する世代」として定義されており、フィールド「Diet」、「Diet」、「Diet」および「Diet」が示されています。フィールド3は、「Product」、「世代」、「3」として定義されており、フィールド「100-20」、「200-20」、「300-20」および「400-20」示されています。

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

  17. アウトラインを表示し、ProductメンバーであるDietを調べて、それに5つの共有メンバーが含まれたことを確認します(ディメンション構築により、さらに2つの共有メンバー(300-20と400-20)が既存の3つに追加されました)。


    Essbase Webインタフェースにあるアウトライン・ビューア。Productディメンションが展開されて親メンバーDietが表示され、その下に共有メンバー(100-20、200-20、300-30、300-20および400-20)が示されています。

レベル参照を使用した同じ世代の共有メンバーの作成

「レベル」構築方法を使用してEssbaseアウトラインにおいて同じ世代での共有メンバーを構築するルールを設計する場合は、プロトタイプ・メンバーと共有メンバーの親がディメンション構築ルールにおいて同じレコードに存在する必要があります。

レベル参照による構築方法を使用して同じ世代の共有メンバーを作成するには、まずプライマリとセカンダリのロールアップ(親メンバー)が1つのレコードで指定されていることを確認します。セカンダリ・ロールアップは、すべて1つのレコードに指定するのであれば必要な数だけ指定できます。

共有メンバーのフィールド・タイプをLevelとして定義します。次に、下のフィールドにレベル番号を入力します。同じ世代の共有メンバーを作成するには、プライマリ・ロールアップと同じレベル番号が含まれるようにセカンダリ・ロールアップのレベル番号を設定します。データソースの処理中に、Essbaseで、指定したレベルで親が作成され、その下に共有メンバーが挿入されます。

次の例は、共有メンバー100-20 (Diet Cola)、200-20 (Diet Root Beer)、300-20 (Diet Cream Soda)および400-20 (Diet Fruit Soda)を作成するためのルール・ファイルとデータを示しています。


レベル構築方法を使用して同じ世代での共有メンバーの親を作成するルール。フィールド1は、「Product」、「レベル」、「0」として定義されており、フィールド「100-20」、「200-20」、「300-20」および「400-20」が示されています。フィールド2は、「Product」、「レベル」、「1」として定義されており、フィールド「100」、「200」、「300」および「400」が示されています。フィールド3は、「Product」、「レベル」、「1」として定義されており、フィールド「Diet」、「Diet」、「Diet」および「Diet」が示されています。

この例を再現するには、次のようにします。

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

  2. 次のようなタブ区切りのデータ・ファイルを作成し、shlev.txtという名前を付けて、Sample Basicキューブ・ディレクトリにアップロードします。

    100-20	100	Diet
    200-20	200	Diet
    300-20	300	Diet
    400-20	400	Diet
  3. 「アプリケーション」ページで、アプリケーション(Sample)を展開します。

  4. キューブ名(Basic)の右側にある「アクション」メニューから、インスペクタを起動します。


    インスペクタを選択したポップアップ・メニュー

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


    データベース・インスペクション・ダイアログで「スクリプト」タブが選択されており、「ルール」が強調表示されています

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


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

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

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

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

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

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

    4. 「デリミタ」の値を「カンマ」から「タブ」に変更します。

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

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


      shlevという名前の未完成の新規ルール。フィールド1から3のフィールド・メタデータは、フィールド・セレクタでは空白になっています。レコードはフィールド・セレクタの下に移入され、手順2の.txtファイル内のデータと一致しています。

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

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

    2. ディメンション名「Product」を選択または入力し、「追加」をクリックします。
  9. 次は、構築方法を定義し、他のディメンション構築操作手順を確認する必要があります。「Product」をクリックしてそのプロパティを編集します。
    「ディメンションの編集」ダイアログ内のクリック可能な「Product」ディメンション名。

  10. 「構築方法」「レベル」に変更し、「OK」をクリックします。


    Productのディメンション構築プロパティ。すべてのオプションがデフォルトのままになっており、「構築方法」は「レベル」です。

  11. フィールド1で「ディメンション」セレクタをクリックし、「Product」を選択します。


    フィールド1の「ディメンション」ボックスから選択可能なProductディメンション

  12. フィールド1の「タイプ」セレクタを「レベル」に変更し、その下のレベル番号を「0」にします。

  13. フィールド2と3で、「タイプ」セレクタを「レベル」に変更し、それらの下のレベル番号を「1」にします。

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


    この図では、レベル参照による構築方法を使用して同じ世代での共有メンバーの親を作成するルールが示されています。フィールド1は、「Product」、「レベル」、「0」として定義されており、フィールド「100-20」、「200-20」、「300-20」および「400-20」が示されています。フィールド2は、「Product」、「レベル」、「1」として定義されており、フィールド「100」、「200」、「300」および「400」が示されています。フィールド3は、「Product」、「レベル」、「1」として定義されており、フィールド「Diet」、「Diet」、「Diet」および「Diet」が示されています。

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

  16. アウトラインを表示し、ProductメンバーであるDietを調べて、それに5つの共有メンバーが含まれたことを確認します(ディメンション構築により、さらに2つの共有メンバー(300-20と400-20)が既存の3つに追加されました)。


    Essbase Webインタフェースにあるアウトライン・ビューア。Productディメンションが展開されて親メンバーDietが表示され、その下に共有メンバー(100-20、200-20、300-30、300-20および400-20)が示されています。

親子参照を使用した同じ世代の共有メンバーの作成

「親子」構築方法を使用してEssbaseアウトラインにおいて同じ世代での共有メンバーを構築するルールを設計する場合は、ディメンション構築ルールで「親」および「子」フィールド・タイプを定義し、ディメンション・プロパティで共有が有効になっていることを確認します。

共有が有効になっている場合、Essbaseでは、新しい親の下に共有メンバーとして重複メンバーが自動的に作成されます。

図15-13 サンプル・ルール: 親子参照を使用して同じ世代で共有されるメンバー


親子構築方法を使用して同じ世代の共有メンバーを作成するためのルール。フィールド1は、「Product」、「親」として定義されており、フィールド「100」、「200」、「300」、「400」、「Diet」、「Diet」、「Diet」および「Diet」が示されています。フィールド2は、「Product」、「子」として定義されており、フィールド「100-20」、「200-20」、「300-20」、「400-20」が示されています(Dietの共有される子を構築するために同じ順序で再度繰り返されます)。

この例を再現するには、次のようにします。

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

  2. 次のようなタブ区切りのデータ・ファイルを作成し、shparentchild.txtという名前を付けて、Sample Basicキューブ・ディレクトリにアップロードします。

    100	100-20
    200	200-20
    300	300-20
    400	400-20
    Diet	100-20
    Diet	200-20
    Diet	300-20
    Diet	400-20
  3. 「アプリケーション」ページで、アプリケーション(Sample)を展開します。

  4. キューブ名(Basic)の右側にある「アクション」メニューから、インスペクタを起動します。


    インスペクタを選択したポップアップ・メニュー

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


    データベース・インスペクション・ダイアログで「スクリプト」タブが選択されており、「ルール」が強調表示されています

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


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

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

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

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

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

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

    4. 「デリミタ」の値を「カンマ」から「タブ」に変更します。

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

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


      shparentchildという名前の未完成の新規ルール。フィールド1と2のフィールド・メタデータは、フィールド・セレクタでは空白になっています。レコードはフィールド・セレクタの下に移入され、手順2の.txtファイル内のデータと一致しています。

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

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

    2. ディメンション名「Product」を選択または入力し、「追加」をクリックします。
  9. 次は、構築方法を定義し、他のディメンション構築操作手順を確認する必要があります。「Product」をクリックしてそのプロパティを編集します。
    「ディメンションの編集」ダイアログ内のクリック可能な「Product」ディメンション名。

  10. 「構築方法」「親子」に変更し、「共有」が有効になっていることを確認し、「OK」をクリックします。


    Productのディメンション構築プロパティ。「共有」チェック・ボックスが選択されており、「構築方法」は「親子」です。

  11. フィールド1で「ディメンション」セレクタをクリックし、「Product」を選択します。


    フィールド1の「ディメンション」ボックスから選択可能なProductディメンション

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

  13. フィールド2で、「タイプ」セレクタを「子」に変更します。


    親子構築方法を使用して同じ世代の共有メンバーを作成するためのルール。フィールド1は、「Product」、「親」として定義されており、フィールド「100」、「200」、「300」、「400」、「Diet」、「Diet」、「Diet」および「Diet」が示されています。フィールド2は、「Product」、「子」として定義されており、フィールド「100-20」、「200-20」、「300-20」、「400-20」が示されています(Dietの共有される子を構築するために同じ順序で再度繰り返されます)。

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

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

  16. アウトラインを表示し、ProductメンバーであるDietを調べて、それに5つの共有メンバーが含まれたことを確認します(ディメンション構築により、さらに2つの共有メンバー(300-20と400-20)が既存の3つに追加されました)。


    Essbase Webインタフェースにあるアウトライン・ビューア。Productディメンションが展開されて親メンバーDietが表示され、その下に共有メンバー(100-20、200-20、300-30、300-20および400-20)が示されています。

異なる世代でのメンバーの共有

Essbaseディメンション構築ルールを使用して、様々な世代での共有メンバーを作成できます。レベル参照や親子参照など、様々な構築方法を使用してこれを実現できます。

場合によっては、アウトライン内の異なる世代の親に共有メンバーをロールアップする必要があります。たとえば、図15-14では、共有メンバーは第2世代 (Diet)と第3世代 (TBCとGrandma's)の親にロールアップされます。このアウトラインでは、TBC (The Beverage Company)が一部の飲料製品を外部ベンダーから購入することを想定しています。200-20 (Diet Root Beer)はGrandma'sという名前のベンダーから購入します。

図15-14 サンプル・アウトライン: 様々な世代で共有されるメンバー


イメージの前のテキストで説明されている、異なる世代で共有されるメンバー。

親子参照を使用した異なる世代の共有メンバーの作成

Essbaseディメンション構築ルールで、親子参照による構築方法を使用して様々な世代の共有メンバーを作成するには、「親」と「子」のフィールド・タイプを定義します。

共有が有効になっている間は、Essbaseで、新しい親の下に共有メンバーとして重複メンバーが自動的に作成されます。

図15-15 サンプル・ルール・ファイル: 親子参照を使用して様々な世代で共有されるメンバー


この図では、親子による構築方法を使用して様々な世代で共有メンバーの親を作成するルールが示されています。フィールド1は、Product、「親」として定義されています。フィールド2は、Product、「子」として定義されています。レコードはフィールド・セレクタの下に移入され、手順2の.txtファイル内のデータと一致しています。

この例を再現するには、次のようにします。

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

  2. 次のようなタブ区切りのデータファイルを作成し、shdiffgenparchild.txtという名前を付けて、Sample Basicキューブ・ディレクトリにアップロードします。

    100	100-20
    200	200-20
    300	300-30
    Diet	100-20
    Diet	200-20
    Diet	300-30
    Vendors	TBC
    Vendors	Grandma’s
    TBC	100-20
    TBC	300-30
    Grandma’s	200-20
  3. 「アプリケーション」ページで、アプリケーション(Sample)を展開します。

  4. キューブ名(Basic)の右側にある「アクション」メニューから、インスペクタを起動します。


    インスペクタを選択したポップアップ・メニュー

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


    データベース・インスペクション・ダイアログで「スクリプト」タブが選択されており、「ルール」が強調表示されています

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


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

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

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

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

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

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

    4. 「デリミタ」の値を「カンマ」から「タブ」に変更します。

    5. 「データ数のプレビュー」を11に増やします。

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

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


      shdiffgenparchildという名前の未完成の新規ルール。フィールド1から2のフィールド・メタデータは、フィールド・セレクタでは空白になっています。レコードはフィールド・セレクタの下に移入され、手順2の.txtファイル内のデータと一致しています。

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

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

    2. ディメンション名「Product」を選択または入力し、「追加」をクリックします。
  9. 次は、構築方法を定義し、他のディメンション構築操作手順を確認する必要があります。「Product」をクリックしてそのプロパティを編集します。
    「ディメンションの編集」ダイアログ内のクリック可能な「Product」ディメンション名。

  10. 「構築方法」「親子」であることを確認します。

  11. 「共有」をクリックし、「OK」をクリックします。

  12. フィールド1で「ディメンション」セレクタをクリックし、「Product」を選択します。


    フィールド1の「ディメンション」ボックスから選択可能なProductディメンション

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

  14. フィールド2で、「タイプ」セレクタを「子」に変更します。

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


    この図では、親子による構築方法を使用して様々な世代で共有メンバーの親を作成するルールが示されています。フィールド1は、Product、「親」として定義されています。フィールド2は、Product、「子」として定義されています。レコードはフィールド・セレクタの下に移入され、手順2の.txtファイル内のデータと一致しています。

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

  17. アウトラインを表示し、Productディメンションを調べて、それに新規メンバーVendor、TBCおよびGrandma'sがあり、それらにはDietでも使用されている共有メンバーがあることを確認します。


    Essbase Webインタフェースにあるアウトライン・ビューア。Productディメンションが展開されて親メンバーDietが表示され、その下に共有メンバー(100-20、200-20および300-30)が示されています。Productディメンションには新規メンバーVendorsもあり、それには子TBCおよびGrandma'sがあります。TBCには共有メンバー100-20と300-30が含まれており、Grandma'sには共有メンバー200-20が含まれています。

レベル参照を使用した異なる世代の共有メンバーの作成

Essbaseディメンション構築ルールで、レベル参照による構築方法を使用して様々な世代の共有メンバーを作成するには、プライマリとセカンダリのロールアップが1つのレコードに指定されていることを確認します。セカンダリ・ロールアップは、すべて1つのレコードに指定するのであれば必要な数だけ指定できます。

共有メンバーのフィールド・タイプをLevelとして定義してから、レベル番号を入力します。データソースの処理中に、Essbaseで、指定したレベルで親が作成され、その下に共有メンバーが挿入されます。

たとえば、Productの100-20、200-20および300-30を、Dietという親と、TBCとGrandma'sという2つの親との間で共有するには、次に示すようなサンプル・データとルールを使用します。

図15-16 サンプル・ルール・ファイル: レベル参照を使用して様々な世代で共有されるメンバー


この図では、レベル参照による構築方法を使用して様々な世代での共有メンバーの親を作成するルールが示されています。フィールド1は、「Product」、「レベル」、「0」として定義されており、「100-20」、「200-20」および「300-30」が示されています。フィールド2は、「Product」、「レベル」、「1」として定義されており、「100」、「200」および「300」が示されています。フィールド3は、「Product」、「レベル」、「1」として定義されており、「Diet」、「Diet」および「Diet」が示されています。フィールド4は、「Product」、「レベル」、「1」として定義されており、「TBC」、「Grandma's」および「TBC」が示されています。フィールド5は、「Product」、「レベル」、「2」として定義されており、「Vendors」、「Vendors」および「Vendors」が示されています。

この例を再現するには、次のようにします。

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

  2. 次のようなタブ区切りのデータ・ファイルを作成し、shdifflevref.txtという名前を付けて、Sample Basicキューブ・ディレクトリにアップロードします。

    100-20	100	Diet	TBC	Vendors
    200-20	200	Diet	Grandma’s	Vendors	
    300-30	300	Diet	TBC	Vendors
  3. 「アプリケーション」ページで、アプリケーション(Sample)を展開します。

  4. キューブ名(Basic)の右側にある「アクション」メニューから、インスペクタを起動します。


    インスペクタを選択したポップアップ・メニュー

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


    データベース・インスペクション・ダイアログで「スクリプト」タブが選択されており、「ルール」が強調表示されています

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


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

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

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

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

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

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

    4. 「デリミタ」の値を「カンマ」から「タブ」に変更します。

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

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


      shdifflevrefという名前の未完成の新規ルール。フィールド1から5のフィールド・メタデータは、フィールド・セレクタでは空白になっています。レコードはフィールド・セレクタの下に移入され、手順2の.txtファイル内のデータと一致しています。

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

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

    2. ディメンション名「Product」を選択または入力し、「追加」をクリックします。
  9. 次は、構築方法を定義し、他のディメンション構築操作手順を確認する必要があります。「Product」をクリックしてそのプロパティを編集します。
    「ディメンションの編集」ダイアログ内のクリック可能な「Product」ディメンション名。

  10. 「構築方法」「レベル」であることを確認し、「OK」をクリックします。

  11. フィールド1で「ディメンション」セレクタをクリックし、「Product」を選択します。


    フィールド1の「ディメンション」ボックスから選択可能なProductディメンション

  12. フィールド1の「タイプ」セレクタを「レベル」に変更し、その下のレベル番号を「0」にします。

  13. フィールド2から4で、「タイプ」セレクタを「レベル」に変更し、それらのレベル番号を「1」にします。

  14. フィールド5で、「タイプ」セレクタを「レベル」に変更し、そのレベル番号を「2」にします。

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


    この図では、レベル参照による構築方法を使用して様々な世代での共有メンバーの親を作成するルールが示されています。フィールド1は、「Product」、「レベル」、「0」として定義されており、「100-20」、「200-20」および「300-30」が示されています。フィールド2は、「Product」、「レベル」、「1」として定義されており、「100」、「200」および「300」が示されています。フィールド3は、「Product」、「レベル」、「1」として定義されており、「Diet」、「Diet」および「Diet」が示されています。フィールド4は、「Product」、「レベル」、「1」として定義されており、「TBC」、「Grandma's」および「TBC」が示されています。フィールド5は、「Product」、「レベル」、「2」として定義されており、「Vendors」、「Vendors」および「Vendors」が示されています。

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

  17. アウトラインを表示し、Productディメンションを調べて、それに新規メンバーVendor、TBCおよびGrandma'sがあり、それらにはDietでも使用されている共有メンバーがあることを確認します。


    Essbase Webインタフェースにあるアウトライン・ビューア。Productディメンションが展開されて親メンバーDietが表示され、その下に共有メンバー(100-20、200-20および300-30)が示されています。Productディメンションには新規メンバーVendorsもあり、それには子TBCおよびGrandma'sがあります。TBCには共有メンバー100-20と300-30が含まれており、Grandma'sには共有メンバー200-20が含まれています。

非レベル0メンバーの共有

場合によっては、非レベル0メンバー(最下位でない世代のメンバー)を共有する必要があります。たとえば、図15-17では、100、200および300がTBCとGrandma'sによって共有されています。このアウトラインは、TBCが一部の製品ラインを外部ベンダーから購入することを想定しています。たとえば、200 (すべてのルート・ビール)をGrandma'sという名前のベンダーから購入します。

図15-17 サンプル・アウトライン: 様々な世代で共有される非レベル0メンバー


このイメージは、イメージの前のテキストで説明されている、異なる世代で共有される非レベル0メンバーを示しています。

非レベル0メンバーの共有は、親子参照またはレベル参照を使用して実行できます。

親子参照を使用した非レベル0共有メンバーの作成

親子参照による構築方法は、最も用途の広い共有メンバー作成方法です。この構築方法には、世代参照やレベル参照の構築方法とは異なり、アウトライン内の共有メンバーの位置に関する制限がありません。

親子参照による構築方法を使用して同じ世代のレベル0以外の共有メンバーを作成するには、「親」と「子」のフィールド・タイプを定義します。Essbaseで共有を許可する設定になっていることを確認します。共有が有効になっている場合、Essbaseでは、新しい親の下に共有メンバーとして重複メンバーが自動的に作成されます。

図15-18 サンプル・ルール・ファイル: 親子参照を使用して同じ世代で共有される非レベル0メンバー


親子参照による構築方法を使用して同じ世代のレベル0以外の共有メンバーを作成するためのルール・ファイル。

レベル参照を使用した非レベル0共有メンバーの作成

レベル参照による構築方法を使用して非レベル0の共有メンバーを作成するには、プライマリとセカンダリのロールアップが1つのレコードに指定されていることを確認します。セカンダリ・ロールアップは、すべて1つのレコードに指定するのであれば無制限で指定できます。

共有メンバーの親のフィールド・タイプを重複レベルとして定義してから、レベル番号を入力します。同じ世代の共有メンバーを作成するには、プライマリ・ロールアップと同じレベル番号が含まれるようにセカンダリ・ロールアップのレベル番号を設定します。データソースの処理中に、Essbaseで、指定したレベルで親が作成され、その下に共有メンバーが挿入されます。

たとえば、製品ライン100、200および300をSodaという親と、TBCおよびGrandma'sという親との間で共有するには、次に示すようなサンプル・データ・ファイルとルール・ファイルを使用します。このデータソースおよびルール・ファイルは、アウトラインにDiet、TBCおよびGrandma'sメンバーが存在する場合にのみ機能します。「重複するレベル」フィールドは、指定したレベル・フィールドがアウトライン内にすでに存在する場合を除き、常にディメンションの子(世代2)として作成されます。

図15-19 サンプル・ルール・ファイル: レベル参照を使用して様々な世代で共有される非レベル0メンバー


レベル参照による構築方法を使用して異なる世代で共有される非レベル0メンバーを作成するためのルール・ファイル。

レベル参照を使用した複数のロールアップの作成

複数のパースペクティブから合計を取得できるように、レベル参照による構築方法を使用してアウトライン内の異なるレベルに共有メンバーを配置することもできます。次の例は、Productディメンションのレベルに対する構築手順を示しています。


このイメージは、レベル参照による構築方法を使用して異なるレベルの共有メンバーを作成するためのルール・ファイルを示しています。

レコードが長いため、この2番目の図ではルール・ファイルを右にスクロールすると表示されていないメンバーが表示されます。

例に示されたルール・ファイルおよびデータを使用してディメンション構築を実行すると、次に示すアウトラインが構築されます。

図15-20 サンプル・アウトライン: 様々なレベルでの複数のロールアップ


このイメージは、Productディメンションの異なるレベルの新規共有メンバーを示しています。

この例では、パッケージ・タイプ(Cans)のみでなく、パッケージ材料による分析(アルミニウム缶とスチール缶の売上を比較するなど)も可能です。

Productは疎ディメンションであるため、代替アウトライン設計を使用して同じ情報を取得できます。たとえば、Canの下位にレベル0メンバーとしてパッケージ・タイプがSteelとAluminumのマルチレベルの属性ディメンションを作成するとします。アウトラインの設計のガイドラインについては、データベース設計の分析を参照してください。

複数のデータソースからの共有ロールアップの作成

1つのディメンションのデータが複数のデータソースに含まれていることがよくあります。複数のデータソースからディメンションを構築し、複数のロールアップを作成する場合は、最も適切な構築方法を使用して最初のデータソースをロードした後、親子参照による構築方法を使用してその他のすべてのデータソースをロードします。Essbaseで共有を許可する設定になっていることを確認します。

たとえば、次の製品データソースを使用します。

"Soft Drinks"   Cola
"Soft Drinks"   "Root Beer"
Cola            TBC
"Root Beer"     Grandma’s

Essbaseでは、図15-21に示されているアウトラインが構築されます:

図15-21 サンプル・アウトライン: Soft Drinks


このイメージは、イメージの前のテキストで説明されている、ソフト・ドリンクをロードした後のアウトラインを示しています。

続いて、次の2番目のデータソースをロードし、親子構築方法を使用して製品とベンダーを関連付けます。Essbaseで共有を許可する設定になっていることを確認します。

Vendor   TBC
Vendor   Grandma’s

Essbaseでは、図15-22に示されているアウトラインが構築されます:

図15-22 サンプル・アウトライン: Vendors (共有ロールアップ)


このイメージは、イメージの前のテキストで説明されている、ベンダーをロードした後のアウトラインを示しています。