Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Editionメタデータ・リポジトリ作成者ガイド 12c (12.2.1) E70045-01 |
|
前 |
次 |
この章では、Oracle BIリポジトリで変数を使用して管理タスクを効率化したり、変化するデータ環境に合せてメタデータの内容を動的に変更したりする方法について説明します。変数のクラスは、リポジトリ変数とセッション変数の2種類があります。
リポジトリ変数は、任意の時点で1つの値を持ちます。リポジトリ変数には、静的と動的の2種類があります。
セッション変数は、各ユーザーのログイン時に作成され、値が割り当てられます。セッション変数には、システムとシステム以外の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つのソースがあるとします。1つのソースには最近の注文が含まれ、もう一方のソースには履歴データが含まれます。
「論理表ソース」ダイアログの「コンテンツ」タブで、これらのソースの内容を記述する必要があります。動的リポジトリ変数を使用しない場合、次のような式で最近のデータを含むソースの内容を記述します。
Orders.OrderDates."Order Date" >= TIMESTAMP '2001-06-02 00:00:00'
この内容の記述は、新しいデータが最近のソースに追加され、古いデータが履歴ソースに移動すると無効になります。最近のソースの新しい内容を正確に反映するには、その内容の部分の記述を手動で変更する必要があります。動的リポジトリ値は、それを自動的に実行するように設定できます。
もう一つのお薦めの動的リポジトリ変数の使用方法は、論理表ソースのWHERE
句フィルタで使用することです。これは、「論理表ソース」ダイアログの「コンテンツ」タブで定義します。
これらの変数は、一般的にはフィルタを設定してOracle BIプレゼンテーション・サービスで使用します。たとえば、動的リポジトリ変数CurrentMonthの値で列をフィルタするには、フィルタをCurrentMonthに設定します。
この項では、リポジトリ変数の作成方法について説明します。
リポジトリ変数を作成する手順は次のとおりです。
管理ツールで、「管理」を選択してから「変数」を選択します。
「変数マネージャ」ダイアログで、「アクション」→「新規」→「リポジトリ」→「変数」を選択します。
「変数」ダイアログで、変数名を入力します。
すべての変数名は一意にする必要があります。システム・セッション変数の名前は予約されており、他の変数の型で使用することはできません。
変数の型を選択します(「静的」または「動的」)。
「動的」を選択した場合、「初期化ブロック」リストを使用して、継続的に値のリフレッシュに使用する既存の初期化ブロックを選択します。リポジトリ変数を作成し、それを使用して階層列の選択手順をオーバーライドする場合、初期化文字列がJSON構文で書かれている初期化ブロックを選択する必要があります。詳細は、「選択手順をオーバーライドする変数で使用される初期化文字列」を参照してください。
新しい初期化ブロックを作成するには、「新規」をクリックします。詳細は、「初期化ブロックの作成」を参照してください。
デフォルト・イニシャライザの値を追加するには、「デフォルトのイニシャライザ」ボックスに値を入力するか、「式ビルダー」ボタンをクリックして式ビルダーを使用します。
静的リポジトリ変数の場合、「デフォルトのイニシャライザ」ウィンドウで指定した値は永続します。この値は管理者が変更するまで変わりません。文字列を使用して変数を初期化する場合、文字列を一重引用符( ' )で囲みます。静的リポジトリ変数は、定数値のデフォルト・イニシャライザを持つ必要があります。
「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 Fusion Middleware Oracle Business Intelligence Enterprise Editionセキュリティ・ガイド』のセッション変数の管理に関する項を参照してください。
この項には次のトピックが含まれます:
システム・セッション変数は、Oracle BIサーバーおよびOracle BIプレゼンテーション・サービスが特定の目的に使用するセッション変数です。システム・セッション変数には、他の種類の変数(静的または動的のリポジトリ変数およびシステム以外のセッション変数)に使用できない予約された名前があります。
Oracle BIプレゼンテーション・サービスでこれらの変数を使用する場合、名前の前にNQ_SESSION
を付けます。たとえば、列を変数LOGLEVEL
の値でフィルタするには、フィルタを変数NQ_SESSION.LOGLEVEL
に設定します。
表19-1に、使用可能なシステム・セッション変数を示します。
表19-1 システム・セッション変数
変数 | 説明 |
---|---|
USER |
ユーザーがログオン名として入力した値を保持します。この値は、一般には、ユーザーのLDAPプロファイルから移入されます。 |
USERGUID |
ユーザーの一意のグローバル識別子(GUID)が格納されます。一般的には、ユーザーのLDAPプロファイルから移入されます。 |
GROUP |
ユーザーが属するグループが格納されます。以前のリリースとの互換性のためにのみ存在します。レガシー・グループは、自動的にアプリケーション・ロールにマップされます。 ユーザーが複数のグループに属している場合、グループ名をセミコロンで区切って同じ列に含めます(例: GroupA;GroupB;GroupC)。セミコロンをグループ名の一部として含める必要がある場合は、セミコロンの前に円記号(\)を付けてください。 |
ROLES |
ユーザーが属するアプリケーション・ロールが格納されます。 ユーザーが複数のロールに属している場合、ロール名をセミコロンで区切って同じ列に含めます(例: RoleA;RoleB;RoleC)。セミコロンをロール名の一部として含める必要がある場合は、セミコロンの前に円記号(\)を付けてください。 |
ROLEGUIDS |
ユーザーが属するアプリケーション・ロールの一意のグローバル識別子(GUID)が格納されます。アプリケーション・ロールのGUIDは、アプリケーション・ロール名と同じです。 |
PERMISSIONS |
oracle.bi.server.manageRepositoriesなど、ユーザーが保持する権限が格納されます。 |
PROXY |
プロキシ・ユーザーの名前を保持します。プロキシ・ユーザーは、他のユーザーとして務めることが認可されているユーザーです。 PROXYシステム・セッション変数の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Editionセキュリティ・ガイド』を参照してください。 |
WEBGROUPS |
ユーザーが属するカタログ・グループ(プレゼンテーション・サービス・グループ)があれば、それを指定します。ただし、カタログ・グループよりアプリケーション・ロールを使用することをお薦めします。 ユーザーが複数のカタログ・グループに属している場合、カタログ・グループ名をセミコロンで区切って同じ列に含めます(例: WebgroupA;WebgroupB;WebgroupC)。セミコロンをカタログ・グループ名の一部として含める必要がある場合は、セミコロンの前に円記号(\)を付けてください。 |
DISPLAYNAME |
Oracle BIプレゼンテーション・サービスで使用されます。これは、Oracle BIプレゼンテーション・サービス・ユーザー・インタフェースの挨拶でユーザーに表示される名前が格納されます。また、カタログ・オブジェクトの作成者フィールドも保存されます。この変数は、通常、ユーザーのLDAPプロファイルから移入されます。 |
LOGLEVEL |
このシステム・セッション変数は、管理ツールのユーザー・オブジェクトに定義されている変数を上書きします。(インストールで定義されている)管理ユーザーのログ・レベルが4に定義されており、リポジトリで定義されているセッション変数 |
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問合せとして識別します。詳細は、「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プレゼンテーション・サービスで使用されます。これは、ユーザーがログインしたときに表示されるデフォルトのダッシュボードを特定します(ユーザーはログオン後にこのプリファレンスを上書きできます)。 |
REQUESTKEY |
Oracle BIプレゼンテーション・サービスで使用されます。同じリクエスト・キー(ブランク以外)を持つユーザーは、同じOracle BIプレゼンテーション・サービス・キャッシュ・エントリを共有します。これによってOracle BIプレゼンテーション・サービスは、これらのユーザーがOracle BIサーバーで同一のコンテンツ・フィルタおよびセキュリティを持つことを認識します。Oracle BIプレゼンテーション・サービス・キャッシュ・エントリを共有すると、Oracle BIサーバーとの間に発生する不要な通信を最小化できます。 |
SKIN |
Oracle BIプレゼンテーション・サービス・ユーザー・インタフェースのルック・アンド・フィールの特定の要素を決定します。ユーザーは、Oracle BIプレゼンテーション・サービスにログオンしたときにスタイルを選択して、ユーザー・インタフェースの一部の要素を変更できます。 |
システム・セッション変数と同じ手順を使用して、システム以外のセッション変数を定義します。
システム以外のセッション変数は、一般的にはユーザー・フィルタの設定に使用されます。たとえば、SalesRegionというシステム以外の変数を、ユーザーの販売地域の名前に初期化するように定義できます。
そこで、グループのすべてのメンバーにその地域に関連するデータの参照のみを許可するようにセキュリティ・フィルタを設定できます。
Oracle BIプレゼンテーション・サービスでこれらの変数を使用する場合、名前の前にNQ_SESSION
を付けます。たとえば、列を変数SalesRegion
の値でフィルタするには、フィルタを変数NQ_SESSION.SalesRegion
に設定します。
この項では、セッション変数の作成方法について説明します。
セッション変数を作成する手順は次のとおりです。
管理ツールで、「管理」を選択してから「変数」を選択します。
「変数マネージャ」ダイアログで、「アクション」→「新規」→「セッション」→「変数」を選択します。
「セッション変数」ダイアログで、変数名を入力します。
すべての変数名は一意にする必要があります。システム・セッション変数の名前は予約されており、他の変数の型で使用することはできません。
セッション変数の場合、次のオプションを選択できます。
ユーザーによる値の設定を可能にする。このオプションを選択すると、ODBCストアド・プロシージャNQSSetSessionValue()
をコールして(ユーザー・ログイン時に)初期化ブロックに値を移入した後にセッション変数が設定されます。たとえば、このオプションによって、管理者以外のユーザーがサンプル用にこの変数を設定できるようにすることができます。
NQSSetSessionValues()
ストアド・プロシージャは、「Oracle BIプレゼンテーション・サービス管理」での「SQLの発行」ページから使用することはできません。
このオプションが選択されていないと、変数は設定されません。
セキュリティ・センシティブ。このオプションを選択すると、仮想プライベート・データベース(VPD)などの行レベル・データベース・セキュリティ戦略を使用する際に、その変数をセキュリティ・センシティブと識別します。フィルタ・キャッシュ表に一致すると、Oracle BIサーバーは論理リクエスト・プロジェクトション・リストで参照されるそれぞれの列または表の親データベース・オブジェクトを参照します。データベース・オブジェクトの「仮想プライベート・データベース」オプションが選択されていると、Oracle BIサーバーはセキュリティ・センシティブ変数のリストと見込みのキャッシュ・ヒットをマッチングします。キャッシュ・ヒットは、すべてのセキュリティ・センシティブ変数が含まれて一致しているキャッシュ・エントリでのみ発生します。
「初期化ブロック」リストを使用して、継続的に値のリフレッシュに使用する初期化ブロックを選択します。セッション変数を作成し、それを使用して階層列の選択手順をオーバーライドする場合、初期化文字列がJSON構文で書かれている初期化ブロックを選択する必要があります。詳細は、「選択手順をオーバーライドする変数で使用される初期化文字列」を参照してください。
新しい初期化ブロックを作成するには、「新規」をクリックします。詳細は、「初期化ブロックの作成」を参照してください。
デフォルト・イニシャライザの値を追加するには、「デフォルトのイニシャライザ」ボックスに値を入力するか、「式ビルダー」ボタンをクリックして式ビルダーを使用します。
「OK」をクリックします。
初期化ブロックは、動的リポジトリ変数、システム・セッション変数、およびシステム以外のセッション変数を初期化するために使用されます。たとえば、NQ_SYSTEM
初期化ブロックはシステム・セッション変数をリフレッシュするために使用されます。
この項には次のトピックが含まれます:
初期化ブロックには、そのブロックに関連付けられた変数を初期化またはリフレッシュするために実行されるSQL文が含まれます。
このSQL文は、「初期化ブロック」ダイアログの「接続プール」フィールドで指定された接続プールを使用してアクセスできる物理表を参照する必要があります。
初期化ブロックの問合せにデータベース固有のSQLを含める必要がある場合、その問合せのデータベース・タイプを選択できます。初期化ブロックをインスタンス化したときにそのデータベース・タイプのSQL初期化文字列が定義されていると、その文字列が使用されます。そうでなければ、デフォルトの初期化SQL文字列が使用されます。
注意: デフォルトでは、「初期化ブロック」ダイアログをオンライン・モードで編集用に開くと、初期化ブロック・オブジェクトは自動的にチェックアウトされます。初期化ブロックがチェックアウトされている間、設定されているリフレッシュ間隔に応じて、Oracle BIサーバーはこの初期化ブロックでリフレッシュされる動的変数の値をリフレッシュし続けることができます。初期化ブロックをチェックインすると、動的変数の値はデフォルトのイニシャライザで示された値にリセットされます。この処理を実行しない場合は、「チェックアウトを元に戻す」オプションを使用します。 |
この項には次のトピックが含まれます:
動的リポジトリ変数の値は、「初期化ブロック」ダイアログの「デフォルトの初期化文字列」フィールドで定義された問合せによって設定されます。また、Oracle BIサーバーが問合せを実行して変数の値を定期的にリフレッシュするようにスケジュールを設定します。Oracle BIサーバーを停止して再起動すると、サーバーは自動的にリポジトリ変数初期化ブロックのSQL文を実行して、リポジトリ変数を再度初期化します。
(インストール時に設定された)管理者アカウントのログ・レベルが2以上に設定されていると、Oracle BIサーバーはリポジトリ変数情報を取得するために発行されたすべてのSQL問合せをnqquery.logに記録します。管理者のログ・レベルを2に設定すると、最も有用な情報のレベルが提供されます。nqquery.logファイルは次の場所にあります。
BIDOMAIN\servers\obisn\logs
ユーザーレベルのログの詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Editionシステム管理者ガイド』の問合せログの管理に関する項を参照してください。
動的リポジトリ変数と同様に、セッション変数も初期化ブロックからその値を取得します。動的リポジトリ変数と異なり、セッション変数はスケジュールされた時間の間隔で更新されません。そのかわり、ユーザーが新しいセッションを開始するたびに、Oracle BIサーバーはこれらの変数の新しいインスタンスを作成します。その値は、セッションの間変わりません。
セッション・ログイン時のセッション変数初期化ブロックの実行は、それに関連付けられたセッション変数が実際にセッション内でアクセスできるようになるまで遅延することができます。詳細は、「初期化ブロックの作成」を参照してください。
Identity Managerのユーザー・オブジェクトでログ・レベルが2以上に設定されている場合、または変数マネージャでLOGLEVEL
システム・セッション変数が2以上に設定されている場合、Oracle BIサーバーはセッション変数情報を取得するために発行されたすべてのSQL問合せをログに記録します。
nqquery.logファイルのデフォルトの場所は次のとおりです。
BIDOMAIN\servers\obisn\logs
ユーザーレベルのログの詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Editionシステム管理者ガイド』の問合せログの管理に関する項を参照してください。
行単位の初期化オプションを使用して、セッション変数を動的に作成し、セッションの開始時にそれらの値を設定することができます。セッション変数の名前および値は、接続プールを介してアクセスする外部データベースに格納されます。変数は、「初期化ブロック」ダイアログで入力した初期化文字列からその値を受け取ります。
たとえば、RW_SESSION_VARS
という名前の表に含まれる値を使用してセッション変数を作成するとします。この表には次の3つの列が含まれます。
USERID
: ユーザーの一意のIDを表す値が含まれます。
NAME
: セッション変数名を表す値が含まれます。
VALUE
: セッション変数の値を表す値が含まれます。
表19-2に、この例の表を示します。
表19-2 サンプル・セッション変数データベース表
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
: 値は4
、STATUS
: 値はFULL_TIME
)。
JaneがOracle BIサーバーに接続すると、そのセッションには行単位の初期化からの3つのセッション変数が含まれます(LEVEL
: 値は8
、STATUS
: 値はFULL-TIME
、GRADE
: 値はAAA
)。
行単位の初期化オプションを使用して、値リストを含む変数を初期化できます。SQLのIN
演算子を使用して、指定されたリストの値をテストできます。
たとえば、前の例の表の値を使用して、次のSQL文を入力して初期化文字列を取得します。
SELECT 'LIST_OF_USERS', USERID FROM RW_SESSION_VARS WHERE NAME='STATUS' AND VALUE='FULL-TIME'
このSQL文により、変数LIST_OF_USERS
に、JOHN
とJANE
の値を含むコロン区切りのリスト(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
を使用して、次の例のようにします。最初の値は「0」であることに留意してください。「1」ではありません。
Select 'LIST_OF_CUSTOMERS', Customer_Name from RW_CUSTOMERS where RW.CUSTOMERS.USER_NAME in '(ValueNameOf(0,NQ_SESSION.LIST_OF_USERS))
初期化ブロックの詳細は、「変数を含む初期化ブロックの使用について」を参照してください。
初期化ブロックを作成するには、次の項の手順を実行します。
リポジトリ変数では、開始日時の日、日付、および時刻、およびリフレッシュ間隔を指定できます。
名前およびスケジュールを初期化ブロックに割り当てる手順は次のとおりです。
管理ツールで、「管理」を選択してから「変数」を選択します。
「変数マネージャ」ダイアログの「アクション」メニューで、「新規」→「リポジトリ」 (または「セッション」)→「初期化ブロック」を選択します。
「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、ブロックの名前を入力します。(NQ_SYSTEM
初期化ブロック名は予約されています。)
(リポジトリ初期化ブロックのみ)「スケジュール」エリアで、開始日付および時刻とリフレッシュ間隔を選択します。
(セッション初期化ブロックのみ)必要に応じて、次のオプションを選択します。
無効。このオプションを選択すると、初期化ブロックは無効になります。
変数マネージャで既存の初期化ブロックを右クリックして、「無効化」または「有効化」を選択することもできます。このオプションにより、初期化ブロック・ダイアログを開くことなく、このプロパティを変更できます。
遅延実行の許可。このオプションを選択すると、初期化ブロックの実行は関連付けられたセッション変数にセッション中に初めてアクセスできるようになるまで遅延されます。
このオプションを使用することで、セッション・ログオン・ステージ時にすべてのセッション変数初期化ブロックが実行されることはなくなり、ログオン時間が短くなります。セッション中に不要なセッション変数は、初期化ブロックが実行されません。そのため、これらの不要な初期化ブロックの実行に使用されるリソースが節約されます。
初期化ブロックの遅延実行は、すべての未実行の先行初期化ブロックの実行もトリガーします。関連付けられているすべての初期化ブロックの変数およびその未実行の先行部分は、遅延実行から返された値で更新されます。
注意: 「遅延実行の許可」オプションは、状況によっては使用できない場合があります。詳細は、「セッション変数初期化ブロックの実行を遅延できないケース」を参照してください。
認証のために必要。このオプションを選択すると、この初期化ブロックはユーザーのログインに成功する必要があります。つまり、初期化ブロックの実行に失敗すると、ユーザーはOracle Business Intelligenceへのアクセスが拒否されます。初期化ブロックで不正な資格証明が拒否された場合、またはデフォルトの初期化文字列にエラーがある場合は、実行が失敗する可能性があります。
単一のユーザー・セッション変数が初期化ブロックに関連付けられている場合、この要件は偽装を使用する内部プロセス(デリバーなど)には適用されません。その場合、信頼できる内部プロセスが、初期化ブロックの成否にかかわらず、接続できます。
次の手順は、データソースおよび接続プールを選択することです。
初期化ブロックのデータソース・タイプとして「データベース」を選択する場合、データベースから返される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文にエラーがある場合、データベースはエラー・メッセージを返します。詳細は、「初期化ブロックのテスト」を参照してください。
初期化ブロックのデータソースおよび接続プールを選択する手順は次のとおりです。
管理ツールで、「管理」を選択してから「変数」を選択します。
「変数マネージャ」ダイアログで、編集する初期化ブロックをダブルクリックします。リポジトリ初期化ブロックまたはセッション初期化ブロックを編集できます。
「接続プール」フィールドの横の「データ・ソースの編集」をクリックします。
「データ・ソース・タイプ」リストで、次のタイプのいずれかを選択します。
データベース: リポジトリ変数およびセッション変数用。
LDAPサーバー: セッション変数用。
カスタム認証システム: セッション変数用。『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Editionセキュリティ・ガイド』を参照してください。
データソース・タイプに「データベース」を選択している場合、次のいずれかの手順を実行します。
「デフォルトの初期化文字列」または「データベース固有のSQLの使用」を選択して、次の手順を実行します。
「接続プール」フィールドの横の「参照」をクリックして、ターゲット情報が存在するデータベースに関連付けられている接続プールを選択します。初期化文字列を入力する前に接続プールを選択していない場合、接続プールを選択するよう促すメッセージが表示されます。
「接続プールの選択」ダイアログで、接続プールを選択して「選択」をクリックします。初期化文字列を入力する前に接続プールを選択する必要があります。
デフォルトでは、物理レイヤーのデータベース・オブジェクトの下の最初の接続プールは選択できません。これにより、問合せに使用する接続プールと同じ接続プールを初期化ブロックで使用できないようになります。詳細は、「初期化ブロックの接続プールについて」を参照してください。
「オプション」ダイアログの「初期化ブロックに最初の接続プールを許可」を選択することで、最初の接続プールを選択可能にするよう動作を変更できますが、これはお薦めしません。詳細は、「管理ツールのオプションの設定」を参照してください。
「データベース固有のSQLの使用」を選択した場合、「データベース」ペインでデータベースを開いて選択します。そこで、それに関連付けられた文字列を入力します。
それを選択しない場合、「デフォルトの初期化文字列」ボックスで変数の移入に必要なSQL初期化文字列を入力します。例は、「初期化文字列の例」を参照してください。
初期化ブロックを編集し、それを使用して階層列の選択手順をオーバーライドする場合、「デフォルトの初期化文字列」ボックスに、JSON初期化文字列を入力します。詳細は、「選択手順をオーバーライドする変数で使用される初期化文字列」を参照してください。
(オプション)「テスト」をクリックして、SQL文のデータソース接続をテストします。
「OK」をクリックして、「初期化ブロック」ダイアログに戻ります。
「OBI EEサーバーの使用」を選択して、次の手順を実行します。
ボックスで、変数の移入に必要なSQL初期化文字列を入力します。
ここで入力した文字列はOracle BIサーバーで処理されるため、Oracle BIサーバーでサポートされていれば、文字列は別のデータソースでも機能します。
たとえば、初期化ブロックは、SQL Serverに固有の関数pi()
を使用する場合があります。ただし、「OBI EEサーバーの使用」を選択すると、問合せは、Oracle BIサーバーによって適切なデータベース用に書き換えられます。つまり、SQL Serverバックエンド・データベースをOracleに変更しても、問合せはそのまま機能します。
追加の例は、「初期化文字列の例」を参照してください。
「OK」をクリックして、「初期化ブロック」ダイアログに戻ります。
データソース・タイプに「LDAPサーバー」を選択している場合、次の手順を実行します。
「参照」をクリックして既存のLDAPサーバーを選択するか、「新規」をクリックして「LDAPサーバー」ダイアログの「一般」タブを開きLDAPサーバーを作成します。
「OK」をクリックして、「初期化ブロック」ダイアログに戻ります。
LDAPサーバー名とそれに関連付けられたドメイン識別子が「名前」および「ドメイン識別子」列に表示されます。
データソース・タイプに「カスタム認証システム」を選択している場合、次の手順を実行します。
「参照」をクリックして既存のカスタム認証システムを選択するか、「新規」を選択してそれを作成します。
「OK」をクリックして、「初期化ブロック」ダイアログに戻ります。
「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 ] } ] }
この項では、次の初期化文字列の例について説明します。
例19-1 サイトでデリバーを使用する場合の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文をテストする必要があります。
詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Editionシステム管理者ガイド』を参照してください。
例19-2 サイトでデリバーを使用しない場合の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文をテストする必要があります。
例19-3 複数のデータソースから表を結合するSQL文 - 'OBI EE Server'設定を使用する場合
select WUSER.name, wuser_detail.email from "db-11g/orcl"."NAME"."WUSER', "sqlexpress"."master"."dbo"."wuser_detail" where username=:USER:
前述の初期化ブロックの問合せの例では、異なるデータソース(SQLServer、Oracle、XML Filesなど)からの複数の表の結合問合せを使用しています。「OBI EEサーバーの使用」オプションを選択すると、問合せがBIサーバーによって指定されたデータソース用に書き換えられるので、この問合せは機能します。
「テスト」ボタンを使用して、またはOracle BI ClientユーティリティなどのSQLツールを使用して、SQL文をテストする必要があります。SQLツールを使用する場合、同じDSNまたは指定された接続プール内のDSNと同一に設定されたDSNを使用してください。
オンライン・モードでは、初期化ブロック・テストは:USER
と:PASSWORD
をユーザー名とパスワードに使用するように設定された接続プールが機能しません。オフライン・モードでは、:USER
と:PASSWORD
を移入できるように「変数の値の設定」ダイアログが表示されます。
初期化ブロックをテストする手順は次のとおりです(オプション)。
管理ツールで、「管理」を選択してから「変数」を選択します。
「変数マネージャ」ダイアログで、初期化ブロックをダブルクリックします。
「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、「データ・ソースの編集」をクリックします。
[リポジトリ|セッション]変数初期化ブロック・データソースダイアログで、「テスト」をクリックします。
注意: オフライン・モードで「OBI EEサーバーの使用」オプションが選択されていると、「テスト」ボタンは無効になります。
「変数の値の設定」ダイアログで、情報が正しいか確認し、「OK」をクリックします。
表からのデータの表示ダイアログで、問合せの行数と開始行を入力して、「問合せ」をクリックします。
「結果」ダイアログには、変数とその値がリストされます。
次の手順は、変数と初期化ブロックを関連付けることです。
デフォルトのイニシャライザのSQLのSELECT
文には、複数の列を含めることができます。SQL文の列の順序および初期化ブロックに関連付けられた変数の順序により、各変数に関連付けられる列値が決定されます。そのため、変数を初期化ブロックに関連付けると、最初の列で返された値は、リストの最初の変数に割り当てられます。
リポジトリ変数初期化ブロックの場合、オンライン・モードでリポジトリを開く場合、「初期化ブロック」ダイアログの「デフォルトの初期化文字列」フィールドに表示される値は、Oracle BIサーバーに認識されているその変数の現在の値です。関連付けられた変数の数は、取得される列の数とは異なる場合があります。列よりも変数のほうが数が少ない場合、余分な列値は無視されます。列よりも変数のほうが数が多い場合、追加の変数はリフレッシュされません(それらは、それが何であるかに関係なく元の値を保持します)。正しいSQLであれば初期化ブロックを使用して実行できます。これには、データベースに書き込むSQLおよびデータベース構造を変更するSQLが含まれ、その接続プールに関連付けられたユーザーIDにこれらのアクションの実行をデータベースが許可していると想定されます。
Oracle BIサーバーを停止して再起動すると、サーバーは自動的にリポジトリ変数初期化ブロックのSQL文を実行し、リポジトリ変数を再度初期化します。
セッション変数初期化ブロックでは、「行単位の初期化」を選択できます。「行単位の初期化」オプションを選択すると、「キャッシュの使用」オプションが自動的に選択されます。「キャッシュの使用」オプションが選択されることで、Oracle BIサーバーは問合せの結果をメイン・メモリー・キャッシュに保存することになります。詳細は、「行単位の初期化について」を参照してください。
Oracle BIサーバーは、後続セッション用にキャッシュされた結果を使用します。これにより、セッションの起動時間を短縮できます。ただし、キャッシュされた結果には最新のセッション変数の値が含まれていない場合があります。各新規セッションでセッション変数の最新セットとそれぞれに対応する値が必要な場合、このオプションを選択解除する必要があります。
「変数を含む初期化ブロックの使用について」を参照してください。
変数を初期化ブロックに関連付ける手順は次のとおりです。
管理ツールで、「管理」を選択してから「変数」を選択します。
「変数マネージャ」ダイアログで、編集する初期化ブロックをダブルクリックします。リポジトリ初期化ブロックまたはセッション初期化ブロックを編集できます。
「データ・ターゲットの編集」をクリックします。
[リポジトリ|セッション]変数初期化ブロック変数ターゲットダイアログで、次のいずれかの手順を実行します。
次のいずれかを実行して、変数を初期化ブロックに関連付けます。
「新規」をクリックして、「変数」ダイアログで新しい変数を作成します。変数の作成の詳細は、「リポジトリ変数の作成」または「セッション変数の作成を参照してください。
「リンク」をクリックして、既存の変数と初期化ブロックを関連付けます。「参照」ダイアログで、この初期化ブロックでリフレッシュする変数を選択して「OK」をクリックします。
注意: 「カスタム認証システム」データソース・タイプの場合(セッション変数のみ)、変数USER が必要です。 |
「行単位の初期化」を選択します。このオプションは、セッション変数初期化ブロック専用です。詳細は、「行単位の初期化について」を参照してください。「行単位の初期化」を選択すると、「キャッシュの使用」オプションが使用可能になります。
変数を並べ替えるには、変数を選択して「上へ」または「下へをクリックします。
変数とこのブロックとの関連付けを削除するには、変数を選択して「削除」をクリックします。
「OK」をクリックします。
次の手順は実行優先度を確立することです。
リポジトリに複数の初期化ブロックがある場合、ブロックを初期化する順序を設定できます(優先度の確立)。
まず、最後に実行するブロックを開き、その前に実行する初期化ブロックを追加します。たとえば、リポジトリにAとBという2つの初期化ブロックがあるとします。初期化ブロックBを開き、ブロックBの前にブロックAを実行することを指定します。そうすると、ブロックAは自身の単独での実行に加えて、ブロックBのスケジュールに応じても実行されるようになります。
実行優先度を確立する手順は次のとおりです。
管理ツールで、「管理」を選択してから「変数」を選択します。
「変数マネージャ」ダイアログで、最後に初期化する初期化ブロックをダブルクリックします。
「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、「実行優先度の編集」をクリックします。
[リポジトリ|セッション]変数初期化ブロック実行プリファレンスダイアログで、「追加」をクリックします。
選択されていない初期化ブロックがある場合にのみ「追加」を使用できます。
「参照」ダイアログで、開いたブロックの前に初期化する必要があるブロックを選択して、「OKをクリックします。
ブロックを削除するには、[リポジトリ|セッション]変数初期化ブロック実行プリファレンスダイアログで削除するブロックを選択して、「削除」をクリックします。
「OK」をクリックします。
初期化ブロックを必須にするには、「リポジトリ変数初期化ブロック」または「セッション変数初期化ブロック」のダイアログで、「認証のために必要」オプションを選択します。
「OK」をクリックします。
注意: 初期化ブロックで「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 Business Intelligenceは、複数のデータ・ソースから移入できるセッション変数をサポートします。このようなマルチソース・セッション変数は論理問合せまたはリポジトリのデータ・フィルタ内で使用でき、様々なデータ・ソースからの値の結合を含めることができます。
マルチソース・セッション変数が保持できる値の数に制限はありません。マルチソース・セッション変数を作成するには、まず、ソースごとに行単位の初期化ブロックを作成します。
次に、ソースごとにセッション変数を明示的に定義します。セッション変数名のフォーマットは、次のようにする必要があります。
<ms_variable_name>
____<source>
ここで、セパレータは4つのアンダースコア文字である必要があります。
これによって、次の名前のマルチソース・セッション変数1つが自動的に作成されます。
<ms_variable_name>
コンポーネント・セッション変数名(<ms_variable_name>____<source>)は、管理ツールの「変数マネージャ」には個別に表示されますが、「式ビルダー」では1つのマルチソース・セッション変数名(<ms_variable_name>)のみが表示されます。
注意: この項では主としてマルチソース・セッション変数の定義と使用法について説明していますが、論理問合せとデータ・フィルタでコンポーネント・セッションの値を選択することもできます。 |
行単位の初期化ブロックのいずれかがNULL結果を返した場合、それはOracle BIサーバーのログ、nqserver.logにログインされます。正常に値を返した他のコンポーネント初期化ブロックのマルチソース・セッション変数にも値を追加できます。マルチソース・セッション変数は、すべてのコンポーネント初期化ブロックがNULL値を返した場合のみ失敗します。
マルチソース・セッション変数についても、通常のセッション変数と同様に、実行優先度と遅延実行を設定できます。
次の例では、マルチソース・セッション変数の作成と使用方法を示しています。
管理ツールの「変数マネージャ」で、「アクション」→「新規」→「セッション」→「初期化ブロック」を選択します。
デフォルトの初期化文字列
に対して次のSQLを指定して、mvcountry_sebl_initという行単位の初期化ブロックを作成します。
select distinct 'MVCOUNTRY____SEBL', country from siebel_table
デフォルトの初期化文字列
に対して次のSQLを指定して、mvcountry_orcl_initという行単位の初期化ブロックを作成します。
select distinct 'MVCOUNTRY____ORCL', country from oracle_table
まだ「変数マネージャ」で、「アクション」→「新規」→「セッション」→「変数」を選択します。
MVCOUNTRY____SEBLというセッション変数を、変数名とソース名の間に4つのアンダースコアが含まれていることを確認して、作成します。「初期化ブロック」に対してmvcountry_sebl_init
を選択します。
MVCOUNTRY____ORCLという2つ目のセッション変数を、変数名とソース名の間に4つのアンダースコアが含まれていることを確認して、作成します。「初期化ブロック」に対してmvcountry_orcl_init
を選択します。
コンポーネント・セッション変数は「変数マネージャ」に表示されるのに対し、作成されたマルチソース・セッション変数、MVCOUNTRYは「式ビルダー」に表示されます。
論理問合せでのマルチソース・セッション変数の使用方法
これで、マルチソース・セッション変数MVCOUNTRYを論理問合せで使用できるようになりました。
次に例を示します。
select lastName, firstName, country from employee where country=VALUEOF(NQ_SESSION.MVCOUNTRY)
データ・フィルタでのマルチソース・セッション変数の使用方法
マルチソース・セッション変数MVCOUNTRYをデータ・フィルタで使用するには、次の手順を実行します。
管理ツールで、「管理」を選択し、「アイデンティティ」を選択します。
「Identity Manager」ダイアログのツリー・ペインで、「BIリポジトリ」を選択します。
右のペインで「アプリケーション・ロール」タブを選択し、データ・フィルタを設定するアプリケーション・ロールをダブルクリックします。
「アプリケーション・ロール」ダイアログで「権限」をクリックします。
「ユーザー/アプリケーション・ロール権限」ダイアログで、「データ・フィルタ」タブをクリックします。
「データ・フィルタ」タブで、次のデータ・フィルタ式を作成します。
Country=VALUEOF(NQ_SESSION.MVCOUNTRY)
次のイメージに示すように、「式ビルダー」には、マルチソース・セッション変数MVCOUNTRYのみが表示され、このマルチソース・セッション変数の作成に使用した通常のセッション変数は表示されないことに注意してください。
接続プールのリスト・コマンドlistrpdvariable
を使用して、特定のサービス・インスタンスに対してJSON形式でリポジトリ変数のリストを作成します。複数の変数を更新する必要がある場合、これとupdaterpdvariables
ユーティリティを使用します。
ランチャ・スクリプト(UNIXの場合はdata-model-cmd.sh、Windowsの場合はdata-model-cmd.cmd)を介して、ユーティリティを実行します。ランチャ・スクリプトは次の場所にあります。
Oracle_Home
/user_projects/domains/bi/bitools/bin
詳細は、「コマンドを使用する前の必知事項」を参照してください。
構文
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を使用してWebLogic Serverに接続してコマンドを実行することを指定します。クライアント・インストールからコマンドを実行している場合のみ、このオプションを含めます。
H
は、使用方法の情報を表示し、コマンドを終了します。
例
data-model-cmd.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入力ファイルの作成」および「JSON入力リポジトリ変数ファイルの例」を参照してください。
変更されたリポジトリ変数(名前または値)を含む更新されたJSONファイルもアップロードできます。listrpdvariable
コマンドを使用して、特定のサービス・インスタンスのリポジトリ変数のリストを含むJSONファイルを作成します。このファイルの変数情報を変更して、updaterpdvariables
コマンドを使用してサービス・インスタンスにアップロードします。ファイルの変数に対してuid
値を変更しないでください。詳細は、「リポジトリ変数のリスト・コマンド」を参照してください。
ランチャ・スクリプト(UNIXの場合はdata-model-cmd.sh、Windowsの場合はdata-model-cmd.cmd)を介して、ユーティリティを実行します。ランチャ・スクリプトは次の場所にあります。
Oracle_Home
/user_projects/domains/bi/bitools/bin
詳細は、「コマンドを使用する前の必知事項」を参照してください。
構文
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を使用してWebLogic Serverに接続してコマンドを実行することを指定します。クライアント・インストールからコマンドを実行している場合のみ、このオプションを含めます。
H
は、使用方法の情報を表示し、コマンドを終了します。
例
data-model-cmd.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'" } ] }