セッション変数の定義

このトピックでは、データ・フィルタおよび式で使用するセッション変数の理解および定義に必要な知識について説明します。

セッション変数について

ユーザーのセッションに固有の値を持ち、ユーザーがOracle Analyticsにログインしたときに設定される変数が必要な場合は、セッション変数を使用します。セッション変数を使用して、セッションのフィルタおよび権限を設定します。

セッション変数によって、変化するデータ環境にあわせてメタデータの内容が動的に変更されます。たとえば、ユーザー1が部門1に属していて、ユーザー2が部門2に属しているとします。これらのユーザーは、各部門のデータのみにアクセスする必要があります。この場合、DEPARTMENT_NUMBER変数を作成して使用し、User1およびUser2の適切な値を格納できます。この変数を使用して、User1にはDepartment2、User2にはDepartment2でデータをフィルタできます。

セッション変数を定義するには、初期化ブロックを作成するか、既存の初期化ブロックを使用して、1つ以上のセッション変数を含めます。初期化ブロックには、データ・ソースにアクセスし、定義したセッション変数に移入する結果を返すデフォルトの初期化問合せおよび接続プールが含まれています。セッション変数は、セマンティック・モデルのデータ・フィルタまたは式に追加できます。

グローバル変数とは異なり、セッション変数の初期化はスケジュールされません。ユーザーがセッションを開始すると、Oracle Analyticsによってセッション変数の新規インスタンスが作成され、初期化されます。セッション変数値は、セッションの間変わりません。

セッション変数のインスタンスの数は、Oracle Analytics上のアクティブなセッションと同じです。セッション変数の各インスタンスは、異なる値に初期化できます。

多数のセッション変数を含む初期化ブロックは、パフォーマンスを低下させる可能性があります。関連付けられたセッション変数が実際にセッション内でアクセスされるまで、セッション・ログオン時のセッション変数初期化ブロックの処理を遅延できます。「セッション変数の処理の遅延」を参照してください。

マルチソース・セッション変数について

複数のデータ・ソースからの値を指定する変数が必要な場合は、マルチソース・セッション変数を作成して使用します。マルチソース・セッション変数は、データ・フィルタおよび式で使用できます。

マルチソース・セッション変数が保持できる値の数に制限はありません。

セッション初期化ブロックでは、次の形式を使用して、各ソースのセッション変数を作成します。この形式には、変数名とソースの間の区切り記号として4つのアンダースコア文字が含まれます。

<ms_variable_name>____<source>

作成したマルチソース・システム変数定義は、保存されたセッション初期化ブロックの定義(MVCOUNTRY____ORCLMVCOUNTRY____SNFLなど)にリストされます。ただし、マルチソース・セッション変数名を含む式を作成すると、式エディタの「変数」タブに変数名(MVCOUNTRYなど)が表示されます。

マルチソース・セッション変数の作成方法の例は、「マルチソース・セッション変数の作成」を参照してください。

値を返す他のコンポーネント初期化ブロックのマルチソース・セッション変数にも値を追加できます。すべてのコンポーネント初期化ブロックがNULL値を返した場合、マルチソース・セッション変数は失敗します。

マルチソース・セッション変数には、通常のセッション変数と同様に、処理依存性や遅延処理を設定できます。

セッション変数の作成

変数の値をユーザーのセッションに固有にし、ユーザーがOracle Analyticsにログインしたときに設定する必要がある場合は、セッション変数を作成します。たとえば、ユーザー部門や販売地域です。

セッション変数を定義して保存すると、データ・フィルタおよび式に追加できます。

セマンティック・モデルでは、初期化ブロック内にセッション変数を作成して定義します。スタンドアロン・セッション変数を作成して定義し、後で初期化ブロックに関連付けることはできません。

セッション変数を作成するときは、次の情報を考慮してください:

  • 初期化ブロックに複数の変数を追加する場合、変数は初期化問合せの列順序と一致する必要があります。これは、問合せの実行時に各変数が適切な値を受け取るようにするためです。

  • 変数への移入に使用される初期化問合せは、変数値に必要な物理表を参照する必要があります。セマンティック・モデルの物理レイヤーに変数値を提供する物理表を含める必要はありません。

  • 「ユーザーによる値の設定を有効にします」オプションを使用すると、ユーザーが分析またはダッシュボード(What If分析など)で変数の値を設定できるようになります。ユーザー指定の変数値はOracle Analytics問合せエンジンに渡され、基礎となる計算で使用されます。

  • 「セキュリティ・センシティブ」オプションでは、仮想プライベート・データベース(VPD)などの行レベル・データベース・セキュリティ戦略を使用する際に、変数がセキュリティ・センシティブと識別されます。このオプションとデータベースの「仮想プライベート・データベース」データ・ソース・プロパティが選択されている場合、Oracle Analytics問合せエンジンは、セキュリティ・センシティブ変数のリストを見込みのキャッシュ・ヒットと照合します。キャッシュ・ヒットは、すべてのセキュリティ・センシティブ変数が含まれて一致しているキャッシュ・エントリでのみ発生します。

  • 階層列の選択ステップをオーバーライドする変数を作成する場合は、JSON構文を使用して初期化問合せを記述します。「選択ステップをオーバーライドする変数で使用される初期化問合せ」を参照してください。

  • 変数にはオブジェクト権限が適用されないため、変数内の値は安全ではなく、変数の名前を知っている人、または推測できる人は誰でも式でその変数を使用できます。このため、Oracleでは、パスワードなどの機密データは変数に格納しないことをお薦めします。

セッション変数を作成するには、次のステップに従います:

  1. ホーム・ページで、「ナビゲータ」「セマンティック・モデル」の順にクリックします。
  2. 「セマンティック・モデル」ページで、セマンティック・モデルをクリックして開きます。
  3. 「変数」変数アイコンをクリックします。
  4. 「作成」作成アイコンをクリックし、「初期化ブロックの作成」をクリックします。
  5. 「初期化ブロックの作成」で、「名前」フィールドに移動し、初期化ブロック名を入力します。
  6. 「タイプ」フィールドに移動し、「セッション」を選択します。「OK」をクリックします。
  7. 「変数」タブが表示されていることを確認し、「SELECT文: DEFAULT」フィールドに移動して初期化問合せを入力します。
  8. 「接続プール」に移動し、「選択」をクリックして、初期化ブロックで使用する接続プールを参照して選択します。
  9. 「変数の追加」作成アイコンをクリックし、一意の名前を入力します。
  10. デフォルト値を指定するには、次のいずれかのオプションを使用します。
    • 「値」フィールドに移動し、デフォルト値を入力します。
    • デフォルト値としてnullを使用する場合は、「値」を空白のままにします。
    • 「詳細ビュー」をクリックし、「式エディタを開く」をクリックして、デフォルト値を決定する式を作成します。
  11. オプション: ユーザーが分析またはダッシュボード(What If分析など)で変数の値を設定できるようにするには、「ユーザーによる値の設定を有効にします」を選択します。
  12. オプション: 「セキュリティ・センシティブ」を選択すると、仮想プライベート・データベース(VPD)などの行レベル・データベース・セキュリティ戦略を使用する際に、その変数をセキュリティ・センシティブと識別できます。
  13. オプション: 「変数の追加」をクリックして別の変数を追加し、「上に移動」および「下に移動」を使用して変数を正しい順序に配置します。
  14. オプション: 「問合せのテスト」をクリックして、初期化問合せによって返された変数値を確認し、変数が正しい値を受け取っていることを確認します。
  15. 「保存」をクリックします。

例 - マルチソース・セッション変数の作成および使用

このトピックでは、MVCOUNTRYマルチソース・セッション変数を作成および使用する方法の例を示します。

マルチソース・セッション変数の作成

このトピックでは、MVCOUNTRYマルチソース・セッション変数を作成する方法について説明します。MVCOUNTRY変数を式またはデータ・フィルタに追加すると、OracleおよびSnowflakeデータ・ソースからデータが返されます。

マルチソース・セッション変数を作成すると、変数定義が初期化ブロックの定義(MVCOUNTRY____ORCLMVCOUNTRY____SNFLなど)にリストされます。ただし、式エディタには、マルチソース・セッション変数名(MVCOUNTRYなど)が表示されます。

「マルチソース・セッション変数について」を参照してください。

  1. ホーム・ページで、「ナビゲータ」「セマンティック・モデル」の順にクリックします。
  2. 「セマンティック・モデル」ページで、セマンティック・モデルをクリックして開きます。
  3. 最初の変数を作成します。
    1. 「変数」変数アイコンをクリックします。
    2. 「作成」作成アイコンをクリックし、「初期化ブロックの作成」をクリックします。
    3. 「初期化ブロックの作成」で、「名前」フィールドに移動し、mvcountry_orcl_initと入力します。
    4. 「タイプ」フィールドに移動し、「セッション」を選択します。「OK」をクリックします。
    5. 「変数」タブが表示されていることを確認し、「問合せの返し」フィールドに移動して「変数名と値」を選択します。
    6. 「SELECT文: DEFAULT」フィールドに移動し、変数名(MVCOUNTRY)とソース(ORCL)の間に4つのアンダースコアを使用して、次の初期化問合せを入力します:
      select distinct 'MVCOUNTRY____ORCL', country from oracle_table
    7. 「接続プール」に移動し、「選択」をクリックして、接続プールを参照して選択します。
    8. 「変数の追加」変数の追加アイコンをクリックし、「MVCOUNTRY____ORCL」という名前を入力します。変数名とソース名の間に4つのアンダースコアを追加する必要があります。
    9. 「保存」をクリックします。
  4. 2番目の変数を作成します。
    1. 「変数」をクリックします。
    2. 「作成」をクリックし、「初期化ブロックの作成」をクリックします。
    3. 「初期化ブロックの作成」で、「名前」フィールドに移動し、mvcountry_snfl_initと入力します。
    4. 「タイプ」フィールドに移動し、「セッション」を選択します。「追加」をクリックします。
    5. 「変数」タブが表示されていることを確認し、「問合せの返し」フィールドに移動して「変数名と値」を選択します。
    6. 「SELECT文: DEFAULT」フィールドに移動し、変数名(MVCOUNTRY)とソース(SNFL)の間に4つのアンダースコアを使用して、次の初期化問合せを入力します:
      select distinct 'MVCOUNTRY____SNFL', country from snowflake_table
    7. 「接続プール」に移動し、「選択」をクリックして、接続プールを参照して選択します。
    8. 「変数の追加」をクリックし、MVCOUNTRY____SNFLという名前を入力します。変数名とソース名の間に4つのアンダースコアを追加する必要があります。
    9. 「保存」をクリックします。

式でのマルチソース・セッション変数の使用

MVCOUNTRYマルチソース・セッション変数を作成した後、式で使用できます。

この例で使用されているMVCOUNTRYセッション変数の詳細は、「マルチソース・セッション変数の作成」を参照してください。

式でマルチソース・セッション変数を使用する方法の例を次に示します:

select lastName, firstName, country from employee 
where country=VALUEOF(NQ_SESSION.MVCOUNTRY)

データ・フィルタでのマルチソース・セッション変数の使用

MVCOUNTRYマルチソース・セッション変数を作成した後、データ・フィルタで使用できます。

MVCOUNTRYマルチソース・セッション変数が式エディタの「変数」タブに表示されます。この例で使用されているMVCOUNTRYセッション変数の詳細は、「マルチソース・セッション変数の作成」を参照してください。

  1. ホーム・ページで、「ナビゲータ」「セマンティック・モデル」の順にクリックします。
  2. 「セマンティック・モデル」ページで、セマンティック・モデルをクリックして開きます。
  3. 論理表またはプレゼンテーション表を参照して開きます。
  4. 「データ・フィルタ」タブをクリックします。
  5. 「追加」フィールドに移動し、データ・フィルタを設定するアプリケーション・ロールを入力し、「ロール名による検索」をクリックして、リストからアプリケーション・ロールを選択します。
  6. 「ロール名」リストで、追加したロールをクリックして強調表示し、「式エディタを開く」をクリックします。
  7. 次の式を入力します:
    Country=VALUEOF(NQ_SESSION.MVCOUNTRY)
  8. オプション: 「検証」をクリックします。
  9. 「保存」をクリックして、式を保存します。
  10. 「保存」をクリックして、セマンティック・モデルを保存します。