データソースの柔軟性を向上するために、問合せにランタイム・パラメータを実装して、データソースで変数を使用できます。
これらは、Essbaseで定義された代替変数、グリッド・コンテキストで定義されたランタイム・パラメータ(Smart Viewユーザーが外部データにドリル・スルーする場合)、または外部ソース・システムで記述されたユーザー定義関数です。
Essbaseデータソースで変数を使用する場合は常に、最初に次を行う必要があります
データソース問合せに変数構文を含めます。たとえば、データソース問合せの構文に?
を含める必要がありますが、?
は実行時に定義される変数のプレースホルダです。
次のいずれかを行います。
実行時に変数に無効なコンテキストが含まれる場合、Essbaseがフォールバックとして使用するように、固定のデフォルト・パラメータ値をデータソースに設定します。または
パラメータとして外部のユーザー定義関数(またはストアド・プロシージャ)を渡します
データソースを定義してそれらにパラメータを実装するには、アプリケーション・マネージャ以上である必要があります。
Essbaseデータソースで変数の使用を有効にすると、保守する必要のあるデータソースが減少し、運用を効率化できます。データソースに変数を実装すると、ユーザーがEssbaseキューブに関連付けられているデータソースにアクセスするたびに適用されるランタイム問合せコンテキストを指定できます。
たとえば、次のユースケースを想定します。
データベース・マネージャは、月次ベースでキューブにデータをロードする定期的なデータ・ロード・ジョブを管理します。このデータベース・マネージャは、月ごとのロード・ルールを維持するのではなく、代替変数を使用して現在の月のデータをロードできます。
アプリケーション・マネージャは、様々なビジネス・ユースケースに応じたドリル・スルー・レポート定義を管理します。このアプリケーション・マネージャは、Smart Viewユーザーがドリル・スルー操作でプルする対象の、基礎となるデータソースに変数を実装します。結果として、アプリケーション・マネージャが保守およびデバッグするドリル・スルー・レポート定義は少なくなります。
キューブの外部に保管されているデータを操作する際に、Essbaseが生成する問合せで変数の使用を有効にする場合、データソースでデフォルト・パラメータを設定します。
デフォルト・パラメータを設定するには、
データの外部ソースに対する接続を取得または作成します(たとえば、Oracle Databaseへの接続を作成します)。
グローバル接続を使用できます(Essbase Webインタフェースの「ソース」ページにすでに存在する場合)。または、アプリケーション・レベルの接続を作成できます。
Oracle Databaseへのアクセスに使用する接続を経由するデータソースを作成します。
データソースは、グローバルに定義できます(すべてのアプリケーションで使用できるようにする場合)。または、アプリケーション・レベルで定義できます。
グローバル・データソースを作成するには、サービス管理者である必要があります。「ソース」をクリックし、ユーザー名の下の「データソース」タブをクリックして、「データソースの作成」をクリックします。
または、アプリケーション・レベルのデータソースを作成するには、アプリケーション・マネージャであるか、指定したアプリケーションのアプリケーション管理権限を持つパワー・ユーザーである必要があります。「アプリケーション」タブで、アプリケーション名をクリックします。次に「ソース」をクリックし、ユーザー名の下の「データソース」タブをクリックして、「データソースの作成」をクリックします。
「一般」ステップの「接続」で、作成したOracle Database接続を選択します。
「名前」で、データソースの名前を指定します。
「問合せ」で、問合せを指定します(この例ではSQLを使用します)。これをパラメータ化問合せにするには、ソースのリレーショナル列をプレースホルダにマップするフィルタ条件(WHERE句)を含める必要があります。変数の位置は、問合せ構文でプレースホルダ?を使用して指定します。このプレースホルダは、後のステップで渡すパラメータ用です。
select * from SB_DT where DIMENSION_YEAR=?
たとえば、リレーショナル・データベースにSB_DTという名前の次の表があるとします。この表には、次のように値として月を含むDIMENSION_YEAR列があります:
DIMENSION_YEAR列からの月値の選択に変数を使用するには、問合せで次のフィルタ構文を適用します: where DIMENSION_YEAR=?
「次」をクリックします。
「列」ステップで、Essbaseがリレーショナル・ソース・データの各列に関連付ける必要のある適切なデータ型を適用します。
たとえば、数値列のタイプを「倍精度」に設定し、英数字列のタイプを「文字列」のままにします。
「次」をクリックします。
「パラメータ」ステップで、Param1が作成されます。このパラメータは、「一般」ステップで問合せに?を使用したために存在します。
「変数の使用」を選択しないままとし、「値」の下のテキスト・フィールドをダブルクリックしてランタイム・パラメータのデフォルト値を入力します。このデフォルト値の目的は、実行時にパラメータに無効なコンテキストが含まれる場合にEssbaseがフォールバックとして使用するためです。ランタイム・パラメータをドリル・スルー・レポート定義の一部として使用する場合、このステップは重要です。
また、Param1という名前は、ユースケースに適した名前に変更できます。たとえば、param_G_monthという名前に変更して現在の月に対応するグローバル変数を使用するパラメータであることを示したり、param_<appName>_monthという名前に変更して現在の月に対応するアプリケーション・レベルの変数を使用するパラメータであることを示したりできます。パラメータ名をカスタマイズすると、Essbaseサーバー・ログ・ファイルを使用してパラメータをデバッグする際に役立ちます。
代替変数を参照するようにパラメータをカスタマイズする場合、デフォルト値を指定する必要はありません。このトピックのかわりに「データソースでの代替変数の使用」を参照してください。
「次」をクリックします。
「プレビュー」で、デフォルト・パラメータが問合せに適用されていることがわかります。結果として、プレビューでは、DIMENSION_YEAR列の値がJanである外部ソース・レコードのみが移入されます。
プレビューではデフォルト・パラメータが適用された値のみが表示されますが、後でドリル・スルー・レポート定義にランタイム・パラメータを実装すると、プレビューに表示されたものより多くの外部データにアクセスできます。
「作成」をクリックして、外部ソース・データのこの問合せに基づいてデータソースを作成します。データソースは、ランタイム・パラメータの実装に対して有効です。
次のワークフローは、Essbaseで定義された代替変数を使用して、外部ソース・データの問合せからEssbaseデータソースを作成する方法を示しています。代替変数により、ソース・データからプルする問合せを設計する方法の柔軟性が向上します。
この例では、Essbaseで代替変数を使用して現在の月を宣言します。現在の月のデータをプルするためにデータソースを毎月更新するかわりに、データソースはそのままにして、定義した代替変数のみを更新できます。
グローバルまたはアプリケーション・レベルの代替変数を作成します。
データの外部ソースに対する接続を取得または作成します(たとえば、Oracle Databaseへの接続を作成します)。
グローバル接続を使用できます(Essbase Webインタフェースの「ソース」ページにすでに存在する場合)。または、アプリケーション・レベルの接続を作成できます。
Oracle Databaseへのアクセスに使用する接続を経由するデータソースを作成します。
データソースは、グローバルに定義できます(すべてのアプリケーションで使用できるようにする場合)。または、アプリケーション・レベルで定義できます。
「一般」ステップの「接続」で、作成したOracle Database接続を選択します。
「名前」で、データソースの名前を指定します。
「問合せ」で、問合せを指定します(この例ではSQLを使用します)。これをパラメータ化問合せにするには、ソースのリレーショナル列をプレースホルダにマップするフィルタ条件(WHERE句)を含める必要があります。変数の位置は、問合せ構文でプレースホルダ?
を使用して指定します。このプレースホルダは、後のステップで渡すパラメータ用です。
select * from SB_DT where DIMENSION_YEAR=?
たとえば、リレーショナル・データベースにSB_DTという名前の次の表があるとします。この表には、次のように値として月を含むDIMENSION_YEAR列があります:
DIMENSION_YEAR列からの月値の選択に変数を使用するには、問合せで次のフィルタ構文を適用します: where DIMENSION_YEAR=?
「次」をクリックします。
「列」ステップで、Essbaseがリレーショナル・ソース・データの各列に関連付ける必要のある適切なデータ型を適用します。
たとえば、数値列のタイプを「倍精度」に設定し、英数字列のタイプを「文字列」のままにします。
「次」をクリックします。
「パラメータ」ステップで、Param1が作成されます。このパラメータは、「一般」ステップで問合せに?
を使用したために存在します。Param1をカスタマイズして代替変数を参照するには、「変数の使用」をクリックして「値」ドロップダウン・リストから代替変数を選択します。
アプリケーション内でデータソースを作成する場合、グローバルとアプリケーション・レベルの両方の代替変数を選択できます。アプリケーション・レベル変数には、接頭辞としてアプリケーション名が付加されます。グローバル・データソースを作成する場合、グローバル代替変数のみを選択できます。
Param1という名前は、ユースケースに適した名前に変更できます。たとえば、param_G_monthという名前に変更して現在の月に対応するグローバル変数を使用するパラメータであることを示したり、param_<appName>_monthという名前に変更して現在の月に対応するアプリケーション・レベルの変数を使用するパラメータであることを示したりできます。パラメータ名をカスタマイズすると、Essbaseサーバー・ログ・ファイルを使用してパラメータをデバッグする際に役立ちます。
「次」をクリックします。
「プレビュー」で、代替変数が問合せに適用されていることがわかります。結果として、プレビューでは、DIMENSION_YEAR列の値がAugである外部ソース・レコードのみが移入されます。
「作成」をクリックして、外部ソース・データのこの問合せに基づいてデータソースを作成します。