フィルタは、キューブ内のデータ値へのセキュリティ・アクセスを制御します。フィルタは、利用可能な最も粒度の細かいセキュリティ形式です。
フィルタを作成するときは、特定のキューブ・セルまたはセルの範囲に対して一連の制限を指定します。その後、ユーザーまたはグループにフィルタを割り当てることができます。
自分のセキュリティ・ロールによって、自分がフィルタを作成、割当て、編集、コピー、名前変更、または削除できるかどうかが決まります。
1つのキューブに対して複数のフィルタを作成できます。フィルタを編集した場合、その定義に加えた変更は、そのフィルタのすべてのユーザーによって継承されます。
セキュリティ・フィルタの使用によるデータベース・セルへのアクセスの制御を参照してください。
Redwoodインタフェースでフィルタを編集するには、キューブを選択してから「カスタマイズ」ページを選択し、「フィルタ」タブを見つけます。次に、フィルタ名をクリックしてフィルタ・エディタで変更を加え、フィルタを編集します。既存の行を編集するには、その行をダブルクリックします。
クラシックWebインタフェースでフィルタを編集するには、インスペクタで「フィルタ」タブに移動し、フィルタ名をクリックしてフィルタ・エディタで変更を加え、フィルタを編集します。
フィルタをコピー、名前変更または削除するには、フィルタ名の右にある「アクション」メニューをクリックしてオプションを選択します。
フィルタの作成後、ユーザーまたはグループに対してそれらの割当てを行います。
外部ソース・データに基づく動的フィルタを作成して、必要なフィルタ定義の数を削減できます。
@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
メソッドは、各グループについて一致するすべての列値を返します。
動的フィルタを作成するには、次の一般的なワークフローを使用します。
この動的フィルタのワークフローは、すでにキューブがあり、ユーザーおよびグループがプロビジョニングされていることを前提としています。
クラシックWebインタフェースでは、データベース・インスペクタの「フィルタ」セクションを使用します。
$loginuser
変数、$logingroup
変数および@datasourcelookup
メソッドを使用して、各フィルタのフィルタ行を定義します。