我尝试在 pentaho jpivot
1 中创建一些限制。我有 2 个用户(user1 - role1 和 user2 - role2)
2. 我有一个带有这个值的轴
商店 | 所有者 | 销售量 --------------------- s1 | 用户1 | 1235 | 用户2 | 2684 s2 | 用户1 | 1628 | 用户2 | 1002 s3 | 用户1 | 1111 | 用户2 | 1596 ...
我的架构看起来像这样:
<Schema name="asimov1">
<Dimension type="StandardDimension" visible="true" foreignKey="owner" name="owner">
<Hierarchy name="owner" visible="true" hasAll="false" primaryKey="owner" primaryKeyTable="storeTable">
<Level name="owner" visible="true" table="storeTable" column="owner" uniqueMembers="false">
</Level>
</Hierarchy>
</Dimension>
<Dimension type="StandardDimension" visible="true" foreignKey="store1" name="store1">
<Hierarchy name="store1" visible="true" hasAll="true" primaryKey="store1" primaryKeyTable="storeTable">
<Level name="store1" visible="true" table="storeTable" column="store1" uniqueMembers="false">
</Level>
</Hierarchy>
</Dimension>
<Cube name="asimov1" caption="asimov1" visible="true" description="asimov1" cache="true" enabled="true">
<Table name="storeTable">
</Table>
<DimensionUsage source="store1" name="store1" visible="true" foreignKey="store1">
</DimensionUsage>
<DimensionUsage source="owner" name="owner" visible="true" foreignKey="owner">
</DimensionUsage>
<Measure name="sales" column="sales" formatString="#" aggregator="sum">
</Measure>
</Cube>
</Schema>
我的选择:
select NON EMPTY Crossjoin({[owner].[owner].Members}, {[Measures].[sales]}) ON COLUMNS,
NON EMPTY {[store].[store].Members} ON ROWS
from [role_test]
我希望当我以 user1 身份登录时只看到 user1 的值,所以对于 user2。
我使用 xaction 添加了 where 子句,但如果访问 jpivot OLAP 导航器,user1 仍然可以看到 user2 的值。
我将 visible="false" 添加到维度所有者,但没有效果。我制作了没有效果的角色。
<Role name="user1">
<SchemaGrant access="none">
<CubeGrant cube="asimov1" access="all">
<HierarchyGrant hierarchy="owner" topLevel="owner" bottomLevel="owner" access="custom">
<MemberGrant member="[owner].[user1]" access="all">
</MemberGrant>
<MemberGrant member="[owner].[user2]" access="none">
</MemberGrant>
</HierarchyGrant>
</CubeGrant>
</SchemaGrant>
……
就是这样,所以请给一些指导。
最好的问候, dga