Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Editionメタデータ・リポジトリ作成者ガイド 12c (12.2.1.2.0) E82973-02 |
|
前へ |
次へ |
これらのトピックでは、リポジトリ変数およびリポジトリ変数の作成方法について学習します。
この項では、リポジトリ変数の操作について説明します。内容は次のとおりです。
リポジトリ変数は、任意の時点で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構文で記述された初期化ブロックを選択する必要があります。「選択手順をオーバーライドする変数で使用される初期化文字列」を参照してください。新しい初期化ブロックを作成するには、「新規」をクリックします。「初期化ブロックの作成」を参照してください。
静的リポジトリ変数は、「デフォルトのイニシャライザ」フィールドで定義されたデフォルト値を持つ必要があります。静的リポジトリ変数は、値が変更されない定数です。文字列を使用して変数を初期化する場合、文字列を一重引用符( ' )で囲みます。
リポジトリ変数を作成すると、式ビルダーで変数を使用できるようになります。
変数は、関数VALUEOF()
の引数として使用する必要があります。変数をダブルクリックしてそれを式に貼り付けると、自動的にそのように処理されます。
変数を使用して、列やその他のリポジトリ・オブジェクトを表すことはできません。
たとえば、次のCASE
文は前の例で説明したものと同じことをしています。ただし、変数は定数に置き換えられています。
CASE WHEN "Hour" >= VALUEOF("prime_begin")AND "Hour" < VALUEOF("prime_end") THEN 'Prime Time' WHEN ... ELSE...END