プライマリ・コンテンツに移動
Oracle® Essbase Oracle Essbaseの使用

F17137-05
目次へ移動
目次

前
次
機械翻訳について

効率的な動的フィルタの作成

外部ソース・データに基づいて動的フィルタを作成し、必要なフィルタ定義の数を減らすことができます。

多数のユーザー用のハードコードされた一連のデータ・アクセス・フィルタを管理するのではなく、メンバーおよびユーザー名に基づいて、外部ソース・データのキューブ・セルにフィルタ・アクセスできます。
メソッド@datasourceLookupおよび変数$LoginUser$LoginGroupを含む動的フィルタ定義構文を使用してこれを実行します。 外部ソース・データはcsvファイルまたはリレーショナル表です。 リレーショナル・ソース・データの場合は、.csvをリレーショナル表にロードできます。

動的フィルタ構文

動的フィルタ構文を使用して、複数のユーザーとグループに割当て可能な柔軟なフィルタを作成します。

フィルタ行の定義には、通常のメンバー式に加えて、次の要素を含めることができます。

$loginuser

この変数には、現在のログイン・ユーザーの値が実行時に格納されます。 @datasourcelookupメソッドと組み合せて使用可能です。

$logingroup

この変数には、現在ログインしているユーザーが属するすべてのグループの値が格納されます。 直接グループと間接グループの両方が含まれます。 @datasourcelookupメソッドと組み合せて使用すると、各グループがデータソースに対して個別に検索されます。

@datasourcelookup

このメソッドは、データソースからレコードをフェッチします。

構文

@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)
パラメータ 説明
dataSourceName

Essbaseで定義された外部データソースの名前です。 アプリケーション・レベル・データソースの場合は、名前の前にアプリケーション名と期間を付加します。

columnName

指定されたcolumnValueを検索するデータソース列の名前。

columnValue

columnName内で検索する値。

returnColumnName

値のリストを返すデータソース列の名前。

説明

@datasourcelookupコールは次のSQL問合せと同じです。

select returnColumnName from dataSourceName where columnName=columnValue

@datasourcelookupは、指定のデータソースを参照してcolumnNamecolumnValueが含まれているレコードを検索します columnValue$loginuserを指定した場合、このメソッドではcolumnNameに現在のログイン・ユーザーの名前が含まれているレコードが検索されます。

Essbaseでは、リスト要素をカンマ区切りの文字列として組み合せることによりフィルタ定義行を作成します。 レコードに特殊文字、スペース、または数値のみが含まれている場合、引用符で囲まれます。

パラメータを引用符で囲みます。

次のコールではグローバル・データソースを参照し、Maryがストア・マネージャであるストア名のリストを返します。

@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")

次のコールではアプリケーション・レベルのデータソースを参照し、現在のログイン・ユーザーがストア・マネージャであるストア名のリストを返します。

@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")

次のコールではアプリケーション・レベルのデータソースを参照し、ログイン・ユーザーが属するグループのいずれかとストア部門が一致するストア名のリストを返します。

@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")

ログイン・ユーザーが3つのグループに属している場合、前述の@datasourcelookupメソッドは、各グループについて一致するすべての列値を返します。

動的フィルタを作成するためのワークフロー

動的フィルタを作成するには、次の一般的なワークフローを使用します。

この動的フィルタのワークフローは、すでにキューブがあり、ユーザーおよびグループがプロビジョニングされていることを前提としています。

  1. データのソースがファイルかそれともリレーショナル・ソースかを識別します。
  2. 接続およびEssbaseのデータソースを、グローバルまたはアプリケーション・レベルで定義します。
  3. データベース・インスペクタの「フィルタ」セクションを使用して、キューブ・レベルでフィルタを作成します。
  4. 必要に応じて動的フィルタ構文で$loginuser変数、$logingroup変数および@datasourcelookupメソッドを使用して、各フィルタのフィルタ行を定義します。
  5. フィルタをユーザーまたはグループに割り当てます。
  6. フィルタをグループに割り当てた場合は、アプリケーション・インスペクタの「権限」セクションを使用して、フィルタ処理するアプリケーションにグループを割り当てます。

動的フィルタの例

次の動的フィルタは、サンプル・テンプレートとしてギャラリに用意されているEfficient.UserFiltersという名前のキューブで使用できます。


ログイン・ユーザーにメタ読取りアクセス権を付与する3つの行がある動的フィルタ。

この動的フィルタを作成して適用する方法を学習するには、ギャラリのテクニカル・セクションからワークブック・テンプレートEfficient_Filters.xlsxをダウンロードし、ワークブック内のREADMEの手順に従ってください。 ギャラリは、Essbase Webインタフェースの「ファイル」セクションで利用できます。