フィルタについて
フィルタは、キューブ内のデータ値へのセキュリティ・アクセスを制御します。フィルタは、利用可能な最も粒度の細かいセキュリティ形式です。
フィルタを作成するときは、特定のキューブ・セルまたはセルの範囲に対して一連の制限を指定します。その後、ユーザーまたはグループにフィルタを割り当てることができます。
自分のセキュリティ・ロールによって、自分がフィルタを作成、割当て、編集、コピー、名前変更、または削除できるかどうかが決まります。
- アプリケーション・マネージャ・ロールがある場合は、ユーザーまたはグループに対するフィルタを管理できます。フィルタは自分には影響を与えません。
- データベース更新ロールがある場合は、自分が作成したアプリケーションに対するフィルタを管理できます。
- データベース・マネージャ・ロールがある場合は、アプリケーションまたはキューブ内のフィルタを管理できます。
- データベース・アクセス・ロールがある場合は(デフォルト)、自分のアクセス権がフィルタでさらに制限されていないかぎり、すべてのセル内のデータ値に対して読取りアクセス権があります。
フィルタの作成
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メソッドは、各グループについて一致するすべての列値を返します。
動的フィルタを作成するためのワークフロー
動的フィルタを作成するには、次の一般的なワークフローを使用します。
この動的フィルタのワークフローは、すでにキューブがあり、ユーザーおよびグループがプロビジョニングされていることを前提としています。
- データのソースがファイルかそれともリレーショナル・ソースかを識別します。
- 接続およびEssbaseのデータソースを、グローバルまたはアプリケーション・レベルで定義します。
- キューブ・レベルでフィルタを作成します
- Redwoodインタフェースでキューブに移動し、「カスタマイズ」、「フィルタ」の順に選択します。
-
クラシックWebインタフェースで、データベース・インスペクタの「フィルタ」セクションを使用します。
- 必要に応じて動的フィルタ構文で
$loginuser変数、$logingroup変数および@datasourcelookupメソッドを使用して、各フィルタのフィルタ行を定義します。 - フィルタをユーザーまたはグループに割り当てます。
- フィルタをグループに割り当てた場合は、フィルタするアプリケーションにグループを割り当てます。
- Redwoodインタフェースでアプリケーションに移動し、「カスタマイズ」、「権限」の順に選択します。
- クラシックWebインタフェースで、アプリケーション・インスペクタの「権限」セクションを使用します。
