リポジトリ変数の操作

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

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

リポジトリ変数について

リポジトリ変数は、任意の時点で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
  • 式ビルダーで左ペインの「リポジトリ変数」フォルダをクリックすると、中央ペインにすべてのリポジトリ変数(静的変数と動的変数の両方)の名前が表示されます。
  • 式でリポジトリ変数を使用するには、それを選択してダブルクリックします。式ビルダーはそれをアクティブなカーソル挿入ポイントの式に貼り付けます。