プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Editionメタデータ・リポジトリ作成者ガイド
12c (12.2.1.3.0)
E90110-03
目次へ移動
目次

前
次

19 Oracle BI Repositoryでの変数の使用

この章では、Oracle BIリポジトリの変数で変数を使用するリポジトリを使用して管理タスクを効率化したり、変化するデータ環境にあわせてメタデータの内容を動的に変更する方法について説明します。変数のクラスは、リポジトリ変数とセッション変数の2種類があります。

初期化ブロックは、動的リポジトリ変数、システム・セッション変数、およびシステム以外のセッション変数を初期化するために使用されます。

管理ツールで変数マネージャを使用して変数を定義できます。「変数マネージャ」ダイアログには2つのペインがあります。左ペインには変数および初期化ブロックが表示され、右ペインには左ペインで選択した項目の詳細が表示されます。リポジトリ変数、システム・セッション変数、およびシステム以外のセッション変数は疑問符アイコンで表されます。初期化ブロックのアイコンは、疑問符と時計のラベル付のキューブです。

注意:

変数にはオブジェクト権限が適用されないため、リポジトリ変数およびセッション変数の値は保護されていません。変数の名前を知っている人、または名前を推測できる人であれば誰でも、アンサーの式または論理SQL問合せの中でその変数を使用することができます。そのため、パスワードなどの機密データは、セッション変数またはリポジトリ変数の中に格納しないでください。

この章のトピックは、次のとおりです:

リポジトリ変数の操作

これらのトピックでは、リポジトリ変数およびリポジトリ変数の作成方法について学習します。

この項では、リポジトリ変数の操作について説明します。内容は次のとおりです。

リポジトリ変数について

リポジトリ変数は、任意の時点で1つの値を持ちます。

管理ツールの式ビルダーでは、リテラルや定数のかわりにリポジトリ変数を使用します。Oracle BIサーバーは、リポジトリ変数の値をメタデータの変数と置き換えます。

この項では、次の項目について説明します。

静的リポジトリ関数について

静的リポジトリ変数の値は、「変数」ダイアログで初期化されます。

静的リポジトリ変数の値は、管理者が変更することを決定するまで存続して、変わりません。たとえば、時間帯を様々な日セグメントにグループ化する式を作成するとします。それらのセグメントの1つPrime Timeが午後5時 - 午後10時に相当する場合、次のようにCASE文を作成できます。

CASE WHEN "Hour" >= 17 AND "Hour" < 23 THEN 'Prime Time' WHEN... ELSE...END

Hourは論理列であり、日付と時刻関数Hour(<<timeExpr>>)を使用してタイムスタンプ物理列にマップされています。

17と23という数字を定数としてこの式に入力するかわりに、prime_beginという名前の静的リポジトリ変数を使用して、それを17の値に初期化してから、prime_endという名前の変数を作成して、それを23の値に初期化します。

静的リポジトリ変数は、数値または文字値のいずれかのデフォルト・イニシャライザが必要です。式ビルダーを使用して、Date、Time、TimeStampなどのデフォルト・イニシャライザとして定数を挿入できます。静的リポジトリ変数のデフォルト・イニシャライザとして他の値または式を使用することはできません。

以前のリリースの管理ツールでは、静的リポジトリ変数のデフォルト・イニシャライザの値に制限はありませんでした。そのため、リポジトリが以前のリリースからアップグレードされている場合、整合性チェッカで次のような警告が表示される場合があります。

The variable, 'Current Month' does not have a constant default initializer.

このような警告が表示される場合、デフォルト・イニシャライザが定数値を持つように関連する静的リポジトリ変数を更新します。

動的リポジトリ変数について

動的リポジトリ変数は静的変数と同様に初期化しますが、その値は問合せから返されたデータでリフレッシュされます。

動的リポジトリ変数を定義する場合、初期化ブロックを作成するかSQL問合せを含む既存の初期化ブロックを使用します。また、Oracle BIサーバーが問合せを実行して変数の値を定期的にリフレッシュするために使用するように、スケジュールを設定します。動的リポジトリ変数の値が変更されると、その変数の値を参照するビジネス・モデルに関連付けられたすべてのキャッシュ・エントリは自動的にパージされます。

それぞれの問合せで複数の変数をリフレッシュできます(問合せの列ごとに1つの変数)。Oracle BIサーバーで、問合せを実行するスケジュールを作成します。

動的リポジトリ変数は、論理表ソースのコンテンツを定義する際に有用です。たとえば、もし受注に関する情報のソースが2つあり、一方のソースには最近の受注が含まれ、もう一方のソースには履歴データが含まれる場合、最近の受注を使用してリポジトリを更新し、履歴受注データを別のビューに移動する必要があります。

ソースのコンテンツを「論理表ソース」に記述します。動的リポジトリ変数を使用しない場合、次のような式で最近のデータを含むソースの内容を記述します。

Orders.OrderDates."Order Date" >= TIMESTAMP '2001-06-02 00:00:00'

この内容の記述は、新しいデータが最近のソースに追加され、古いデータが履歴ソースに移動すると無効になります。最近のソースの新しい内容を正確に反映するには、その内容の部分の記述を手動で変更する必要があります。自動的にコンテンツを修正するように、動的リポジトリ値を設定できます。

もう1つのお薦めの動的リポジトリ変数の使用方法は、論理表ソースのWHERE句フィルタで使用することです。

これらの変数は、一般的にはフィルタを設定してOracle BIサーバーで使用します。たとえば、動的リポジトリ変数CurrentMonthの値で列をフィルタするには、フィルタを変数CurrentMonthに設定します。

リポジトリ変数の作成

次のステップを使用して、リポジトリ変数を作成します。

すべての変数に一意の名前を使用します。システム・セッション変数の名前は予約されています。システム・セッション変数の名前を他の変数の型で使用することはできません。

動的リポジトリ変数を作成して階層列の選択ステップをオーバーライドする場合、初期化文字列がJSON構文で記述された初期化ブロックを選択する必要があります。「選択ステップをオーバーライドする変数で使用される初期化文字列」を参照してください。新しい初期化ブロックを作成するには、「新規」をクリックします。「初期化ブロックの作成」を参照してください。

静的リポジトリ変数は、「デフォルトのイニシャライザ」フィールドで定義されたデフォルト値を持つ必要があります。静的リポジトリ変数は、値が変更されない定数です。文字列を使用して変数を初期化する場合、文字列を一重引用符( ' )で囲みます。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択します。
  2. 変数マネージャの「アクション」から、「新規」「リポジトリ」「変数」の順に選択します。
  3. 「リポジトリ変数」ダイアログで、「名前」に変数の名前を入力します。
  4. 「タイプ」から、次のいずれかを選択します。
    • 静的
    • 動的
  5. 動的」を選択した場合、「初期化ブロック」リストから既存の初期化ブロックを選択して、継続的に値をリフレッシュします。
  6. 「デフォルトのイニシャライザ」でリポジトリ変数の値を入力するか、「式ビルダー」ボタンをクリックして変数値として使用する式を定義します。
  7. 「OK」をクリックします。

式ビルダーでのリポジトリ変数の使用

リポジトリ変数を作成すると、式ビルダーで変数を使用できるようになります。

変数は、関数VALUEOF()の引数として使用する必要があります。変数をダブルクリックしてそれを式に貼り付けると、自動的にそのように処理されます。

変数を使用して、列やその他のリポジトリ・オブジェクトを表すことはできません。

たとえば、次のCASE文は前の例で説明したものと同じことをしています。ただし、変数は定数に置き換えられています。

CASE WHEN "Hour" >= VALUEOF("prime_begin")AND "Hour" < VALUEOF("prime_end") THEN 'Prime Time' WHEN ... ELSE...END
  • 式ビルダーで左ペインの「リポジトリ変数」フォルダをクリックすると、中央ペインにすべてのリポジトリ変数(静的変数と動的変数の両方)の名前が表示されます。
  • 式でリポジトリ変数を使用するには、それを選択してダブルクリックします。式ビルダーはそれをアクティブなカーソル挿入ポイントの式に貼り付けます。

セッション変数の操作

セッション変数とその作成方法について説明します。

この項では、セッション変数の操作について説明します。内容は次のとおりです。

セッション変数について

セッション変数は、初期化ブロックから値を取得します。

ただし、動的リポジトリ変数と異なり、セッション変数の初期化はスケジュールされません。ユーザーがセッションを開始すると、Oracle BIサーバーではセッション変数の新しいインスタンスを作成し、それを初期化します。

リポジトリ変数と異なり、セッション変数のインスタンスはOracle BIサーバー上のアクティブなセッションと同じ数だけあります。セッション変数の各インスタンスは、異なる値で初期化できます。

セッション変数は、主に、データベース表やLDAPサーバーなどの外部ソースに対してユーザーを認証する際に使用されます。ユーザーの認証が成功すると、セッション変数を使用してそのセッションのフィルタおよび権限を設定できます。セッション変数を使用してセキュリティを設定する場合は、『Oracle Business Intelligence Enterprise Editionセキュリティ・ガイド』の「セッション変数の管理」を参照してください。

この項では、次の項目について説明します。

システム・セッション変数について

システム・セッション変数は、Oracle BIサーバーおよびOracle BIプレゼンテーション・サービスによって特定の目的に使用されます。

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

Oracle BIプレゼンテーション・サービスでこれらの変数を使用する場合、名前の前にNQ_SESSIONを付けます。たとえば、列を変数LOGLEVELの値でフィルタするには、フィルタを変数NQ_SESSION.LOGLEVELに設定します。

この表は、使用可能なシステム・セッション変数を示しています。

変数 説明

USER

ユーザーが入力した値を保持します。USER値は常にPROXY変数と一致します。つまり、役割を果す値です。ユーザーが他のユーザーの役割を果たすためにログインした場合、USERセッション変数の値は、ユーザーが役割を果たしているUSERIDと一致します。

USERGUID

ユーザーの一意のグローバル識別子(GUID)が格納され、ユーザーのLDAPプロファイルまたは他のプロファイルから移入されます。

GROUP

ユーザーが属するグループが格納されます。グループは以前のリリースとの互換性のためにのみ存在します。レガシー・グループは、自動的にアプリケーション・ロールにマップされます。

ユーザーが複数のグループに属している場合、グループ名をセミコロンで区切って同じ列に含めます(例: GroupA;GroupB;GroupC)。セミコロンをグループ名の一部として使用する必要がある場合は、セミコロンの前に円記号(\)を付けてください。

ROLES

ユーザーが属するアプリケーション・ロールが格納されます。

ユーザーが複数のロールに属している場合、ロール名をセミコロンで区切って同じ列に含めます(例: RoleA;RoleB;RoleC)。セミコロンをロール名の一部として含める必要がある場合は、セミコロンの前に円記号(\)を付けてください。

ROLEGUIDS

ユーザーが属するアプリケーション・ロールの一意のグローバル識別子(GUID)が格納されます。アプリケーション・ロールのGUIDは、アプリケーション・ロール名と同じです。

PERMISSIONS

oracle.bi.server.manageRepositoriesなど、ユーザーが保持する権限が格納されます。

PROXY

他のユーザーとしてふるまうことが認可されているプロキシ・ユーザーの名前が保持されます。

PROXYシステム・セッション変数の詳細は、Oracle Business Intelligence Enterprise Editionセキュリティ・ガイドを参照してください。

DISPLAYNAME

Oracle BIサーバーで使用されます。これは、Oracle BIプレゼンテーション・サービス・ユーザー・インタフェースの挨拶でユーザーに表示される名前が格納されます。また、カタログ・オブジェクトの作成者フィールドも保存されます。LDAPプロファイルまたは他のユーザー・プロファイルから移入されたDISPLAYNAME変数。

LOGLEVEL

LOGLEVEL値は0から5までの数値です。LOGLEVELには、Oracle BIサーバーがユーザーの問合せに使用するログ・レベルを指定します。

LOGLEVELは、管理ツールのユーザー・オブジェクトに定義されている変数を上書きします。管理ユーザー(インストール時に定義)のログ・レベルが4に定義され、リポジトリで定義されているセッション変数LOGLEVELの値が0の場合、0の値が適用されます。

DESCRIPTION

ユーザーの説明が格納され、LDAPプロファイルまたは他のユーザー・プロファイルから移入されます。

USERLOCALE

ユーザーのロケールが格納され、LDAPプロファイルまたは他のユーザー・プロファイルから移入されます。

DISABLE_CACHE_HIT

Oracle BIサーバー結果キャッシュ・ヒットの有効化または無効化に使用されます。この変数の有効値は0または1です。

DISABLE_CACHE_SEED

Oracle BIサーバー結果キャッシュ・シードの有効化または無効化に使用されます。この変数の有効値は0または1です。

DISABLE_SUBREQUEST_CACHE

Oracle BIサーバー・サブリクエスト・キャッシュ・ヒットおよびシードの有効化または無効化に使用されます。この変数の有効値は0または1です。

SELECT_PHYSICAL

問合せをSELECT_PHYSICAL問合せとして識別します。

DISABLE_PLAN_CACHE_HIT

Oracle BIサーバー計画キャッシュ・ヒットの有効化または無効化に使用されます。この変数の有効値は0または1です。

DISABLE_PLAN_CACHE_SEED

Oracle BIサーバー計画キャッシュ・シードの有効化または無効化に使用されます。この変数の有効値は0または1です。

TIMEZONE

ユーザーのタイム・ゾーンが格納され、LDAPプロファイルまたは他のユーザー・プロファイルから移入されます。

WEBLANGUAGE

Oracle BIプレゼンテーション・サービスで使用されます。Oracle BIプレゼンテーション・サービス・ユーザー・インタフェース表示言語を保持します。ユーザーは、Oracle BI EEのサインイン・ページで言語を選択できます。または、サインインした後に、「マイ・アカウント」ダイアログの「プリファレンス」タブで言語設定を変更できます。

AUTHINITBLOCKONLY

認証に必要な初期化ブロックが実行されるかどうかを判別します。この変数の値は「はい」です。この値には大/小文字区別はありません。

PORTALPATH

Oracle BIサーバーで使用されます。これは、ユーザーがログインしたときに表示されるデフォルトのダッシュボードを特定します(ユーザーはOracle BI EEにサインインした後、このプリファレンスを上書きできます)。

REQUESTKEY

Oracle BIプレゼンテーション・サービスで使用されます。同じリクエスト・キー(ブランク以外)を持つユーザーは、同じOracle BIプレゼンテーション・サービス・キャッシュ・エントリを共有します。これによってOracle BIプレゼンテーション・サービスは、これらのユーザーがOracle BIプレゼンテーション・サービスで同一のコンテンツ・フィルタおよびセキュリティを持つことを認識します。Oracle BIプレゼンテーション・サービス・キャッシュ・エントリを共有すると、Oracle BIプレゼンテーション・サービスとの間に発生する不要な通信を最小化できます。

SKIN

Oracle BIプレゼンテーション・サービス・ユーザー・インタフェースのルック・アンド・フィールの特定の要素を決定します。ユーザーは、Oracle BIプレゼンテーション・サービスにログオンしたときにスタイルを選択して、ユーザー・インタフェースの一部の要素を変更できます。SKIN変数で、変更不能の要素(例: GIFファイルなどの図)が格納されるOracle BIプレゼンテーション・サービス・フォルダを指定します。このようなディレクトリ名は、「sk_」で始まります。たとえば、sk_companyxというフォルダの場合、SKIN変数にはcompanyxと設定します。

システム以外のセッション変数について

システム以外のセッション変数は、一般的にはユーザー・フィルタの設定に使用されます。

たとえば、SalesRegionというシステム以外の変数を、ユーザーの販売地域の名前に初期化するように定義できます。

グループのすべてのメンバーにその地域に関連するデータの参照のみを許可するようにセキュリティ・フィルタを設定できます。

Oracle BIサーバーでこれらの変数を使用する場合、名前の前にNQ_SESSIONを付けます。たとえば、列を変数SalesRegionの値でフィルタするには、フィルタを変数NQ_SESSION.SalesRegionに設定します。

セッション変数の作成

次のステップを使用して、セッション変数を作成します。

すべての変数に一意の名前を作成します。システム・セッション変数の名前は予約されています。システム・セッション変数の名前を他の変数の型で使用することはできません。

「ユーザーによる値の設定を有効にします」オプションを使用すると、管理者以外のユーザーがサンプル用に変数を設定できるようになります。

NQSSetSessionValues()ストアド・プロシージャは、「Oracle BIプレゼンテーション・サービス管理」の「SQLの発行」ページから使用することはできません。変数の値を設定するには、「ユーザーによる値の設定を有効にします」オプションを選択する必要があります。

「セキュリティ・センシティブ」が選択されている場合、Oracle BIサーバーは論理リクエスト・プロジェクトション・リストで参照されるそれぞれの列または表の親データベース・オブジェクトを参照します。データベース・オブジェクトの「仮想プライベート・データベース」オプションが選択されていると、Oracle BIサーバーはセキュリティ・センシティブ変数のリストと見込みのキャッシュ・ヒットをマッチングします。キャッシュ・ヒットは、すべてのセキュリティ・センシティブ変数が含まれて一致しているキャッシュ・エントリでのみ発生します。

セッション変数を作成して階層列の選択ステップをオーバーライドする場合、初期化文字列がJSON構文で書かれている初期化ブロックを選択する必要があります。「選択ステップをオーバーライドする変数で使用される初期化文字列」および「初期化ブロックの作成」参照してください。

式の設定を参照してください。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択します。
  2. 「変数マネージャ」ダイアログで、「アクション」メニューから「新規」「セッション」を選択し、次に「変数」を選択します。
  3. 「セッション変数」ダイアログで、「名前」に変数名を入力します。
  4. (オプション)「ユーザーによる値の設定を有効にします」を選択すると、ODBCストアド・プロシージャNQSSetSessionValue()をコールすることで(ユーザー・ログイン時に)初期化ブロックに値が移入された後にセッション変数が設定されます。
  5. (オプション)「セキュリティ・センシティブ」を選択すると、仮想プライベート・データベース(VPD)などの行レベル・データベース・セキュリティ戦略を使用する際に、その変数をセキュリティ・センシティブと識別できます。
  6. 「初期化ブロック」リストから、継続的に値のリフレッシュに使用する初期化ブロックを選択するか、「新規」をクリックして新しい初期化ブロックを作成します。
  7. 「デフォルトのイニシャライザ」で値を入力するか、「式ビルダー」ボタンをクリックして式ビルダーを使用します。
  8. 「OK」をクリックします。

初期化ブロックの操作

初期化ブロックは、動的リポジトリ変数、システム・セッション変数、およびシステム以外のセッション変数を初期化するために使用されます。

たとえば、NQ_SYSTEM初期化ブロックはシステム・セッション変数をリフレッシュするために使用されます。

この項では、次の項目について説明します。

変数を含む初期化ブロックの使用について

初期化ブロックには、そのブロックに関連付けられた変数を初期化またはリフレッシュするために実行されるSQL文が含まれます。

このSQL文は、「初期化ブロック」ダイアログの「接続プール」フィールドで指定された接続プールを使用してアクセスできる物理表を参照する必要があります。

初期化ブロックの問合せにデータベース固有のSQLを含める必要がある場合、その問合せのデータベース・タイプを選択できます。初期化ブロックをインスタンス化したときにそのデータベース・タイプのSQL初期化文字列が定義されていた場合は、その文字列が使用され、定義されていなかった場合は、デフォルトの初期化SQL文字列が使用されます。

注意:

デフォルトでは、「初期化ブロック」ダイアログをオンライン・モードで編集用に開くと、初期化ブロック・オブジェクトは自動的にチェックアウトされます。初期化ブロックがチェックアウトされている間、設定されているリフレッシュ間隔に応じて、Oracle BIサーバーはこの初期化ブロックによって更新される動的変数の値をリフレッシュし続けることができます。初期化ブロックをチェックインすると、動的変数の値はデフォルトのイニシャライザで示された値にリセットされます。値をリセットしない場合は、「チェックアウトを元に戻す」オプションを使用します。

この項では、次の項目について説明します。

動的リポジトリ変数の初期化

動的リポジトリ変数の値は、「初期化ブロック」ダイアログの「デフォルトの初期化文字列」フィールドで定義された問合せによって設定されます。

Oracle BIサーバーが問合せを実行して変数の値を定期的にリフレッシュするようにスケジュールを設定できます。Oracle BIサーバーを停止して再起動すると、サーバーは自動的にリポジトリ変数初期化ブロックのSQL文を実行して、リポジトリ変数を再度初期化します。

管理者アカウントのログ・レベルがインストール時に2以上に設定されていると、Oracle BIサーバーはリポジトリ変数情報を取得するために発行されたすべてのSQL問合せをobis1_query.logに記録します。このログは、DOMAIN_Home/servers/obis1/logsにあります。管理者のログ・レベルを2に設定すると、最も有用な情報のレベルが提供されます。

Oracle BI EE 11gバージョンを使用している場合、問合せとエラーはnqquery.logに記録されます。

セッション変数の初期化

動的リポジトリ変数と同様に、セッション変数も初期化ブロックからその値を取得します。動的リポジトリ変数と異なり、セッション変数はスケジュールされた時間の間隔で更新されません。

そのかわり、ユーザーが新しいセッションを開始するたびに、Oracle BIサーバーはこれらの変数の新しいインスタンスを作成します。その値は、セッションの間変わりません。

セッション・ログイン時のセッション変数初期化ブロックの実行は、それに関連付けられたセッション変数が実際にセッション内でアクセスできるようになるまで遅できます。「初期化ブロックの作成」を参照してください。

Identity Managerのユーザー・オブジェクトでログ・レベルが2以上に設定されている場合、または変数マネージャでLOGLEVELシステム・セッション変数が2以上に設定されている場合、Oracle BIサーバーはセッション変数情報を取得するために発行されたすべてのSQL問合せをログに記録します。

Oracle BI EE 12cでは、問合せとエラーがDOMAIN_Home/servers/obis1/logs内のobis1_query.logに記録されます。

『Oracle Business Intelligence Enterprise Editionシステム管理者ガイド』の「問合せログの管理」を参照してください。

行単位の初期化について

行単位の初期化オプションを使用して、セッション変数を動的に作成し、セッションの開始時にそれらの値を設定することができます。

セッション変数の名前および値は、接続プールを介してアクセスする外部データベースに格納されます。変数は、「初期化ブロック」ダイアログで入力した初期化文字列からその値を受け取ります。

たとえば、RW_SESSION_VARSという名前の表に含まれる値を使用してセッション変数を作成するとします。この表には次の3つの列が含まれます。

  • USERID: ユーザーの一意のIDを表す値が含まれます。

  • NAME: セッション変数名を表す値が含まれます。

  • VALUE: セッション変数の値を表す値が含まれます。

次の表に例を示します。

USERID NAME VALUE

JOHN

LEVEL

4

JOHN

STATUS

FULL-TIME

JANE

LEVEL

8

JANE

STATUS

FULL-TIME

JANE

GRADE

AAA

行単位の初期化を使用するには、初期化ブロックを作成して「行単位の初期化」オプションを選択します(「初期化ブロックの作成」を参照)。この例では、初期化文字列に次のSQL文を指定します。

SELECT NAME, VALUE
FROM RW_SESSION_VARS
WHERE USERID='VALUEOF(NQ_SESSION.USERID)'

NQ_SESSION.USERIDは、別の初期化ブロックを使用してすでに初期化されています。

次のセッション変数が作成されます。

  • JohnがOracle BIサーバーに接続すると、そのセッションには行単位の初期化からの2つのセッション変数が含まれます(LEVEL: 値は4STATUS: 値はFULL_TIME)。

  • JaneがOracle BIサーバーに接続すると、そのセッションには行単位の初期化からの3つのセッション変数が含まれます(LEVEL: 値は8STATUS: 値はFULL-TIMEGRADE: 値はAAA)。

値リストを含む変数の初期化

行単位の初期化オプションを使用して、値リストを含む変数を初期化できます。SQLのIN演算子を使用して、指定されたリストの値をテストできます。

この例では、初期化文字列に次のSQL文を入力します。

SELECT 'LIST_OF_USERS', USERID
FROM RW_SESSION_VARS
WHERE NAME='STATUS' AND VALUE='FULL-TIME'

このSQL文により、変数LIST_OF_USERSに、JOHNJANEの値を含むコロン区切りのリスト、たとえばJOHN:JANEが移入されます。次のWHERE句に示すように、フィルタでこの変数を使用できます。

WHERE TABLE.USER_NAME = valueof(NQ_SESSION.LIST_OF_USERS)

変数LIST_OF_USERSには、値リスト(1つ以上の値)が含まれます。論理WHERE句は、次の文のような物理IN句に展開されます。

WHERE TABLE.USER_NAME IN ('JOHN', 'JANE')

注意:

前述の説明および例は、論理SQLに固有の内容です。値のリストと変数を物理SQLを使用して初期化する場合、VALUELISTOF関数を使用する必要があります。たとえば、変数LIST_OF_USERS内のユーザー名に割り当てられた顧客を取得するためには、次の文を使用します。

Select 'LIST_OF_CUSTOMERS', Customer_Name from RW_CUSTOMERS where RW.CUSTOMERS.USER_NAME in (VALUELISTOF(NQ_SESSION.LIST_OF_USERS))

リスト内の特定の値でフィルタするには、次の例に似たValueNameofを使用します。最初の値は「1」ではなく「0」です。

Select 'LIST_OF_CUSTOMERS', Customer_Name from RW_CUSTOMERS where RW.CUSTOMERS.USER_NAME in '(ValueNameOf(0,NQ_SESSION.LIST_OF_USERS))

初期化ブロックの作成

これらのトピックでは、初期化ブロックについて学習します。

「変数を含む初期化ブロックの使用について」を参照してください。

初期化ブロックを作成するには、次の項のステップを実行します。

セッション変数初期化ブロックの作成

次のステップを使用して、セッション変数初期化ブロックを作成します。

「データベース」をデータ・ソースのタイプとして使用する場合、デフォルト初期化文字列、データベース固有のSQL文、またはOracle BIサーバー、および有効な接続プールを使用できます。変更を保存する前に、接続をテストできます。

「LDAPサーバー」をデータ・ソースのタイプとして使用する場合、既存のLDAPサーバーを選択するか、ホスト名、ポート番号、パスワードおよび他のLDAP固有な構成情報を使用して新規サーバーを定義します。

カスタム・オーセンティケータをデータ・ソースのタイプとして使用する場合、既存のカスタム・オーセンティケータを選択するか、新規のオーセンティケータを選択して、必要な構成プロパティを入力します。

  1. Oracle BI管理ツールで、「管理」メニューをクリックし、次に「変数」を選択します。
  2. 「変数マネージャ」で、「アクション」メニューから「セッション」を選択し、次に「初期化ブロック」を選択します。
  3. 「セッション変数初期化ブロック」で、初期化ブロックの名前を入力します。
  4. (オプション) 初期化ブロックがいつ実行されるのかを指定し、「無効」を選択します。
  5. 「データ・ソースの編集」をクリックし、「データ・ソース・タイプ」を選択し、選択したデータ・ソースのタイプに固有の残りのフィールドに入力します。
  6. ターゲット変数の編集をクリックして、初期化ブロックとともに使用する変数を編集または定義します。
  7. 「実行優先度の編集」をクリックして、この初期化ブロックの前に実行する初期化ブロックを「追加」または「削除」します。
  8. (オプション) 「テスト」をクリックして、初期化ブロックが予想どおりに実行されることを確認します。
  9. 「OK」をクリックします。
(オプション)この手順の結果をここで入力します。

名前およびスケジュールの初期化ブロックへの割当て

リポジトリ変数では、開始日時の日、日付、および時刻、およびリフレッシュ間隔を指定できます。

セッション初期化ブロック・オプションは次のとおりです。

  • 無効。このオプションを選択すると、初期化ブロックは無効になります。

    変数マネージャで既存の初期化ブロックを右クリックして、「無効化」または「有効化」を選択することもできます。このオプションにより、初期化ブロック・ダイアログを開くことなく、このプロパティを変更できます。

  • 遅延実行の許可。このオプションを選択すると、初期化ブロックの実行は関連付けられたセッション変数にセッション中に初めてアクセスできるようになるまで遅延されます。

    このオプションを使用することで、セッション・ログオン・ステージ時にすべてのセッション変数初期化ブロックが実行されることはなくなり、ログオン時間が短くなります。セッション中に不要なセッション変数は、初期化ブロックが実行されません。そのため、これらの不要な初期化ブロックの実行に使用されるリソースが節約されます。

    初期化ブロックの遅延実行は、すべての未実行の先行初期化ブロックの実行もトリガーします。関連付けられているすべての初期化ブロックの変数およびその未実行の先行部分は、遅延実行から返された値で更新されます。

    注意:

    「遅延実行の許可」オプションは使用できない場合があります。「セッション変数初期化ブロックの実行を遅延できないケース」を参照してください。

  • 認証のために必要。このオプションを選択すると、この初期化ブロックはユーザーのログインに成功する必要があります。つまり、初期化ブロックの実行に失敗すると、ユーザーはOracle Business Intelligenceへのアクセスが拒否されます。初期化ブロックで不正な資格証明が拒否された場合、またはデフォルトの初期化文字列にエラーがある場合は、実行が失敗する可能性があります。

    単一のユーザー・セッション変数が初期化ブロックに関連付けられている場合、初期化ブロック成功要件は偽装を使用する内部プロセス(デリバーなど)には適用されません。その場合、信頼できる内部プロセスが、初期化ブロックの成否にかかわらず、接続できます。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択して、初期化ブロックに名前とスケジュールを割り当てます。
  2. 「変数マネージャ」で、「セッション」または「リポジトリ」を展開して、「初期化ブロック」を選択します。
  3. 「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、ブロックの名前を入力します。NQ_SYSTEM初期化ブロック名は予約されています。
  4. (リポジトリ初期化ブロックのみ)「スケジュール」エリアで、開始日付および時刻とリフレッシュ間隔を選択します。
  5. (セッション初期化ブロックのみ)オプションを選択します。

次のステップは、データソースおよび接続プールを選択することです。

データソースおよび接続プールの選択およびテスト

初期化ブロックのデータソース・タイプとして「データベース」を選択する場合、データベースから返されるSQL文の列の値は、初期化ブロックに関連付けられた変数に割り当てられます。

セッション変数初期化ブロックでは、「LDAPサーバー」や「カスタム認証システム」も選択できます。

データベース」をデータソース・タイプとして選択する初期化ブロックの専用接続プールを作成することをお薦めします。さらに、Oracle BIサーバーの起動中に、初期化ブロックが特定の接続プールに対して失敗した場合、その接続プールを使用する初期化ブロックはそれ以上処理されません。そのかわり、接続プールはブラックリストに記載され、その接続プールの後続の初期化ブロックはスキップされます。

次を参照してください。

  • データ・ソース・タイプとして「データベース」を選択し、「OBI EEサーバーの使用」オプションを選択していない場合、変数のリフレッシュに使用されるSQL文は、「接続プール」フィールドで指定された接続プールを介してアクセスできる物理表を参照する必要があります。メタデータの物理レイヤーに表を含める必要はありません。実行時に、データベース・タイプの初期化文字列が定義されている場合、その初期化文字列が使用されます。データベース・タイプの初期化文字列が定義されていない場合、データベース・タイプのデフォルトの初期化SQLが使用されます。デフォルトの文字列は上書きできます。

    SQLを作成してそれを直接データベースに送信する場合(たとえば、初期化ブロックでデータベース固有のSQLを使用する場合など)、SQL文はOracle BIサーバーを迂回します。SQL文の列の順序および初期化ブロックに関連付けられた変数の順序により、どの列が各変数に割り当てられるかが決定されます。

    [リポジトリ|セッション]変数初期化ブロック・データ・ソースダイアログの「テスト」ボタンを使用して、このSQLをテストする必要があります。SQL文にエラーがある場合、データベースはエラー・メッセージを返します。

  • データソース・タイプとして「データベース」を選択し、「OBI EEサーバーの使用」オプションを選択する場合、次のように処理されます。

    変数のリフレッシュに使用するSQL文は、特定のデータベース用に記述されている場合があります。ただし、そのSQL文はOracle BIサーバーで処理されるため、他のデータ・ソースでも機能します。Oracle BIサーバーはデータ・ソースで使用できない可能性がある関数(PIなど)を提供することもありますが、そのSQL文はOracle BIサーバーでサポートされる他のデータ・ソース(ADF、SQL Server、Oracle、XMLファイルなど)では機能します。「OBI EEサーバーの使用」オプションを選択すると、SQL文がOracle BIサーバーに送信され、元になるデータベースには直接送信されないため、接続プールは不要です。

    オンライン・モードの場合、[リポジトリ|セッション]変数初期化ブロック・データ・ソースダイアログの「テスト」ボタンを使用してのみ、このSQL文をテストできます。SQL文にエラーがある場合、データベースはエラー・メッセージを返します。

  1. Oracle BI管理ツールで、「管理」を選択してから、「変数」を選択します。

  2. 「変数マネージャ」で、編集する初期化ブロックを選択します。

  3. 接続プール」フィールドの横の「データ・ソースの編集」をクリックします。

  4. データ・ソース・タイプ」リストで、次のタイプのいずれかを選択します。

    • データベース: リポジトリ変数およびセッション変数用。

    • LDAPサーバー: セッション変数用。

    • カスタム認証システム: セッション変数用。

  5. データソース・タイプに「データベース」を選択している場合、次のいずれかのステップを実行します。

    • デフォルトの初期化文字列」または「データベース固有のSQLの使用」を選択して、次のステップを実行します。

      1. 接続プール」フィールドの横の「参照」をクリックして、ターゲット情報が存在するデータベースに関連付けられている接続プールを選択します。初期化文字列を入力する前に接続プールを選択していない場合、接続プールを選択するよう促すメッセージが表示されます。

      2. 「接続プールの選択」ダイアログで、接続プールを選択して「選択」をクリックします。初期化文字列を入力する前に接続プールを選択する必要があります。

        デフォルトでは、物理レイヤーのデータベース・オブジェクトの下の最初の接続プールは選択できません。これにより、問合せに使用する接続プールと同じ接続プールを初期化ブロックで使用できないようになります。

        「オプション」ダイアログの「初期化ブロックに最初の接続プールを許可」を選択することで、最初の接続プールを選択可能にするよう動作を変更できますが、これはお薦めしません。

      3. データベース固有のSQLの使用」を選択した場合、「データベース」ペインでデータベースを開いて選択します。そこで、それに関連付けられた文字列を入力します。

        それを選択しない場合、「デフォルトの初期化文字列」ボックスで変数の移入に必要なSQL初期化文字列を入力します。

        初期化ブロックを編集し、それを使用して階層列の選択ステップをオーバーライドする場合、「デフォルトの初期化文字列」ボックスに、JSON初期化文字列を入力します。

      4. (オプション)「テスト」をクリックして、SQL文のデータソース接続をテストします。

      5. OK」をクリックして、「初期化ブロック」ダイアログに戻ります。

    • OBI EEサーバーの使用」を選択して、次のステップを実行します。

      1. ボックスで、変数の移入に必要なSQL初期化文字列を入力します。

        ここで入力した文字列はOracle BIサーバーで処理されるため、Oracle BIサーバーでサポートされていれば、文字列は別のデータ・ソースでも機能します。

        たとえば、初期化ブロックは、SQL Serverに固有の関数pi()を使用する場合があります。ただし、「OBI EEサーバーの使用」を選択すると、問合せは、Oracle BIサーバーによって適切なデータベース用に書き換えられます。SQL Serverバックエンド・データベースをOracleに変更しても、問合せは機能します。

      2. OK」をクリックして、「初期化ブロック」ダイアログに戻ります。

  6. データソース・タイプに「LDAPサーバー」を選択している場合、次のステップを実行します。

    1. 参照」をクリックして既存のLDAPサーバーを選択するか、「新規」をクリックして「LDAPサーバー」ダイアログの「一般」タブを開きLDAPサーバーを作成します。

    2. OK」をクリックして、「初期化ブロック」ダイアログに戻ります。

      LDAPサーバー名とそれに関連付けられたドメイン識別子が「名前」および「ドメイン識別子」列に表示されます。

  7. データソース・タイプに「カスタム認証システム」を選択している場合、次のステップを実行します。

    1. 参照」をクリックして既存のカスタム認証システムを選択するか、「新規」を選択してそれを作成します。

    2. OK」をクリックして、「初期化ブロック」ダイアログに戻ります。

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

選択ステップをオーバーライドする変数で使用される初期化文字列

階層列を含む分析で、選択ステップはセッション変数またはリポジトリ変数でオーバーライドされます。

このセッション変数およびリポジトリ変数では、初期化文字列にSQL構文ではなく有効なJSON構文が含まれている必要があります。

JSONを使用して、タイプ、列およびメンバーを次の構文で定義します。

{
  "type": "Hierarchy",
  "column": {
    "subject_area":"your_subject_area",
    "hier_id":"your_hier_id",
    "dim_id":"your_dim_id",
    "table_name":"your_table_name"
  },
  "members": [
    {
      "level_id":"your_level_id",
      "values": [
        your_value,
        your_value
      ]
    },
    {
      "level_id":"your_level_id",
      "values": [
        your_value
      ]
    }
  ]
}

説明:

"type"は、階層タイプを表します。

"column"は、サブジェクト領域および表明などの階層列の情報を表します。

"dim_id"は、論理ディメンション名です。

"members"は、階層レベルおよびメンバーIDを表します。

"level_id"は、プレゼンテーション・レベル名です。

標準的な階層構文の例

{
  "type": "Hierarchy",
  "column": {
    "subject_area": "A - Sample Sales",
    "hier_id": "H2 Offices",
    "dim_id": "H3 Offices",
    "table_name": "Offices"
  },
  "members": [
    {
      "level_id": "Company",
      "values": [
        10001,
        10002
      ]
    },
    {
      "level_id": "Organization",
      "values": [
        1005
      ]
    }
  ]
}

親子階層構文の例

{
  "type":"Hierarchy",
  "column":{
    "subject_area":"A - Sample Sales",
    "hier_id":"Sales Rep Hierarchy",
    "dim_id":"H5 Sales Rep",
    "table_name":"Sales Person"
  },
  "members":[
    {
      "level_id":"Grand Total",
      "values":[
        27,
        24,
        18,
        16
      ]
    }
  ]
}
初期化文字列の例

これらの例は、文字列を初期化する方法を示しています。

サイトでデリバーを使用する場合のSQL文字列

SELECT username, groupname, dbname, schemaname FROM users
WHERE username=':USER' 
NQS_PASSWORD_CLAUSE(and pwd=':PASSWORD')NQS_PASSWORD_CLAUSE

このSQLには、WHERE句に2つの絞込み条件が含まれています。

':USER' (コロンと一重引用符を使用)は、ログイン時にユーザーが入力するIDです。

':PASSWORD' (コロンと一重引用符を使用)はユーザーが入力するパスワードです。これは、USERシステム・セッション変数が使用される場合、常にともに存在するはずのシステム変数です。PASSWORD変数を設定する必要はありません。この変数はデータベース接続プールで使用することで、ユーザーIDとそのユーザーのパスワードを使用するログインを通過させることができます。またこの変数はSQL文でも使用できます。

デリバーによる外部表認証を使用している場合、:PASSWORD制約を構成するSQL文の一部をNQS_PASSWORD_CLAUSE句の間に埋め込む必要があります。

ユーザーIDとパスワードが指定された表に存在する値と一致する場合にのみ、問合せはデータを返します。USERおよびPASSWORD変数に正しい値を代入し、NQS_PASSWORD_CLAUSE句を削除して、Oracle BIサーバーの外部でSQL文をテストする必要があります。

サイトでデリバーを使用しない場合のSQL文字列

SELECT username, groupname, dbname, schemaname FROM users
WHERE username=':USER' 
AND pwd=':PASSWORD'

このSQL文のWHERE句には、2つの制約が含まれます。

':USER' (コロンと一重引用符に注目してください)は、ログイン時にユーザーが入力するIDです。

':PASSWORD' (コロンと一重引用符を使用)はユーザーが入力するパスワードです。これは、USERシステム・セッション変数が使用される場合、常にともに存在するはずのシステム変数です。PASSWORD変数を設定する必要はありません。この変数はデータベース接続プールで使用することで、ユーザーIDとそのユーザーのパスワードを使用するログインを通過させることができます。またこの変数はSQL文でも使用できます。

ユーザーIDとパスワードが指定された表に存在する値と一致する場合にのみ、問合せはデータを返します。USERおよびPASSWORD変数に正しい値を代入して、Oracle BIサーバーの外部でSQL文をテストする必要があります。

複数のデータソースから表を結合するSQL文 - 'OBI EE Server'設定を使用する場合

select WUSER.name, wuser_detail.email 
from "db-11g/orcl"."NAME"."WUSER', 
"sqlexpress"."master"."dbo"."wuser_detail" 
where username=:USER:

前述の初期化ブロックの問合せの例では、異なるデータソース(SQL Server、Oracle、XML Filesなど)からの複数の表の結合問合せを使用しています。「OBI EEサーバーの使用」オプションを選択すると、問合せがOracle BI Serverによって指定されたデータソース用に書き換えられるため、この問合せは機能します。

初期化ブロックのテスト

「テスト」ボタンを使用して、またはOracle BI EEクライアント・ユーティリティなどのSQLツールを使用して、SQL文をテストする必要があります。

SQLツールを使用する場合、同じDSNまたは指定された接続プール内のDSNと同一に設定されたDSNを使用してください。

オンライン・モードでは、初期化ブロック・テストは:USER:PASSWORDをユーザー名とパスワードに使用するように設定された接続プールが機能しません。オフライン・モードでは、:USER:PASSWORDを移入できるように「変数の値の設定」ダイアログが表示されます。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択します。
  2. 「変数マネージャ」ダイアログで、初期化ブロックをダブルクリックします。
  3. 「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、「データ・ソースの編集」をクリックします。
  4. [リポジトリ|セッション]変数初期化ブロック・データソースダイアログで、「テスト」をクリックします。

    注意:

    「テスト」ボタンは、「OBI EEサーバーの使用」オプションがオフライン・モードで選択されている場合、無効になります。

  5. 「変数の値の設定」ダイアログで、情報が正しいか確認し、「OK」をクリックします。
  6. 表からのデータの表示ダイアログで、問合せの行数と開始行を入力して、「問合せ」をクリックします。

    「結果」ダイアログには、変数とその値がリストされます。

次のステップは、変数と初期化ブロックを関連付けることです。

初期化ブロックの変数の順序

SQL文の列の順序および初期化ブロックに関連付けられた変数の順序により、各変数に割り当てられる列値が決定されます。

変数を初期化ブロックに関連付けると、最初の列で返された値は、リストの最初の変数に割り当てられます。

オンライン・モードでリポジトリを開く場合、「初期化ブロック」ダイアログの「デフォルトの初期化文字列」フィールドに表示される値は、Oracle BIサーバーに認識されているその変数の現在の値です。関連付けられた変数の数は、取得される列の数とは異なる場合があります。列よりも変数のほうが数が少ない場合、余分な列値は無視されます。列よりも変数のほうが数が多い場合、余分な変数はリフレッシュされません。変数は、それぞれの元の値を保持します。正しいSQLであれば初期化ブロックを使用して実行できます。これには、データベースに書き込むSQLおよびデータベース構造を変更するSQLが含まれます(その接続プールに関連付けられたユーザーIDにこれらのアクションを実行する権限がある場合)。

Oracle BIサーバーを停止して再起動すると、サーバーは自動的にリポジトリ変数初期化ブロックのSQL文を実行し、リポジトリ変数を再度初期化します。

セッション変数初期化ブロックでは、「行単位の初期化」を選択できます。「行単位の初期化」 オプションを選択すると、「キャッシュの使用」オプションが自動的に選択されます。「キャッシュの使用」オプションが選択されることで、Oracle BIサーバーは問合せの結果をメイン・メモリー・キャッシュに保存することになります。「行単位の初期化について」を参照してください。

Oracle BIサーバーは、後続セッション用にキャッシュされた結果を使用します。これにより、セッションの起動時間を短縮できます。ただし、キャッシュされた結果には最新のセッション変数の値が含まれていない場合があります。各新規セッションでセッション変数の最新セットとそれぞれに対応する値が必要な場合、このオプションを選択解除する必要があります。

「変数を含む初期化ブロックの使用について」を参照してください。

変数と初期化ブロックとの関連付け

この手順を使用して、リポジトリまたはセッション変数を初期化ブロックに関連付けます。

カスタム認証システム」データソース・タイプの場合(セッション変数のみ)、変数USERが必要です。

行単位の初期化」を選択すると、「キャッシュの使用」オプションが使用可能になります。「行単位の初期化について」を参照してください

次を参照してください。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択して、変数を初期化ブロックに関連付けます。
  2. 「変数マネージャ」ダイアログで、初期化ブロックをダブルクリックして、リポジトリ初期化ブロックまたはセッション初期化ブロックを編集します。
  3. データ・ターゲットの編集」をクリックします。
  4. リポジトリ|セッション変数初期化ブロック変数ターゲット」ダイアログで、次のいずれかの手順を実行します。
    • 新規」をクリックし、「変数」ダイアログで新しい変数を作成して、初期化ブロックに関連付けます。
    • 「参照」ダイアログで「リンク」をクリックし、変数を選択してその変数を初期化ブロックに関連付けてから、「OK」をクリックします。
    • セッション変数初期化ブロックの場合にかぎり、「行単位の初期化」を選択します。
  5. 変数とこのブロックとの関連付けを削除するには、変数を選択して「削除」をクリックします。
  6. 「OK」をクリックします。

次のステップは実行優先度を確立することです。

実行優先度の確立

リポジトリに複数の初期化ブロックがある場合、ブロックを初期化する順序を設定できます(優先度の確立)。

まず、最後に実行するブロックを開き、その前に実行する初期化ブロックを追加します。たとえば、リポジトリにAとBという2つの初期化ブロックがあるとします。初期化ブロックBを開き、ブロックBの前にブロックAを実行することを指定します。そうすると、ブロックAは自身の単独での実行に加えて、ブロックBのスケジュールに応じても実行されるようになります。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択します。
  2. 「変数マネージャ」ダイアログで、最後に初期化する初期化ブロックをダブルクリックします。
  3. 「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、「実行優先度の編集」をクリックします。
  4. [リポジトリ|セッション]変数初期化ブロック実行プリファレンスダイアログで、「追加」をクリックします。

    選択されていない初期化ブロックがある場合にのみ「追加」を使用できます。

  5. 「参照」ダイアログで、開いたブロックの前に初期化する必要があるブロックを選択して、「OKをクリックします。
  6. ブロックを削除するには、[リポジトリ|セッション]変数初期化ブロック実行プリファレンスダイアログで削除するブロックを選択して、「削除」をクリックします。
  7. 「OK」をクリックします。
  8. 初期化ブロックを必須にするには、「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、「認証のために必要」オプションを選択します。
  9. 「OK」をクリックします。

注意:

初期化ブロックで「OBI EEサーバーの使用」オプションを選択すると、次のような状態になります。

  • 実行優先度は適用されません。これは、ユーザーのログイン中に、「OBI EEサーバーの使用」オプションが選択された初期化ブロックが「OBI EEサーバーの使用」オプションが選択されていない初期化ブロックの後に実行されるためです。

  • 認証のために必要」オプションはグレー表示されます。これは、このタイプの初期化ブロックは認証後に実行されるためです。

セッション変数初期化ブロックの実行を遅延できないケース

セッション変数初期化ブロックの実行は、場合によっては遅延できないことがあります。

セッション変数初期化ブロックの実行が遅延できない場合、その理由を説明するメッセージが表示されます。

「名前およびスケジュールの初期化ブロックへの割当て」を参照してください。

セッション変数初期化ブロックの実行を遅延できないシナリオは、次のとおりです。

  • セッション変数初期化ブロック変数ターゲット・ダイアログで「行単位の初期化」オプションが選択されていて、変数はデフォルト値を使用して明示的に宣言されていません。

    メッセージ例: 初期化ブロック'A_blk'は、行単位の初期化を使用しているため、その実行を遅延することはできません。

  • 「セッション変数初期化ブロック」ダイアログで「認証のために必要」オプションが選択されています。

    メッセージ例: 初期化ブロック'A_blk'は、認証に必要であるため、その実行を遅延することはできません。

  • データ・ソース・タイプ」が「データベース」ではありません。

    メッセージ例: 初期化ブロック'A_blk'には接続プールがないため、その実行を遅延することはできません。

  • PROXYまたはUSERという名前のセッション変数で初期化ブロックが使用されています。

    メッセージ例: 初期化ブロック'A_blk'は、セッション変数'PROXY'によって使用されているため、その実行を遅延することはできません。

  • 「セッション変数」ダイアログで「セキュリティ・センシティブ」オプションが選択されているセッション変数で初期化ブロックが使用されています。

    メッセージ例: 初期化ブロック'A_blk'はセキュリティ・センシティブなセッション変数'A'で使用されているため、その実行を遅延することはできません。

  • その初期化ブロックが、「遅延実行の許可」オプションが選択されていない別の初期化ブロックの先行ブロックです。

    メッセージ例: 初期化ブロック'A_blk'の後の初期化ブロックの1つにAllow deferred executionフラグが設定されていません。初期化ブロック'B_blk'にAllow deferred executionフラグが設定されていません。

初期化ブロックの有効化と無効化

Oracle BI管理ツールの変数マネージャを使用して、初期化ブロックを有効化および無効化できます。

  1. 管理ツールで、「管理」を選択してから、「変数」を選択します。
  2. 「変数マネージャ」で、「リポジトリ」または「セッション」の下の「初期化ブロック」を選択します。
  3. 右ペインで、有効化または無効化する初期化ブロックを右クリックします。
  4. 右クリック・メニューから「有効化」または「無効化」を選択します。
  5. 変数マネージャを閉じてリポジトリを保存します。

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

Oracle Business Intelligenceは、複数のデータ・ソースから移入されるセッション変数をサポートします。

このようなマルチソース・セッション変数は論理問合せまたはリポジトリのデータ・フィルタ内で使用でき、様々なデータ・ソースからの値の結合を含めることができます。

マルチソース・セッション変数が保持できる値の数に制限はありません。マルチソース・セッション変数を作成するには、まず、ソースごとに行単位の初期化ブロックを作成します。

ソースごとにセッション変数を明示的に定義します。セッション変数名には次の形式を使用します。

  • <ms_variable_name>____<source>

ちょうど4つのアンダースコア文字をセパレータとして使用する必要があります。

これによって、次の名前のマルチソース・セッション変数1つが自動的に作成されます。

  • <ms_variable_name>

コンポーネント・セッション変数名、<ms_variable_name>____<source>は、Oracle BI管理ツール「変数マネージャ」には個別に表示されますが、「式ビルダー」では1つのマルチソース・セッション変数名、<ms_variable_name>のみが表示されます。

注意:

この項では主としてマルチソース・セッション変数の定義と使用方法について説明していますが、論理問合せとデータ・フィルタでVALUEOFコンポーネント・セッションを選択することもできます。

行単位の初期化ブロックのいずれかがNULL結果を返した場合、それはOracle BIサーバーのログ、nqserver.logに記録されます。正常に値を返した他のコンポーネント初期化ブロックのマルチソース・セッション変数にも値を追加できます。マルチソース・セッション変数は、すべてのコンポーネント初期化ブロックがNULL値を返した場合のみ失敗します。

マルチソース・セッション変数についても、通常のセッション変数と同様に、実行優先度と遅延実行を設定できます。

マルチソース・セッション変数の作成と使用方法の説明例

次の例を使用して、マルチソース・セッション変数の作成方法を説明します。

次の例では、マルチソース・セッション変数の作成と使用方法を示しています。

  1. 管理ツールの「変数マネージャ」で、「アクション」「新規」「セッション」を選択し、次に「初期化ブロック」を選択します。

  2. デフォルトの初期化文字列に対して次のSQLを指定して、mvcountry_sebl_initという行単位の初期化ブロックを作成します。

    select distinct 'MVCOUNTRY____SEBL', country from siebel_table
    
  3. デフォルトの初期化文字列に対して次のSQLを指定して、mvcountry_orcl_initという行単位の初期化ブロックを作成します。

    select distinct 'MVCOUNTRY____ORCL', country from oracle_table
    
  4. まだ「変数マネージャ」で、「アクション」「新規」「セッション」「変数」を選択します。

  5. MVCOUNTRY____SEBLというセッション変数を、変数名とソース名の間に4つのアンダースコアが含まれていることを確認して、作成します。「初期化ブロック」に対してmvcountry_sebl_initを選択します。

  6. MVCOUNTRY____ORCLという2つ目のセッション変数を、変数名とソース名の間に4つのアンダースコアが含まれていることを確認して、作成します。「初期化ブロック」に対してmvcountry_orcl_initを選択します。

コンポーネント・セッション変数は「変数マネージャ」に表示されるのに対し、作成されたMVCOUNTRYマルチソース・セッション変数は「式ビルダー」に表示されます。

論理問合せでのマルチソース・セッション変数の使用方法

これで、MVCOUNTRYマルチソース・セッション変数を論理問合せで使用できるようになりました。

例:

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

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

MVCOUNTRYマルチソース・セッション変数をデータ・フィルタで使用するには、次のステップを実行します。

  1. 管理ツールで、「管理」を選択し、「アイデンティティ」を選択します。
  2. 「Identity Manager」ダイアログのツリー・ペインで、「BIリポジトリ」を選択します。
  3. 右のペインで「アプリケーション・ロール」タブを選択し、データ・フィルタを設定するアプリケーション・ロールをダブルクリックします。
  4. 「アプリケーション・ロール」ダイアログで「権限」をクリックします。
  5. 「ユーザー/アプリケーション・ロール権限」ダイアログで、「データ・フィルタ」タブをクリックします。
  6. 「データ・フィルタ」タブで、次のデータ・フィルタ式を作成します。

次の図で示すように、「式ビルダー」には、MVCOUNTRYマルチソース・セッション変数のみが表示され、このマルチソース・セッション変数の作成に使用した通常のセッション変数は表示されません。

リポジトリ変数のリスト・コマンド

接続プールのリスト・コマンドlistrpdvariableを使用して、特定のサービス・インスタンスに対してJSON形式でリポジトリ変数のリストを作成します。

複数の変数を更新する必要がある場合、listrpdvariableおよびupdaterpdvariablesユーティリティを使用します。

ランチャ・スクリプト(UNIXの場合はdatamodel.sh、Windowsの場合はdatamodel.cmd)を介して、ユーティリティを実行します。

ドメインがデフォルトのフォルダにインストールされている場合、ランチャ・スクリプトの場所は次のようになります。

Oracle_Home/user_projects/domains/Domain_Name/bitools/bin/datamodel.shまたはWindowsの場合はdatamodel.cmd

クライアント・インストールにドメイン名がない場合、ランチャ・スクリプトの場所は次のようになります。

Oracle_Home\bi\bitools\bin\datamodel.cmd

「コマンドを使用する前の必知事項」を参照してください。

構文

listrpdvariablesコマンドは、次のパラメータをとります。

listrpdvariables -SI <service_instance> -U <cred_username> [-P <cred_password>] [-S <hostname>] [-N <port_number>] [-V <comma or new line separated FILE containing selected variables names>] [-O <outputFile.json>] [-SSL] [-H]

説明

SIは、コンポーネント・インスタンスの名前を指定します。

Uは、Oracle BI EE認証に使用する有効なユーザー名を指定します。

Pは、Uに指定したユーザーの名前に対応するパスワードを指定します。パスワードを指定していないと、コマンドの実行時にパスワードの入力を求められます。自動化されたスクリプティングを使用してコマンドを実行する場合にのみ、コマンドにパスワードを含めることをお薦めします。

Sは、Oracle BI EEホスト名を指定します。クライアント・インストールからコマンドを実行している場合のみ、このオプションを含めます。

Nは、Oracle BI EEポート番号を指定します。クライアント・インストールからコマンドを実行している場合のみ、このオプションを含めます。

Vは、リストするリポジトリ変数名を指定するオプションの引数です。変数名はカンマで区切る必要があります。V引数を渡さない場合または変数名をリストせずにV引数を渡す場合、デフォルトですべてのリポジトリ変数が返されます。

Oは、.json接尾辞を使用した出力ファイル名を指定します。

SSLは、SSLを使用して Oracle WebLogic Serverに接続してコマンドを実行することを指定します。クライアント・インストールからコマンドを実行している場合のみ、このオプションを含めます。

Hは、使用方法の情報を表示し、コマンドを終了します。-Hを使用するか、パラメータを指定しないで.shを実行すると、ヘルプ・コメントが表示されます。

datamodel.sh listrpdvariables -SI ssi -U weblogic -P password -slc01.example.com -N 7777 -V selectedvar.csv -O listrpdvar.json

サンプルのリポジトリ変数のリストJSON出力

{    "Title":"List Rpd Variables",
    "Rpd-Variables":[
        {
            "uid":"80000000-3335-155c-991a-0af2537d0000",
            "variable":"RPD_ST_VARIABLE",
            "value":"'rpdStatic Variable'"
        },
        {
            "uid":"c0000000-33c0-155c-991a-0af2537d0000",
            "variable":"DYNAMIC_REPO_VAR",
            "value":"'dynamic repo var'"
        }
    ]
}

サンプルのJSON出力

注意:

一致が存在しない場合(つまり、V引数に含まれる変数名がリポジトリのリポジトリ変数と一致しなかった場合)、JSON出力は空の配列リストになります。

{
    "Title":"List Rpd Variables",
    "Rpd-Variables":[
    ]
}

リポジトリ変数の更新コマンド

updaterpdvariablesコマンドを使用して、JSON入力ファイルまたは特定のサーバー・インスタンスに対する変数情報を含む変更されたJSONファイルをアップロードします。

複数の変数を更新する必要がある場合、これとlistrpdvariableユーティリティを使用します。

新しいリポジトリ変数(名前および値)を含むJSON入力ファイルを作成およびアップロードできます。

変更されたリポジトリ変数(名前または値)を含む更新されたJSONファイルもアップロードできます。listrpdvariableコマンドを使用して、特定のサービス・インスタンスのリポジトリ変数のリストを含むJSONファイルを作成します。このファイルの変数情報を変更して、updaterpdvariablesコマンドを使用してサービス・インスタンスにアップロードします。

注意:

ファイルの変数に対してuid値を変更しないでください。「ユーザーおよびアプリケーション・ロール・コマンドの概要」を参照してください。

ランチャ・スクリプト(UNIXの場合はdatamodel.sh、Windowsの場合はdatamodel.cmd)を介して、ユーティリティを実行します。ドメインがデフォルトのフォルダにインストールされている場合、ランチャ・スクリプトの場所は次のようになります。

Oracle_Home/user_projects/domains/Domain_Name/bitools/bin/datamodel.shまたはWindowsの場合はdatamodel.cmd

クライアント・インストールにドメイン名がない場合、ランチャ・スクリプトの場所は次のようになります。

Oracle_Home\bi\bitools\bin\datamodel.cmd

「コマンドを使用する前の必知事項」を参照してください。

構文

updaterpdvariables -C <rpdVariablesList.json> -SI <service_instance> -U <cred_username> [-P <cred_password>] [-S <hostname>] [-N <port_number>] [-SSL] [-H]

説明

Cは、アップロードするJSONファイルの名前を指定します。このファイルでは変数に対して変更されたuid値を使用しないでください。次に示すJSON入力ファイルの作成の項およびJSON入力リポジトリ変数ファイルの例を参照してください。

SIは、コンポーネント・インスタンスの名前を指定します。

Uは、Oracle BI EE認証に使用する有効なユーザー名を指定します。

Pは、Uに指定したユーザーの名前に対応するパスワードを指定します。パスワードを指定していないと、コマンドの実行時にパスワードの入力を求められます。自動化されたスクリプティングを使用してコマンドを実行する場合にのみ、コマンドにパスワードを含めることをお薦めします。

Sは、Oracle BI EEホスト名を指定します。クライアント・インストールからコマンドを実行している場合のみ、このオプションを含めます。

Nは、Oracle BI EEポート番号を指定します。クライアント・インストールからコマンドを実行している場合のみ、このオプションを含めます。

SSLは、SSLを使用して Oracle WebLogic Serverに接続してコマンドを実行することを指定します。クライアント・インストールからコマンドを実行している場合のみ、このオプションを含めます。

Hは、使用方法の情報を表示し、コマンドを終了します。-Hを使用するか、パラメータを指定しないで.shを実行すると、ヘルプ・コメントが表示されます。

datamodel.sh updaterpdvariables -SI ssi -U weblogic -P password -S slc01.example.com -N 7777 -C listrpdvar.json

JSON入力ファイルの作成

JSON入力ファイルのモデルとしてlistrpdvariableコマンドを実行したときに生成されたJSONファイルを使用します。モデルとして出力されたJSONファイルを使用して、新しいファイルの構文が有効であることを確認します。「リポジトリ変数のリスト・コマンド」を参照してください。

入力ファイルを記述する場合、次の情報に注意します。

uid – この要素は任意のテキストを指定できます。

variable – この要素は新しい変数の名前です。

value – この要素は新しい変数の値です。二重引用符内に一重引用符を使用します。たとえば、"'VALUE'"です。

JSON入力リポジトリ変数ファイルの例

{
    "Title":"List Rpd Variables",
    "Rpd-Variables":[
      { 
        "uid":"80000000-3335-155c-991a-0af2537d0000", 
        "variable":"RPD_ST_VARIABLE", 
        "value":"'rpdStatic Variable My value'"
      },
      { 
        "uid":"c0000000-33c0-155c-991a-0af2537d0000",
        "variable":"DYNAMIC_REPO_VAR_NEW_NAME", 
        "value":"'dynamic repo var'" 
      },
      { 
        "uid":"New1",
        "variable":"NEW_VAR_NAME", 
        "value":"'new value for new variable'" 
      }
    ]
}