蒙德里安角色:按层次过滤和隐藏层次
mondrian role: filter by hierarchy and hide hierarchy
我有一个包含不同客户端 (table TD_CLIENTS) 的数据库,它可以访问 mondrian Cube。显然,我希望每个客户端只能看到自己的数据。
我已经通过每个客户的角色完成了这个(我的客户很少,所以这是一个acceptable权衡。无论如何,如果有人知道更好的方法,我会的很高兴听到它):
<Schema name="my_schema" description="my schema">
<Dimension type="StandardDimension" visible="true" highCardinality="false" name="Clients">
<Hierarchy name="Clients hierarchy" visible="true" hasAll="true">
<Table name="td_clients" schema="public">
</Table>
<Level name="Client" visible="true" table="td_clients" column="client_id" nameColumn="client_name" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Cube name="my cube" visible="true" cache="true" enabled="true">
<Table name="my_facts_table" schema="public">
</Table>
<DimensionUsage source="Clients" name="Clients" visible="true" foreignKey="client_id" highCardinality="false">
</DimensionUsage>
<Measure name="my measure" column="amount" aggregator="sum" visible="true">
</Measure>
</Cube>
<Role name="Client 2 test">
<SchemaGrant access="all">
<CubeGrant cube="my cube" access="all">
<HierarchyGrant hierarchy="[Clients.Clients hierarchy]" topLevel="[Clients.Clients hierarchy].[Client]" bottomLevel="[Clients.Clients hierarchy].[Client]" rollupPolicy="partial" access="custom">
<MemberGrant member="[Clients.Clients hierarchy].[A CERTAIN CLIENT]" access="all">
</MemberGrant>
</HierarchyGrant>
</CubeGrant>
</SchemaGrant>
</Role>
</Schema>
但是现在,由于每个登录用户(与其客户端角色关联)只能看到一个客户端,我想隐藏客户端层次结构。
我该如何完成?
谢谢您,并致以最诚挚的问候!
你很接近:
添加第二个 HierarchyGrant 以限制其可见性,例如:
<HierarchyGrant hierarchy="[Clients.Clients hierarchy]" rollupPolicy="partial" access="custom">
<MemberGrant member="[Clients.Clients hierarchy].[A CERTAIN CLIENT]" access="all">
</MemberGrant>
</HierarchyGrant>
<HierarchyGrant hierarchy="[Clients.Clients hierarchy]" rollupPolicy="partial" access="none">
</HierarchyGrant>
但是请记住,除非您添加第二个(可见的)维度,否则像 jpivot 这样的工具将无法工作。
我有一个包含不同客户端 (table TD_CLIENTS) 的数据库,它可以访问 mondrian Cube。显然,我希望每个客户端只能看到自己的数据。
我已经通过每个客户的角色完成了这个(我的客户很少,所以这是一个acceptable权衡。无论如何,如果有人知道更好的方法,我会的很高兴听到它):
<Schema name="my_schema" description="my schema">
<Dimension type="StandardDimension" visible="true" highCardinality="false" name="Clients">
<Hierarchy name="Clients hierarchy" visible="true" hasAll="true">
<Table name="td_clients" schema="public">
</Table>
<Level name="Client" visible="true" table="td_clients" column="client_id" nameColumn="client_name" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Cube name="my cube" visible="true" cache="true" enabled="true">
<Table name="my_facts_table" schema="public">
</Table>
<DimensionUsage source="Clients" name="Clients" visible="true" foreignKey="client_id" highCardinality="false">
</DimensionUsage>
<Measure name="my measure" column="amount" aggregator="sum" visible="true">
</Measure>
</Cube>
<Role name="Client 2 test">
<SchemaGrant access="all">
<CubeGrant cube="my cube" access="all">
<HierarchyGrant hierarchy="[Clients.Clients hierarchy]" topLevel="[Clients.Clients hierarchy].[Client]" bottomLevel="[Clients.Clients hierarchy].[Client]" rollupPolicy="partial" access="custom">
<MemberGrant member="[Clients.Clients hierarchy].[A CERTAIN CLIENT]" access="all">
</MemberGrant>
</HierarchyGrant>
</CubeGrant>
</SchemaGrant>
</Role>
</Schema>
但是现在,由于每个登录用户(与其客户端角色关联)只能看到一个客户端,我想隐藏客户端层次结构。
我该如何完成?
谢谢您,并致以最诚挚的问候!
你很接近:
添加第二个 HierarchyGrant 以限制其可见性,例如:
<HierarchyGrant hierarchy="[Clients.Clients hierarchy]" rollupPolicy="partial" access="custom">
<MemberGrant member="[Clients.Clients hierarchy].[A CERTAIN CLIENT]" access="all">
</MemberGrant>
</HierarchyGrant>
<HierarchyGrant hierarchy="[Clients.Clients hierarchy]" rollupPolicy="partial" access="none">
</HierarchyGrant>
但是请记住,除非您添加第二个(可见的)维度,否则像 jpivot 这样的工具将无法工作。