セッション変数の動的な作成とその値の設定について
セッション変数初期化ブロックでは、「問合せ戻し」フィールドで「変数名および値」オプションを選択して、セッション変数を動的に作成し、セッションの開始時に値を設定できます。
セッション変数の名前と値は、接続プールを介してアクセスする外部データソースにあります。 変数は、指定した初期化問合せから値を受け取ります。
例1 - 単一値変数を使用した初期化問合せ
RW_SESSION_VARSという表に含まれている値を使用してセッション変数を作成するとします。 この表には、次の3つの列が含まれています:
-
USERID- ユーザーの一意の識別子を表す値が含まれます。 -
NAME- セッション変数名を表す値が含まれます。 -
VALUE- セッション変数値を表す値が含まれます。
この表は、列とその値の例を示しています。
| USERID | NAME | VALUE |
|---|---|---|
|
JOHN |
LEVEL |
4 |
|
JOHN |
STATUS |
FULL-TIME |
|
JANE |
LEVEL |
8 |
|
JANE |
STATUS |
FULL-TIME |
|
JANE |
GRADE |
AAA |
この例を実装するには、セッション変数初期化ブロックを作成し、「問合せ戻し」フィールドで「変数名および値」を選択します。 次に、「Select文」フィールドに次の初期化問合せを入力します:
SELECT NAME, VALUE FROM RW_SESSION_VARS WHERE USERID='VALUEOF(NQ_SESSION.USERID)'
NQ_SESSION.USERIDは、ログオン時にユーザーごとにOracle Analyticsが初期化するシステム・セッション変数です。
この例は、初期化時に次のセッション変数を作成します:
-
JohnがOracle Analyticsに接続すると、セッションに2つのセッション変数が含まれます: 値
4および値FULL_TIMEを含むSTATUSを含むLEVEL。 -
JaneがOracle Analyticsに接続すると、セッションに3つのセッション変数が含まれます: 値
8、値FULL-TIMEを含むSTATUSおよび値AAAを含むGRADEを含むLEVEL。
例2 - 複数の値変数を使用した初期化問合せ
RW_SESSION_VARSという表に含まれている値を使用してセッション変数を作成するとします。 この表には、次の3つの列が含まれています:
-
ROLE_NAME- ユーザー・ロールを表す値が含まれます。 -
NAME- セッション変数名を表す値が含まれます。 -
VALUE- セッション変数値を表す値が含まれます。
この表は、列とその値の例を示しています。
| ROLE_NAME | NAME | VALUE |
|---|---|---|
|
Role1 |
LEVEL |
4 |
|
Role1 |
STATUS |
FULL-TIME |
|
Role2 |
GRADE |
AAA |
この例を実装するには、セッション変数初期化ブロックを作成し、「問合せ戻し」フィールドで「変数名および値」を選択します。 次に、「Select文」フィールドに次の初期化問合せを入力します:
SELECT NAME, VALUE FROM RW_SESSION_VARS WHERE ';' || 'valueof(NQ_SESSION.ROLES)' || ';' like '%;' || ROLE_NAME || ';%'
ユーザーにRole1およびロール2が割り当てられている場合、valueof(NQ_SESSION.ROLES)は値Role1;Role2を返します。
NQ_SESSION.ROLESは、ログオン時にユーザーごとにOracle Analyticsが初期化するシステム・セッション変数です。
この例は、初期化時に次のセッション変数を作成します:
-
Role1に割り当てられたユーザーがOracle Analyticsに接続すると、そのセッションには2つのセッション変数が含まれます: 値
4および値FULL-TIMEを含むSTATUSを含むLEVEL。 -
Role2に割り当てられたユーザーがOracle Analyticsに接続すると、セッションには、値
AAAを含むセッション変数GRADEが1つ含まれます。 -
ロール1およびRole2に割り当てられたユーザーがOracle Analyticsに接続すると、そのセッションには3つのセッション変数が含まれます: 値
4、値FULL-TIMEを含むSTATUSおよび値AAAを含むGRADEを含むLEVEL。