論理列の作成と管理
多くの論理列は、物理レイヤーからビジネス・モデルとマッピング・レイヤーに表をドラッグすることによって自動的に作成されます。
その他の論理列は、特に他の論理列に基づいた計算が含まれる論理列は、後で作成することができます。
論理列は、属している論理表から展開されるツリー構造で表示されます。論理列が主キー列の場合または主キーに関与している場合、その論理列はキー・アイコンが付いて表示されます。論理列に集計ルールが設定されている場合は、ルール・アイコンが付いて表示されます。ビジネス・モデルとマッピング・レイヤーで論理列を並べ替えることもできます。
このセクションには次のトピックが含まれます:
別の列に基づいた論理列のソート
論理列には、ソート順序の基礎とする別の列を指定できます。
値をアルファベット順(辞書式順)に並べ替えないときは、列のソート順序を変更します。
辞書式順序のソートでは、数字が別のグループに分けられるのではなく、アルファベットのスペル順で並べられます。
たとえば、月をソートする場合(MONTH_NAME
などの列を使用して)、辞書式ソート順序で、2月、1月、3月という結果が返されます。月は時間的順序でソートすることもできます。表には、MONTH_KEY
などの月キーを、1 (1月)、2 (2月)、3 (3月)の値で含めて、時間的ソート順序にする必要があります。MONTH_NAME
列の「ソート順列」フィールドをMONTH_KEY
に設定すると、MONTH_NAME
による並替えのリクエストにより、1月、2月、3月の順序で値が返されます。
物理レイヤーからキューブをドラッグ・アンド・ドロップすることによってビジネス・モデルが作成される場合、Essbaseデータ・ソースに対してソート列が自動的に定義されます。
記述子ID列の割当てによる二重列サポートの有効化
多言語列がルックアップ関数をベースとしている場合、翻訳されていないルックアップ・キー列を、翻訳された列の記述子ID列として指定することが一般的です。
論理列に記述子ID列を割り当てると、二重列サポートが有効になります。二重列サポートを使用すると、言語に依存しないフィルタを定義できます。たとえば、「アンサー」では、ユーザーに表示列が表示されますが、問合せでは非表示の記述子ID列にフィルタが適用されます。
多言語データのサポートを参照してください。
二重列サポートは、2つの列を関連付けるメカニズムを提供します。1つの列は、表示および説明の値を提供します(項目の説明など)。2列目は、記述子ID列またはコード列を示します。たとえば、実際の列を使用してプロジェクトリストを提供し、ClinicとClinic IDのように、1列目に関連付けられたID列を非表示にすることができます。Clinicの説明のみがユーザーに表示されます。二重列のアプローチを使用すると、Essbaseの一意性の要件を満たすために役立ちます。Clinicの例では、次の手順のステップを使用して、クリニックIDが含まれる列への関連付けを追加できます。
- Oracle BI管理ツールでリポジトリを開きます。
- 「ビジネス・モデルとマッピング」レイヤーで、ビジネス・モデルを展開し、更新する列が含まれる表を展開します。
- 列を右クリックして、「問合せ関連オブジェクト」、「ビジネス・モデルとマッピング」、「論理列」の順に選択します。
- 「選択した列に関連した論理列」ダイアログで、選択した列に関連付ける列をクリックし、「編集」をクリックします。
- 「論理列」ダイアログで、「記述子ID列」フィールドの横の「設定」をクリックします
- 「参照」ダイアログで、記述子IDとして使用する列を選択し、「OK」をクリックします。
派生列の作成
集計後の計算をメジャーに適用する手段として他の論理列から列を派生する場合があります。
「論理列」ダイアログの「列ソース」タブで派生列式を指定します。
「計算ウィザード」を使用して一連の派生列を作成することもできます。計算ウィザードの使用を参照してください。
NQSConfig.INI
で、パラメータPREVENT_DIVIDE_BY_ZERO
がYES
に設定されている場合、Oracle BIサーバーでは、「アンサー」列計算の場合でも、ゼロ除算の状況でエラーが防止されます。Oracle BIサーバーでは、物理SQLの記述時にnullif()
または同様の関数を使用してゼロ除算阻止式が作成されます。このため、PREVENT_DIVIDE_BY_ZERO
がYES
(デフォルト値)に設定されているかぎり、ゼロ除算エラーを回避するためにCASE
文を使用する必要はありません。
計算に事前集計を適用することもできます。物理から論理表ソースへのマッピングの定義と計算項目の作成を参照してください。
パフォーマンスを最適化するために、式ビルダーでは集計を定義しないでください。かわりに、「論理列」ダイアログの「集計」タブを使用します。メジャー列の集計のデフォルト・レベルの設定を参照してください。
- 「論理列」ダイアログで、「列ソース」タブを選択します。
- 「式を使用して既存の列から派生」オプションを選択します。
- 「式ビルダー」ボタンをクリックして、式ビルダーを開きます。
- 式ビルダーの「派生論理列」ダイアログで、論理列の派生元の式を指定します。
- 「OK」をクリックします。
式ビルダーを使用して、参照関数を作成することにより、多言語データベース・スキーマからデータを表示することができます。Oracle Analytics Serverの管理の多言語データのサポートを参照してください。
複数通貨サポートのための論理列の構成
ユーザーが分析やダッシュボードで通貨列を表示する通貨を選択できるように、論理列を構成できます。
すべてのユーザーで通貨オプションの同一の静的リストが表示されるようにこの機能を設定することも、指定する論理SQL文に基づいて変化する通貨オプションの動的リストを提供することもできます。
プレゼンテーション・サービスの式でセッション変数を使用する場合は、それらの名前の先頭にNQ_SESSION
を付ける必要があります。通貨値を表示する論理列を編集して、PREFERRED_CURRENCY
セッション変数を使用して適切な変換ファクタが使用されるようにします。
セッション変数の作成および初期化ブロックの作成を参照してください。
次の論理列式では、NQ_SESSION.PREFERRED_CURRENCY
変数の値を使用して、複数の通貨列が切り替わります。各通貨列には変換された適切な値が含まれるよう設定されています。
INDEXCOL( CASE VALUEOF(NQ_SESSION.PREFERRED_CURRENCY) WHEN 'gc1' THEN 0 WHEN 'gc2' THEN 1 WHEN 'orgc' THEN 2 WHEN 'lc1' THEN 3 ELSE 4 END, "Paint"."Sales Facts"."USDCurrency", "Paint"."Sales Facts"."DEMCurrency" , "Paint"."Sales Facts"."EuroCurrency" , "Paint"."Sales Facts"."JapCurrency" , "Paint"."Sales Facts"."USDCurrency" )
プレゼンテーション・サービスでこの機能を有効にするには、追加の構成が必要です。Oracle BIプレゼンテーション・サービスの構成に関する詳細は、Oracle Analytics Serverの管理のユーザーの優先通貨オプションの定義を参照してください。
メジャー列の集計のデフォルト・レベルの設定
メジャーであるマップ済論理列に、集計ルールを指定する必要があります。
集計COUNT
およびCOUNTDISTINCT
を除いて、集計はメジャー列に対してのみ実行します。メジャー列は、論理ファクト表にのみ指定できます。
対象の論理列に関連付けられている別のディメンションに別の集計ルールを選択できます。たとえば、1つのディメンションに沿って集計列に問合せが実行された場合、1つのタイプの集計ルールを使用できる一方で、別のディメンションに沿って別の集計ルールを使用することもできます。
デフォルトの集計ルールが「重複を除いた件数」の場合、特定の論理表ソースにオーバーライド集計式を指定できます。たとえば、なんらかの集計レベルがすでに含まれている別の集計表ソースに問合せを実行する場合に、オーバーライド集計式を指定できます。オーバーライドを指定しないと、デフォルトのルールが使用されます。
EVALUATE_AGGR集計ルールを選択して、問合せでデータ・ソースのカスタム関数をコールできるように指定できます。Oracle Fusion Middleware Oracle Business Intelligence Enterprise Edition論理SQLリファレンス・ガイドのEVALUATE_AGGRとマルチディメンション・データ・ソースへの集計ルールの定義を参照してください。
デフォルトで、データはスパースであると見なされます。ただし、論理表ソースのデータ密度が高いことがあります。論理表ソースは、関連付けられているディメンション・レベルの組合せごとに行が存在する場合に密度が高いデータが含まれると見なされます。メジャー列に集計ルールを設定するときは、マッピング先のすべての論理表ソースのデータ密度が高い場合にのみデータ密度が高いと見なすことができます。
論理列へのディメンション固有の集計ルールの設定を参照してください。
すべてのディメンションで加算性が同一のメジャーの場合、「デフォルトの集計ルール」リストからいずれかの集計関数を選択します。問合せでユーザーまたはアプリケーションから列がリクエストされたときに、オーバーライド集計式が指定されていないかぎり、選択したファンクションが常に適用されます。デフォルトの集計ルールとして「重複を除いた件数」を選択した場合、特定の論理表ソースにオーバーライド集計式を指定できます。このオプションは、1つの論理列に複数の論理表ソースがマップされており、ソースごとに異なる集計ルールを適用する場合に選択します。
- ビジネス・モデルとマッピング・レイヤーで、論理列をダブルクリックします。
- 「論理列」ダイアログで、「集計」タブをクリックします。
- 「集計」タブで、次のいずれかのオプションを選択します。
- 「デフォルトの集計ルール」リストからいずれかの集計関数を選択します。
-
「追加」ボタンをクリックして、個々の集計ルールを指定する論理表ソースを選択します。
-
「参照」ダイアログで、追加する論理表ソースを選択して「OK」をクリックします。
-
選択した論理表ソースの「式」リストで、使用する集計ルールを選択します。
-
- 準加算メジャーの場合に、メジャーの加算性がディメンションごとに異なる場合、「ディメンションに基づく」を選択します。
-
「追加」ボタンをクリックして、集計ルールを指定する追加のディメンションを選択します。
-
「参照」ダイアログで、追加するディメンションを選択して、「OK」をクリックします。
-
選択したディメンションの「式」リストで、使用する集計ルールを選択するか、「式ビルダー」ボタンをクリックし、式ビルダーを使用して集計ルールを作成します。
-
「ディメンションに基づく」を選択すると、「データの密度が高い」オプションが表示されます。この列のマップ先の論理表ソースがすべて密度が高い場合はこのオプションを選択します。
「データの密度が高い」を選択することは、対象の列のマップ先のすべてのソースで、ソースが表しているディメンション・レベルの組合せごとに行があることを示しています。対象の列で使用されるいずれかの表ソースに密度の高いデータが含まれない場合にこのオプションを選択すると、正しくない結果が返されます。
-
- 「デフォルトの集計ルール」リストからいずれかの集計関数を選択します。
- 「OK」をクリックします。
論理列へのディメンション固有の集計ルールの設定
大多数のメジャーで、各ディメンションに同一の集計ルールが設定されます。メジャーによっては、ディメンションごとに異なる集計ルールが設定されていることもあります。
たとえば、銀行は一定期間の単純な合計で計算された個別の預金の平均ではなく、特定期間の平均預金残高を計算できます。ディメンション固有の集計ルールを構成できます。指定した1つのディメンションに1つの集計ルールを指定し、他のディメンションには適用する他のルールを指定することができます。
ディメンション固有の集計を設定するには、ビジネス・モデルとマッピング・レイヤーでディメンションを構成する必要があります。論理表ソース(マッピング)の管理を参照してください。
指定したディメンションにルールを選択した後、「その他」というラベルが付いたディメンションを使用して、残りのディメンションに集計ルールを設定します。
メジャーの計算時に、集計ルールは、このダイアログで指定されている順序(上から下)で適用されます。複数のディメンションがある場合は、「上」または「下」を使用して、ディメンション固有のルールの実行順序を変更できます。
- ビジネス・モデルとマッピング・レイヤーで、論理列をダブルクリックします。
- 「論理列」ダイアログで、「集計」タブをクリックします。
- 「集計」タブで、「ディメンションに基づく」を選択します。
- 「参照」ダイアログで、集計の基準として使用するディメンションを選択して、「OK」をクリックします。
- 「集計」タブで、「式」リストからルールを選択します。
- (オプション)より複雑な式を作成する必要がある場合は、「式ビルダー」ボタンをクリックして、式ビルダーを開きます。
- 「OK」をクリックします。
複数の論理列に対するディメンション固有の集計ルールの指定
複数の論理ファクト列に対する集計ルールを指定するには、このタスクのステップを使用してください。
メジャーの計算時に、集計ルールは、このダイアログで指定されている順序(上から下)で適用されます。
少なくとも2つの列を選択して、「集計の設定」メニュー項目を有効にします。これらの列に派生列が含まれていると、「集計の設定」は有効になりません。
- ビジネス・モデルとマッピング・レイヤーで、複数の論理ファクト列を選択します。
- 右クリックして、「集計の設定」を選択します。
- 「集計」ダイアログで、「すべての列が同じ」を選択するか、「クリア」を選択してから特定の列を選択します。
- 「集計」タブで、「ディメンションに基づく」を選択します。
- 「参照」ダイアログで、集計の基準として使用するディメンションを選択して、「OK」をクリックします。
- 1つのディメンションにルールを選択した後、「その他」というラベルが付いたエントリに入っているその他のディメンションに集計ルールを指定します。
- 「式」列の右にある「式ビルダー」ボタンをクリックします。
- 式ビルダーの「集計」タブで、「式」リストから、対象のディメンションに沿って実行する集計を選択します。
- ディメンション固有のルールの実行順序を変更するには、「上へ」または「下へ」をクリックして、「OK」をクリックします。
マルチディメンション・データ・ソースへの集計ルールの定義
Essbase、Oracle OLAP、およびMicrosoft Analysis ServicesやSAP/BWなどのマルチディメンション・データ・ソースをソースとする論理メジャーに、集計ルールを定義する際のベスト・プラクティスについて説明します。
Essbaseのキューブなどのマルチディメンションのキューブを「物理」レイヤーにインポートすると、Oracle BIサーバーはデータ・ソース内で設定された集計ルールを読み取れなくなります。デフォルトの動作の結果、メジャーは、外部集計のデフォルトの集計ルールを使用して自動的にインポートされます。
Oracle BIサーバーでは、外部集計は次のことを意味します。
-
特定のメジャーの基礎となる集計ルールを認識できない。
-
メジャーを計算できない。
-
常に基礎となるマルチディメンション・データ・ソースに集計の問合せを送信する。
基礎となるデータ・ソースは非常に効率的であるため、集計ルールをデータ・ソースにプッシュ・ダウンすることによって、Oracle BIサーバーから、処理でさらにオーバーヘッドを追加することなく結果を返すことができるようになります。各メジャーの集計ルールは、「物理」レイヤーと「ビジネス・モデルとマッピング」レイヤーの両方で、データ・ソースに定義された対応する集計ルールによって更新することをお薦めします。メジャーごとに集計ルールを更新することで、Oracle BIサーバーは必要に応じて追加の計算ができるようになります。Oracle BIサーバーから最適化された問合せが可能なかぎり引き続きプッシュ・ダウンされるため、問合せのパフォーマンスに影響はありません。
Oracle BIサーバーで、特定の問合せに対して追加の集計を実行する必要があり、集計ルールが外部集計のデフォルト値に設定されている場合、Oracle BIサーバーから次のエラーが返されます。
外部問合せブロック内で外部集計が検出されました。
このエラーは、Oracle BIサーバーで、基礎となるデータ・ソースの集計ルールを読み取れなかったために発生します。これらの問合せに対して正しい結果が返されるようにするには、基礎となるデータ・ソースに設定されている集計ルールと一致するように、Oracle BIリポジトリに設定されている集計ルールを変更する必要があります。
定義された集計ルールを基礎となるデータ・ソースのルールと一致させる必要があります。また、次の図に示しているように、物理レイヤーおよびビジネス・モデルとマッピング・レイヤーの両方に適切な集計ルールを設定する必要もあります。
Oracle BIサーバー内に対応するファンクションがないカスタムの集計の場合、物理メジャー列とそれに対応する論理メジャー列の両方について集計を外部集計のままにすることをお薦めします。
Oracle OLAPデータ・ソースの場合、Oracle OLAP列に物理レイヤー集計ルールを明示的に設定することはありません。このため、ビジネス・モデルとマッピング・レイヤーのOracle OLAP列にのみ集計ルールを設定する必要があります。
また、問合せでOracle OLAPデータ・ソース内に存在しない集計がリクエストされたときに、集計ルールが外部集計に設定されている場合、Oracle BIサーバーからエラーが返されます。このエラーを回避するには、ビジネス・モデルとマッピング・レイヤーのOracle OLAP列に集計ルールを明示的に設定する必要があります。
Oracle OLAP列の集計ルールを外部集計以外のものに明示的に設定しないと、Oracle BIプレゼンテーション・サービスのカスタム・グループからのリクエストが失敗します。これは、カスタム・グループは常に、データ・ソースには存在しない集計をリクエストするためです。
ディメンション表の論理レベルとの属性の関連付け
属性を論理レベルと関連付けることができます。
メジャーは、複数のディメンションのレベルに関連付けることができるほか、指定されたレベルに集計できます。あるレベルに関連付けられたメジャーは、レベルベース・メジャーと呼ばれます。問合せのコンテキストに下位のグレインが含まれていても、レベルベース・メジャーはそのグレインで計算されます。たとえば、yearlySalesが年レベルに関連付けられている場合、問合せSelect month, yearlySales
で年レベルで計算されます。
ディメンションは、「ディメンション」リストに表示されます。対象の属性が論理レベルに関連付けられている場合、レベルは「レベル」リストに表示されます。
特定のディメンションのレベルにメジャーを関連付ける別の方法として、ビジネス・モデルとマッピング・レイヤーでディメンション・ツリーを展開し、ターゲットのレベルに列をドラッグ・アンド・ドロップできます。「レベルベース・メジャーの計算」を参照してください。
- 管理ツールの「ビジネス・モデルとマッピング」レイヤーで、論理列をダブルクリックして、メジャーをディメンションの論理レベルと関連付けます。
- 「論理列」ダイアログで、「レベル」タブをクリックします。
- 「レベル」タブで、論理レベルと関連付ける論理ディメンションがある行をクリックします。
- 「論理レベル」リストで、レベルを選択します。
- 「OK」をクリックします。
論理列の移動またはコピー
論理列をある表から別の表にドラッグ・アンド・ドロップすると、その論理列が移動されます。
同じ名前の列がすでに存在する場合は、新しい列の名前が変更されます(たとえば、mycolumn#1)。
「オプション」ダイアログの「論理列の移動時にプロンプトを表示」オプションを選択して、論理列をドラッグ・アンド・ドロップしたときに「移動列のソース」ダイアログが表示されるようにすることもできます。このダイアログでは、ドラッグ・アンド・ドロップの動作に関するオプションを選択できます。
「論理列の移動時にプロンプトを表示」オプションの詳細は、管理ツールのオプションの設定を参照してください。
この手順が完了すると、移動またはコピーした列が論理ソースに関連付けられます。アクション・リストの値は次のとおりです。
-
「無視」を選択した場合、ターゲットの表のSourcesフォルダに論理ソースは追加されません。
-
「新規作成」を選択した場合、ターゲットの表のSourcesフォルダに、論理列に関連付けられた論理ソースのコピーが作成されます。
-
「既存のものを使用」を選択した場合、ターゲット表の「ソース」フォルダから論理ソースを選択する必要があります。
- 「ビジネス・モデルとマッピング」レイヤーで、論理列を別の論理表にドラッグ・アンド・ドロップします。
- 「移動列のソース」ダイアログの、「アクション」リストから選択します。