-
土豆我是马铃薯 数据达人Lv4
发表于2019-10-25 18:42
楼主
如何利用用户属性设置数据级次维
一、获取用户(机构)的属性
在BI中通过设置数据级次维可以实现按照用户的组织机构或其他维度来为用户分配数据权限,通常情况下数据级次维需要与用户(或机构)的属性结合使用。
用户(或机构)在系统中有内置的属性,例如用户id,用户名,用户所在机构id,用户所在机构名称等,也可以在系统中添加用户自定义属性。如何获取用户的这些属性呢?BI为我们提供了登录者对象login。login对象有一些固定的用法:login.id获取当前登录用户的id,login.name获取当前登录用户的名称,login.orgid获取当前登录用户所在机构的id,login.orgname获取当前登录用户的名称。
我们也可以利用login对象来获取用户或机构的其他属性,例如:login.user.email来获取当前登录用户的邮箱。如果是用户自定义属性,例如:用户在系统中添加了一个用户扩展字段,字段的属性名为yhqx,利用login对象获取这个扩展字段的写法为:login.user.yhqx。如果想要获取到当前登录用户的机构其他属性,可以使用login.org.xxx的方式。
二、设置用户的数据级次维
客户需求:
为用户赋权实现每个用户登录系统,只能看到自己所在地区的数据,系统中有地区维度。
实现方式:
1. 主题集上设置地区维度为数据级次维
1. 用户与权限中设置权限
A. 为机构分配资源权限(机构下的用户可以继承机构的权限,也可以利用角色来实现批量赋权)
B. 分配数据权限
C. 更改权限数据
在高级中找到刚刚添加的数据权限,修改
注意这里参数的写法:
='EBI$6$7$VQKY9QPBSWNM64UQJOJWS15BP3QT9WLY$地区$'+login.user.email
其中:我们在上一步勾选地区后,系统自动生成的参数值为:
EBI$6$7$VQKY9QPBSWNM64UQJOJWS15BP3QT9WLY$地区$000000
我们需要将其修改为:
=’EBI$6$7$VQKY9QPBSWNM64UQJOJWS15BP3QT9WLY$地区$'+login.user.email
示例中使用了login.user.email属性,这是因为示例中用户的机构id与地区维表中的地区id并不匹配。所以我们在用户的邮箱属性中,单独维护了用户所在机构的值进去。
参数写法的含义是让用户查看数据的权限与login.user.email字段的值相匹配。
如果客户的机构id和地区维表的值相匹配,那么这里可以写成
=’EBI$6$7$VQKY9QPBSWNM64UQJOJWS15BP3QT9WLY$地区$'+login.orgid
D. 用bj用户登录系统,计算报表会发现,系统自动按照用户的权限查询出了数据
如果需要在报表中添加一个地区参数,并且要求,参数列表只能显示用户权限范围内的地址,可以在报表中添加“单位级次下拉框”
再次使用bj用户登录系统,查看数据,可以看到地区参数的下拉列表中只显示出了“北京”地区