フィルタについて

フィルタは、キューブ内のデータ値へのセキュリティ・アクセスを制御します。フィルタは、利用可能な最も粒度の細かいセキュリティ形式です。

フィルタを作成するときは、特定のキューブ・セルまたはセルの範囲に対して一連の制限を指定します。その後、ユーザーまたはグループにフィルタを割り当てることができます。

自分のセキュリティ・ロールによって、自分がフィルタを作成、割当て、編集、コピー、名前変更、または削除できるかどうかが決まります。

  • アプリケーション・マネージャ・ロールがある場合は、ユーザーまたはグループに対するフィルタを管理できます。フィルタは自分には影響を与えません。
  • データベース更新ロールがある場合は、自分が作成したアプリケーションに対するフィルタを管理できます。
  • データベース・マネージャ・ロールがある場合は、アプリケーションまたはキューブ内のフィルタを管理できます。
  • データベース・アクセス・ロールがある場合は(デフォルト)、自分のアクセス権がフィルタでさらに制限されていないかぎり、すべてのセル内のデータ値に対して読取りアクセス権があります。

フィルタの作成

1つのキューブに対して複数のフィルタを作成できます。フィルタを編集した場合、その定義に加えた変更は、そのフィルタのすべてのユーザーによって継承されます。

セキュリティ・フィルタの使用によるデータベース・セルへのアクセスの制御を参照してください。

  1. フィルタ・エディタに移動します。

    Redwoodインタフェースで:

    1. 「アプリケーション」ページでアプリケーションを開き、データベース(キューブ)を開きます。
    2. 「カスタマイズ」をクリックし、「フィルタ」をクリックします。

    クラシックWebインタフェースで:

    1. アプリケーション・ページで、アプリケーションを展開します。
    2. キューブ名の右にある「アクション」メニューから、インスペクタを起動します。
    3. 「フィルタ」タブを選択します。
  2. 「追加」をクリックします。
  3. 「フィルタ名」テキスト・ボックスにフィルタ名を入力します。
  4. フィルタ・エディタで、「追加」をクリックします。
  5. 「アクセス権」で、ドロップダウン・メニューをクリックして使用し、アクセス・レベルを選択します。
    • なし: データの取得や更新はできません

    • 読取り: データの取得はできますが、更新はできません

    • 書込み: データの取得と更新ができます

    • メタ読取り: メタデータ(ディメンション名とメンバー名)の取得と更新ができます

      メタ読取りアクセス・レベルは、他のすべてのアクセス・レベルより優先されます。追加のデータ・フィルタは、既存のメタ読取りフィルタ内で強制されます。メンバーの組合せのフィルタリング(AND関係を使用)は、メタ読取りには適用されません。メタ読取りでは、各メンバーが個別にフィルタされます(OR関係を使用)。

  6. 「メンバー指定」で行を選択し、メンバー名を入力して、「送信」Redwoodフィルタの「送信」アイコンのイメージ。をクリックします。

    メンバーを個別にフィルタするか、メンバーの組合せをフィルタできます。先頭にアンパサンド(&)を付けて、ディメンション名またはメンバー名、別名、メンバーの組合せ、関数で定義されているメンバー・セット、あるいは代替変数名を指定します。カンマを使用して複数のエントリを区切ります。

  7. 必要に応じて、フィルタに追加の行を作成します。

    フィルタ行が重複または競合する場合、より詳細度の高いキューブ領域指定が詳細度の低いものの上に適用され、より許容度の高いアクセス権が許容度の低いものの上に適用されます。たとえば、Actualへの読取りアクセス権とJanへの書込みアクセス権をユーザーに付与した場合、ユーザーは、Jan Actualへの書込みアクセス権を持つことになります。

  8. 「検証」をクリックして、フィルタが有効であることを確認します。
  9. 「保存」をクリックします。

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は、指定のデータソースを参照して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. フィルタをキューブ・レベルで作成します。
    • Redwoodインタフェースでは、キューブに移動して、「カスタマイズ」を選択し、次に「フィルタ」を選択します。
    • クラシックWebインタフェースでは、データベース・インスペクタの「フィルタ」セクションを使用します。

  4. 必要に応じて動的フィルタ構文で$loginuser変数、$logingroup変数および@datasourcelookupメソッドを使用して、各フィルタのフィルタ行を定義します。
  5. フィルタをユーザーまたはグループに割り当てます。
  6. フィルタをグループに割り当てた場合、そのグループをフィルタ対象のアプリケーションに割り当てます。
    • Redwoodインタフェースでは、アプリケーションに移動して、「カスタマイズ」を選択し、次に「権限」を選択します。
    • クラシックWebインタフェースでは、アプリケーション・インスペクタの「権限」セクションを使用します。

動的フィルタの例

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


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

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