外部ソース・データに基づいて動的フィルタを作成し、必要なフィルタ定義の数を減らすことができます。
@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は、指定のデータソースを参照してcolumnNameにcolumnValueが含まれているレコードを検索します 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
メソッドは、各グループについて一致するすべての列値を返します。
動的フィルタを作成するには、次の一般的なワークフローを使用します。
この動的フィルタのワークフローは、すでにキューブがあり、ユーザーおよびグループがプロビジョニングされていることを前提としています。
$loginuser
変数、$logingroup
変数および@datasourcelookup
メソッドを使用して、各フィルタのフィルタ行を定義します。