高度な手法: 変数の格納値の参照
現在のユーザー名をタイトルに表示する分析を作成する場合があります。これは、変数を参照することによって行えます。
分析、ダッシュボードおよびアクション内で、複数の異なるタイプの変数(セッション、リポジトリ、プレゼンテーション、リクエストおよびグローバル)を参照できます。コンテンツ作成者は、プレゼンテーション、リクエストおよびグローバル変数を定義できますが、その他のタイプ(セッションおよびリポジトリ)はデータ・モデル内で定義されます。
変数のタイプ | 定義場所 | 定義者 | 詳細情報 |
---|---|---|---|
セッション
|
データ・モデル |
データ・モデラー |
セッション変数について |
リポジトリ
|
データ・モデル |
データ・モデラー |
リポジトリ変数について |
プレゼンテーション |
分析とダッシュボードのプロンプト |
コンテンツ作成者 |
プレゼンテーション変数について |
リクエスト |
分析とダッシュボードのプロンプト |
コンテンツ作成者 |
リクエスト変数について |
グローバル |
分析 |
管理者 |
「グローバル変数について」および「グローバル変数の作成」 |
セッション変数について
セッション変数は、ユーザーがサインインすると初期化されます。
これらの変数は、各ユーザーの参照セッションの間存在し、ユーザーがブラウザを閉じるかサインアウトすると、期限切れになります。セッション変数には、システムとシステム以外の2つのタイプがあります。
システム・セッション変数
レポートおよびダッシュボードで使用できるいくつかのシステム・セッション変数があります。
システム・セッション変数には予約名があるため、他の種類の変数には使用できません。
システム・セッション変数 | 説明 | SQL問合せ値の例(変数ダイアログ) |
---|---|---|
PORTALPATH |
ユーザーがサインインしたときに表示されるデフォルトのダッシュボードを示します(ユーザーはサインイン後にこのプリファレンスをオーバーライドできます)。 |
ユーザーがサインインしたときにmydashboardを表示するには:
|
TIMEZONE |
ユーザーがサインインしたときのデフォルトのタイムゾーンを指定します。 ユーザーのタイムゾーンは、通常、ユーザーのプロファイルから移入されます。ユーザーは、プリファレンス(「マイ・アカウント」)からデフォルトのタイムゾーンを変更できます。 |
ユーザーがサインインしたときにタイムゾーンを設定するには:
|
DATA_TZ |
データの元のタイムゾーンからのオフセットを指定します。 この変数を使用すると、適切なタイムゾーンがユーザーに表示されるように、ゾーンを変換できます。 |
時間データを東部標準時(EST)に変換するには:
この例は、グリニッジ標準時(GMT) - 5時間を意味します。 |
DATA_DISPLAY_TZ |
データを表示するタイムゾーンを指定します。 |
東部標準時(EST)を表示するには:
この例は、グリニッジ標準時(GMT) - 5時間を意味します。 |
リポジトリ変数について
リポジトリ変数は、どの時点でも1つの値を持つ変数です。
リポジトリ変数は静的または動的に設定できます。静的リポジトリ変数には、管理者が変更するまで存続して変わらない値が格納されます。動的リポジトリ変数には、問合せから返されたデータによってリフレッシュされる値が格納されます。
プレゼンテーション変数について
プレゼンテーション変数は、列プロンプトまたは変数プロンプトを作成する過程で作成できる変数です。
タイプ | 説明 |
---|---|
列プロンプト |
列プロンプトの一部として作成されるプレゼンテーション変数は列と関連付けられ、とり得る値は列値からの値です。 プレゼンテーション変数を列プロンプトの一部として作成するには、「新規プロンプト」ダイアログの「変数の設定」フィールドで「プレゼンテーション変数」を選択する必要があります。「変数名」フィールドに変数の名前を入力します。 |
変数プロンプト |
変数プロンプトの一部として作成されるプレゼンテーション変数は列に関連付けられないため、とり得る値はユーザーが定義します。 プレゼンテーション変数を変数プロンプトの一部として作成するには、「新規プロンプト」ダイアログの「プロンプト対象」フィールドで「プレゼンテーション変数」を選択する必要があります。「変数名」フィールドに変数の名前を入力します。 |
プレゼンテーション変数の値は、同時に作成された列プロンプトまたは変数プロンプトによって移入されます。つまり、ユーザーが列プロンプトまたは変数プロンプトで1つ以上の値を選択するたびに、プレゼンテーション変数の値が、ユーザーが選択した値に設定されます。
リクエスト変数について
リクエスト変数を使用すると、セッション変数の値をオーバーライドできますが、オーバーライドできるのは、列プロンプトから開始されたデータベース・リクエストの間のみです。リクエスト変数は、列プロンプトの作成過程で作成できます。
次のいずれかのタイプのダッシュボード・プロンプトを作成する過程の一部として、リクエスト変数を作成できます。
-
列プロンプトの一部として作成されるリクエスト変数は列と関連付けられ、とり得る値は列値からの値です。
リクエスト変数を列プロンプトの一部として作成するには、「新規プロンプト」ダイアログの「変数の設定」フィールドで「リクエスト変数」を選択する必要があります。「変数名」フィールドに、オーバーライドするセッション変数の名前を入力します。
-
変数プロンプトの一部として作成されるリクエスト変数は列に関連付けられないため、ユーザーがとり得る値を定義します。
リクエスト変数を変数プロンプトの一部として作成するには、「新規プロンプト」ダイアログ(または「プロンプトの編集」ダイアログ)の「プロンプト対象」フィールドで「リクエスト変数」を選択する必要があります。次に、オーバーライドするセッション変数の名前を「変数名」フィールドに入力します。
リクエスト変数の値は、同時に作成された列プロンプトによって移入されます。つまり、ユーザーが列プロンプトで値を選択するたびに、リクエスト変数の値が、ユーザーが選択した値に設定されます。ただし、値が有効なのは、ユーザーがプロンプトの「実行」ボタンを押した時点から、分析結果がダッシュボードに返されるまでです。
特定のシステム・セッション変数(USERGUID、ROLESなど)をリクエスト変数でオーバーライドすることはできません。DATA_TZ、DATA_DISPLAY_TZ (タイムゾーン)などのその他のシステム・セッション変数は、Oracle BI管理ツールで構成されている場合、オーバーライドできます。
複数の値がサポートされるのは、文字列および数値のリクエスト変数のみです。その他のデータ型では最初の値のみが渡されます。
グローバル変数について
グローバル変数は、特定のデータ型と値の組合せによって作成される列です。値には、「日付」、「日付と時間」、「数値」、「テキスト」および「時間」があります。
グローバル変数は分析の実行時に評価され、グローバル変数の値が適切に置き換えられます。
BIサービス管理者ロールを持つユーザーのみが、グローバル変数を管理(追加、編集および削除)できます。
グローバル変数は、分析の作成過程で「列式の編集」ダイアログを使用して作成できます。グローバル変数はカタログに保存されるため、特定のテナント・システムに属する他のすべての分析で使用できます。
変数を参照する構文
分析およびダッシュボードでは、変数を参照できます。
変数の参照方法は、実行するタスクによって異なります。フィルタ定義で変数を参照する場合など、ダイアログにフィールドが表示されるタスクの場合、(完全な構文ではなく)変数のタイプと名前のみ指定する必要があります。
タイトル・ビューでの変数の参照などの他のタスクの場合、変数の構文を指定する必要があります。次の表に示すように、使用する構文は変数のタイプによって異なります。
タイプ | 構文 | 例 |
---|---|---|
セッション |
@{biServer.variables['NQ_SESSION.variablename']} variablenameは、セッション変数の名前です(DISPLAYNAMEなど)。 |
@{biServer.variables['NQ_SESSION.SalesRegion]} |
リポジトリ |
@{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")
プレゼンテーション変数
式でプレゼンテーション変数を参照するには、次のガイドラインを使用できます。
プレゼンテーション変数を参照する場合は、次の構文を使用します。
@{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")