メタデータのフィルタリング
関連するMaxL文: create filter、alter filter。
メタデータ・フィルタリングは、データ・フィルタリングに加えて追加のセキュリティ・レイヤーを提供します。 メタデータのフィルタリングを使用すると、管理者はアウトライン・メンバーをユーザー・ビューから削除して、ユーザーにとって関心のあるメンバーにのみアクセス権を付与できます。
フィルタを使用してメンバーにMetaRead権限を適用する場合、
-
そのメンバーのすべての祖先のデータは、フィルタ・ユーザーのビューで非表示になります。
-
そのメンバーのすべての兄弟のデータおよびメタデータ(メンバー名)は、フィルタ・ユーザーのビューで非表示になります。
例
Sample.Basic用の次のレポート・スクリプト:
//Meta02.rep
<COLUMN (Year, Product)
<CHILDREN Cola
<ROW (Market)
<ICHILDREN West
!
通常のフィルタされていない条件では、次の値が返されます
Year 100-10 Measures Scenario
California 3,498
Oregon 159
Washington 679
Utah 275
Nevada (18)
West 4,593
ただし、読取りアクセス権のないユーザーに次のフィルタが付与されているとします。
create or replace filter sample.basic.meta02
meta_read on '"California","Oregon"'
;
その後、レポート・スクリプトは次を返します:
Year 100-10 Measures Scenario
California 3,498
Oregon 159
West #Missing
要約すると、CaliforniaおよびOregonに対するMetaReadの権限は、次のことを意味します:
-
影響を受けるユーザーは、CaliforniaおよびOregonメンバーの祖先のデータを表示できません。 Westデータには、#Missing (またはグリッド・クライアント・インタフェースの#NoAccess)のみが表示されます。
-
影響を受けるユーザーは、CaliforniaおよびOregonの兄弟の兄弟メタデータ(またはデータ)を表示できません。 つまり、ユーザーには、フィルタによってMetaRead権限が付与されている西部の州のみが表示されます。
重複するメタデータ・フィルタ定義
特定の行(メタ読取りメンバーとその祖先)の影響を受けるメンバー・セットが他の行のMetaReadメンバーと重複しない場合にのみ、複数の行を使用してMetaReadフィルタを定義する必要があります。 Oracleでは、複数の行にMetaReadを含むフィルタで、行ごとに1つのディメンションを指定することをお薦めします。 ただし、祖先メンバーとMetaReadメンバーの間に重複がないかぎり、あるディメンションの異なるメンバー・セットを複数のMetaRead行に指定することは引き続き有効です。
たとえば、Sample.Basicでは、次のフィルタ定義に重複する競合があります:
表3-27重複する競合があるサンプル・フィルタ
アクセス | メンバー指定 |
---|---|
MetaRead | California |
MetaRead | West |
最初の行で、MetaReadをCaliforniaに適用すると、Californiaへのアクセスは許可されますが、祖先へのアクセスはブロックされます。 したがって、WestへのMetaReadアクセスは無視されます。このフィルタを割り当てられたユーザーはWestにアクセスできません。
WestおよびCaliforniaにMetaReadアクセス権を割り当てる場合、適切なメソッドは次のいずれかの行に結合することです:
表3-28重複しない競合があるサンプル・フィルタ
アクセス | メンバー指定 |
---|---|
MetaRead | California,West |