ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Business Intelligence基礎ガイド
11gリリース1 (11.1.1)
E64853-01
  目次へ移動
目次

前
 
次
 

高度な手法: 変数の格納値の参照

トピック:

分析、ダッシュボードおよびアクションなど、Oracle BI Enterprise Editionの様々な領域で変数の格納値を参照できます。たとえば、現在のユーザー名をタイトルに表示する分析を作成するとします。これは、変数を参照することによって行えます。セッション、リポジトリ、プレゼンテーション、リクエストおよびグローバルの5つのタイプの変数を使用できます。

セッション変数について

セッション変数は、各ユーザーのログイン時に初期化される変数です。ユーザーがセッションを開始すると、Oracle BI Enterprise Editionでセッション変数の新規インスタンスが作成され、初期化されます。セッション変数のインスタンスの数は、Oracle BI Enterprise Edition上のアクティブなセッションと同じです。セッション変数の各インスタンスは、異なる値で初期化できます。

セッション変数には、次の表で説明するように、2つのタイプがあります。

タイプ 説明
システム 特定の目的のためにOracle BI Enterprise Editionによって使用されるセッション変数。

システム・セッション変数には、他の種類の変数(静的または動的リポジトリ変数やシステム以外のセッション変数)に使用できない予約名が付けられています。

システム以外 管理者が作成して名前を付けるシステム変数。たとえば、管理者は、ユーザーの販売地域の名前を初期化するSalesRegionというシステム以外の変数を作成できます。

管理者は、Oracle BI管理ツールを使用して、システム以外の変数を作成します。


リポジトリ変数について

リポジトリ変数は、どの時点でも1つの値を持つ変数です。静的リポジトリ変数には、管理者が変更するまで存続して変わらない値が格納されます。動的リポジトリ変数には、問合せから返されたデータによってリフレッシュされる値が格納されます。

プレゼンテーション変数について

プレゼンテーション変数は、次のいずれかのタイプのダッシュボード・プロンプトを作成する過程で作成できる変数です。次の表を参照してください。

タイプ 説明
列プロンプト 列プロンプトの一部として作成されるプレゼンテーション変数は列と関連付けられ、とり得る値は列値からの値です。

プレゼンテーション変数を列プロンプトの一部として作成するには、「新規プロンプト」ダイアログの「変数の設定」フィールドで「プレゼンテーション変数」を選択する必要があります。「変数名」フィールドに変数の名前を入力します。

列プロンプトの操作の詳細は、列プロンプトの作成を参照してください。

変数プロンプト 変数プロンプトの一部として作成されるプレゼンテーション変数は列に関連付けられないため、とり得る値はユーザーが定義します。

プレゼンテーション変数を変数プロンプトの一部として作成するには、「新規プロンプト」ダイアログの「プロンプト対象」フィールドで「プレゼンテーション変数」を選択する必要があります。「変数名」フィールドに変数の名前を入力します。

変数プロンプトの操作の詳細は、変数プロンプトの作成を参照してください。


プレゼンテーション変数の値は、同時に作成された列プロンプトまたは変数プロンプトによって移入されます。つまり、ユーザーが列プロンプトまたは変数プロンプトで1つ以上の値を選択するたびに、プレゼンテーション変数の値が、ユーザーが選択した値に設定されます。

リクエスト変数について

リクエスト変数を使用すると、セッション変数の値をオーバーライドできますが、オーバーライドできるのは、列プロンプトから開始されたデータベース・リクエストの間のみです。リクエスト変数は、列プロンプトの作成過程で作成できます。

列プロンプトの一部として作成されるリクエスト変数は列と関連付けられ、とり得る値は列値からの値です。

リクエスト変数を列プロンプトの一部として作成するには、「新規プロンプト」ダイアログの「変数の設定」フィールドで「リクエスト変数」を選択する必要があります。「変数名」フィールドに、オーバーライドするセッション変数の名前を入力します。

リクエスト変数の値は、同時に作成された列プロンプトによって移入されます。つまり、ユーザーが列プロンプトで値を選択するたびに、リクエスト変数の値が、ユーザーが選択した値に設定されます。ただし、値が有効なのは、ユーザーがプロンプトの「実行」ボタンを押した時点から、分析結果がダッシュボードに返されるまでです。


注意:

複数の値がサポートされるのは、文字列および数値のリクエスト変数のみです。その他のデータ型では最初の値のみが渡されます。

グローバル変数について

グローバル変数は、特定のデータ型と値の組合せによって作成される列です。値には、「日付」、「日付と時間」、「数値」、「テキスト」および「時間」があります。グローバル変数は分析の実行時に評価され、グローバル変数の値が適切に置き換えられます。BIAdvancedContentAuthorロールがあるユーザーのみが、グローバル変数を管理(追加、編集および削除)できます。

グローバル変数は、分析の作成過程で「列式の編集」ダイアログを使用して作成できます。グローバル変数はカタログに保存されるため、特定のテナント・システムに属する他のすべての分析で使用できます。

グローバル変数の作成

計算は、グローバル変数として保存し、別の分析で再利用できます。

グローバル変数を作成するには:

  1. 編集する分析を開きます。

  2. 「選択された列」ペインで、列名の横にある「オプション」をクリックします。

    analysis17.gifの説明が続きます
    analysis17.gifの説明

  3. 「式の編集」を選択して、「列式」タブを表示します。このタブを使用してグローバル変数のカスタム・ヘッダーを作成できます。

  4. 「変数」をクリックして「グローバル」を選択し、「グローバル変数の挿入」ダイアログを表示します。

    analysis77.gifの説明が続きます
    analysis77.gifの説明

  5. 「新規グローバル変数の追加」をクリックして、「新規グローバル変数の追加」ダイアログを表示します。

    analysis64.gifの説明が続きます
    analysis64.gifの説明

  6. 「名前」に値を入力します。たとえば、gv_region、date_and_time_global_variable、rev_eastern_region_calc_gvなどです。構文要件は、変数を参照する構文を参照してください。


    注意:

    グローバル変数を参照するときは、完全修飾の名前が必要になるため、global.variablesというテキストが接頭辞として付加されます。たとえば、「列式」ダイアログには、売上を計算するグローバル変数セットが次のように表示されます。

    "Base Facts"."1- Revenue"*@{global.variables.gv_qualified}


  7. 「タイプ」および「値」に値を入力します。


    注意:

    データ型として「日付と時間」を選択した場合、値は次の例のように入力します: 03/25/2004 12:00:00 AM

    式または計算を値として入力する場合は、次の例のようにテキストのデータ型を使用する必要があります: "Base Facts"."1- Revenue"*3.1415


  8. 「OK」をクリックします。新しいグローバル変数が「グローバル変数の挿入」ダイアログに追加されます。

  9. 作成した新しいグローバル変数を選択し、「OK」をクリックします。「列式」ペインにグローバル変数が挿入された「列式の編集」ダイアログ・ボックスが表示されます。「カスタムの見出し」チェック・ボックスが自動的に選択されます。

  10. グローバル変数を割り当てた列に、変数をより正確に反映する新しい名前を入力します。

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

変数を参照する構文

分析およびダッシュボードでは、変数を参照できます。変数の参照方法は、実行するタスクによって異なります。フィルタ定義で変数を参照する場合など、ダイアログにフィールドが表示されるタスクの場合、(完全な構文ではなく)変数のタイプと名前のみ指定する必要があります。

タイトル・ビューでの変数の参照などの他のタスクの場合、変数の構文を指定する必要があります。次の表に示すように、使用する構文は変数のタイプによって異なります。

タイプ 構文
セッション @{biServer.variables['NQ_SESSION.variablename']}

variablenameは、セッション変数の名前です(DISPLAYNAMEなど)。

@{biServer.variables['NQ_SESSION.USER']}
リポジトリ @{biServer.variables.variablename}

または

@{biServer.variables['variablename']}

variablenameは、リポジトリ変数の名前です(prime_beginなど)。

@{biServer.variables.prime_begin}

または

@{biServer.variables['prime_begin']}

プレゼンテーションまたはリクエスト @{variables.variablename}[format]{defaultvalue}

または

@{scope.variables['variablename']}

説明:

variablenameは、プレゼンテーション変数またはリクエスト変数の名前です(MyFavoriteRegionなど)。

(オプション)formatは、変数のデータ型によって異なる書式マスクです(#、##0、MM/DD/YY hh:mm:ssなど)。(書式はデフォルト値には適用されないことに注意してください。)

(オプション)defaultvalueは、variablenameで参照される変数に値が入っていない場合に使用される値を示す定数または変数の参照です。

scopeは、変数の修飾子を識別します。変数が複数のレベル(分析ダッシュボード・ページおよびダッシュボード)で使用され、特定の値にアクセスする場合、有効範囲を指定する必要があります。(有効範囲を指定しない場合、分析、ダッシュボード・ページ、ダッシュボードの順に優先されます。)

注意: 複数の値を設定できるプレゼンテーション変数が指定されたダッシュボード・プロンプトを使用する際には、列タイプによって構文が異なります。複数の値がカンマ区切りの値に書式設定されるため、書式設定句は、カンマで結合される前に各値に適用されます。

@{variables.MyFavoriteRegion}{EASTERN REGION}

または

@{MyFavoriteRegion}

または

@{dashboard.variables['MyFavoriteRegion']}

または

(@{myNumVar}[#,##0]{1000})

または

(@{variables.MyOwnTimestamp}[YY-MM-DD hh:mm:ss]{)

または

(@{myTextVar}{A, B, C})

グローバル @{global.variables.variablename}

variablenameはグローバル変数の名前です(例: gv_region)。グローバル変数を参照する場合は、例に示すように、完全修飾名を使用する必要があります。

注意: グローバル変数の命名規則は、JavaScriptのEMCAスクリプト言語仕様に準拠している必要があります。名前は200文字以内にする必要があります。埋込みスペース、予約語および特殊文字は使用できません。JavaScripting言語要件に精通していない場合は、サード・パーティのリファレンスを参照してください。

@{global.variables.gv_date_n_time}

式で変数を参照することもできます。式で変数を参照するためのガイドラインは、次の各項に記載されています。

セッション変数

式でセッション変数を参照するためのガイドラインは、次のとおりです。

  • セッション変数をVALUEOF関数の引数として含めます。

  • 変数を二重引用句で囲みます。

  • セッション変数の前にNQ_SESSIONとピリオドを付けます。

  • NQ_SESSIONの部分とセッション変数名の両方と丸カッコで囲みます。

例:

"Market"."Region"=VALUEOF(NQ_SESSION."SalesRegion")

リポジトリ変数

式でリポジトリ変数を参照するためのガイドライン:

  • リポジトリ変数をVALUEOF関数の引数として含めます。

  • 変数を二重引用句で囲みます。

  • 静的リポジトリ変数を名前で参照します。

  • 動的リポジトリ変数を完全修飾名で参照します。

例:

CASE WHEN "Hour" >= VALUEOF("prime_begin") AND "Hour" < VALUEOF("prime_end") THEN 'Prime Time' WHEN ... ELSE...END

プレゼンテーション変数

プレゼンテーション変数を参照する場合は、次の構文を使用します。

@{variablename}{defaultvalue}

variablenameは、プレゼンテーション変数の名前で、defaultvalue(オプション)はvariablenameで参照される変数に値が入っていない場合に使用される値を示す定数または変数の参照です。

変数を文字列に型変換(つまり、変換)するには、次のように、構文全体を一重引用符で囲みます。

'@{user.displayName}'

@マークの後ろに{がない場合は、@マークとして処理されます。複数の値を設定できるプレゼンテーション変数を使用する際には、列タイプによって構文が異なります。

有効なSQL文を生成するには、各列タイプのSQLで次の構文を使用します。

  • テキスト — (@{variablename}['@']{'defaultvalue'})

  • 数値 — (@{variablename}{defaultvalue})

  • 日時 — (@{variablename}{timestamp 'defaultvalue'})

  • 日付(日付のみ) — (@{variablename}{date 'defaultvalue'})

  • 時間(時間のみ) — (@{variablename}{time 'defaultvalue'})

例:

"Market"."Region"=VALUEOF(NQ_SESSION."SalesRegion")