論理列の操作
このトピックでは、論理列を作成および変更する方法について説明します。
論理列について
それぞれの論理表には、1つ以上の論理列が含まれます。論理列は、マップまたは計算される属性あるいはメジャーです。
ほとんどの場合、物理レイヤーから論理レイヤーに表をドラッグして論理列を作成します。この方法で作成する論理列は、1つ以上の物理列にマップされ、物理列のデータ型を継承します。
また、他の論理列に基づいた計算から導出される論理列を手動で作成することもできます。
たとえば、2つのマップされた属性列(First Name列とLast Name列)を持つディメンション表があるとします。このディメンション表には、Last Name列をFirst Name列と連結することによって計算されるFull Nameという計算済列を含めることもできます。
同じ例で、2つのマップされたメジャー列(集計が「合計」であるRevenueメジャー列と集計が「件数」であるBilled Quantityメジャー列)を持つファクト表があるとします。このファクト表には、RevenueをBilled Quantityで除算することによって計算されるActual Unit Priceという計算済メジャー列を含めることもできます。
論理列の追加または変更
新しい列を論理表に追加したり、インポートした列のプロパティを更新することができます。
- ホーム・ページで、「ナビゲータ」、「セマンティック・モデル」の順にクリックします。
- 「セマンティック・モデル」ページで、セマンティック・モデルをクリックして開きます。
- 「論理レイヤー」
をクリックします。
- 「論理レイヤー」ペインで、列を追加または変更する表を参照してダブルクリックします。
- 論理表で、「列」タブをクリックします。
- 「列の追加」
をクリックし、列の追加方法を指定します:
- 「新規列の作成」をクリックして空の列を作成します。
- 「物理列の追加」をクリックし、「物理列の選択」で1つ以上の列を参照して選択します。「選択」をクリックします。
- オプション: 列を複製するには、列の表で、複製する列にマウス・ポインタを重ね、その「行メニュー」をクリックして「複製」をクリックします。
- 列の表で、列をクリックして強調表示し、「詳細ビュー」をクリックしてそのプロパティを表示または変更します。
- 列のプロパティを指定します。
- 「保存」をクリックします。
論理列の論理表ソースの削除
論理表に論理表ソースを追加すると、自動的に論理列が追加され、それらが物理列にマップされます。列の論理表ソースを削除できます。
- ホーム・ページで、「ナビゲータ」、「セマンティック・モデル」の順にクリックします。
- 「セマンティック・モデル」ページで、セマンティック・モデルをクリックして開きます。
- 「論理レイヤー」をクリックします
- 「論理レイヤー」ペインで、変更する列を含む表を参照してダブルクリックします。
- 論理表で、「列」タブをクリックします。
- 列リストで列をクリックして選択し、「詳細ビュー」をクリックしてプロパティ・ペインを開きます。
- 「ソース」セクションまでスクロールし、削除する論理表ソースをクリックして、「削除」をクリックします。
- 「保存」をクリックします。
別の列に基づいた論理列のソート順序の設定
列の値をアルファベット順(辞書式順)に並べないときは、論理列のソート順序を変更します。
辞書式順のソートでは、列が別のグループに分けられるのではなく、アルファベットのスペル順で並べられます。たとえば、月をソートする場合(MONTH_NAME
などの列を使用して)、辞書式ソート順序で、2月、1月、3月という結果が返されます。
月を時系列順、つまり1月、2月、3月のようにソートするとします。表には、MONTH_KEY
などの月キーを、1 (1月)、2 (2月)、3 (3月)の値で含めて、時間的ソート順序にする必要があります。MONTH_NAME
列の「ソート順列」フィールドをMONTH_KEY
に設定すると、MONTH_NAME
による並替えのリクエストによって、1月、2月、3月の順序で値が返されます。
物理レイヤーからキューブをドラッグ・アンド・ドロップすることによってビジネス・モデルが作成される場合、Essbaseデータ・ソースに対してソート列が自動的に定義されます。
- ホーム・ページで、「ナビゲータ」、「セマンティック・モデル」の順にクリックします。
- 「セマンティック・モデル」ページで、セマンティック・モデルをクリックして開きます。
- 「論理レイヤー」をクリックします
- 「論理レイヤー」ペインで、ソート順序を変更する論理列を含む表を参照してダブルクリックします。
- 論理表で、「列」タブをクリックします。
- 列の表で、列をクリックして強調表示し、「詳細ビュー」をクリックしてそのプロパティを表示します。
- 論理列の「一般」プロパティで、「ソート基準」をクリックし、ソート基準にする列を選択します。
- 「保存」をクリックします。
二重列サポートの追加
二重列サポートでは、2つの列を関連付けることができます。1つの列は、表示および説明の値を提供します(項目の説明など)。2列目は、記述子ID列またはコード列を示します。
たとえば、実際の列を使用してプロジェクトリストを提供し、ClinicとClinic IDのように、1列目に関連付けられたID列を非表示にすることができます。Clinicの説明のみがユーザーに表示されます。
二重列を使用すると、数値の、かつ索引付けされたID列でフィルタリングが行われるため、パフォーマンスの向上に役立つ可能性があります。
二重列を使用すると、Essbaseの一意性要件を満たすのに役立ちます。
多言語列が参照関数をベースとしている場合、翻訳されていない参照キー列を、翻訳された列の記述子列として指定できます。二重列サポートを使用すると、言語に依存しないフィルタを定義できます。たとえば、分析では、ユーザーに表示列が表示されますが、問合せでは非表示の記述子ID列にフィルタが適用されます。
多言語データのサポートを参照してください。
- ホーム・ページで、「ナビゲータ」、「セマンティック・モデル」の順にクリックします。
- 「セマンティック・モデル」ページで、セマンティック・モデルをクリックして開きます。
- 「論理レイヤー」をクリックします
- 「論理レイヤー」ペインで、二重列として使用する論理列を含む表を参照します。
- 論理表で、「列」タブをクリックします。
- 列の表で、列をクリックして強調表示し、「詳細ビュー」をクリックしてそのプロパティを表示します。
- 論理列の「一般」プロパティで、「記述子列」フィールドをクリックし、使用する列を選択します。
- 「保存」をクリックします。
派生列の作成
集計後の計算をメジャーに適用する手段として、他の論理列から列を派生させることができます。式エディタを使用して、派生列式を指定します。
派生列を使用して、多言語データベース・スキーマからデータを表示する参照関数を作成できます。「論理参照列の作成」を参照してください。
Oracle Analytics問合せエンジンによって、ゼロによる除算の状況のエラーが回避されます。Oracle Analytics問合せエンジンでは、物理SQLの記述時にnullif()
または同様の関数を使用してゼロ除算阻止式が作成されます。このため、ゼロによる除算のエラーを回避するためにCASE
文を使用する必要はありません。
パフォーマンスを最適化し、集計レベルのエラーを回避するために、式エディタでは集計を定義しないでください。かわりに、論理列の「集計ルール」フィールドを設定します。「メジャー列の集計ルールの設定」を参照してください。
- ホーム・ページで、「ナビゲータ」、「セマンティック・モデル」の順にクリックします。
- 「セマンティック・モデル」ページで、セマンティック・モデルをクリックして開きます。
- 「論理レイヤー」をクリックします
- 「論理レイヤー」ペインで、派生列式を追加する論理列を含む表を参照します。
- 論理表で、「列」タブをクリックします。
- 列の表で、列をクリックして強調表示し、「詳細ビュー」をクリックしてそのプロパティを表示します。
- 論理列の「ソース」プロパティのペインで、「論理式」をクリックし、「式エディタを開く」をクリックして、式を作成および検証します。
- 式エディタで、「保存」をクリックします。
複数通貨サポートのための論理列の構成
ユーザーがビジュアライゼーション、分析およびダッシュボードの通貨列を表示する通貨を選択できるように、論理列を構成できます。
すべてのユーザーで通貨オプションの同一の静的リストが表示されるようにこの機能を設定することも、指定する論理SQL文に基づいて変化する通貨オプションの動的リストを提供することもできます。
式でセッション変数を使用する場合は、VALUEOF(NQ_SESSION.var_name)
という形式を使用する必要があります。通貨値を表示する論理列を編集して、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" )