什么是数据行级别的权限过滤?通常,我们拿来制作报表的数据是一张记录了大量数据的长表,这类表中有明显的指标分类,例如省份、大区等,如何用同一张报表,针对不同的用户展示其对应分类的指标数据,这就是我们要实现的数据行级别权限控制。 数据行级别的权限控制,使报表的通用性获得提升,减少业务人员的工作量,增加数据展示的灵活性。下面我们来详细解析数据行级别权限控制的简单应用场景。 01 案例解析场景: 某企业在各大省份均有分公司,业务人员根据全国销售数据制作了一张季度销售分析报表,期望各省份用户仅能查看对应省份销售数据,对此,我们可以使用“行过滤”功能来实现这类行级别的权限控制,下面我们来简单讲解行权限控制的实现方法。 实现方案: a、新建一个“用户-省份”对应关系数据集:
b、在此数据集上编辑行过滤,在弹出框中设置行过滤:用户是 等于 [?{_USER_}],保存数据集:
c、打开准备好的全国销售数据,例如数据集“咖啡中国市场销售数据”:
d、在数据集“咖啡中国市场销售数据”中创建参数“权限”,可选值选数据集“权限过滤”,标签和值选择“省份”,不勾选弹出:
e、在数据集“咖啡中国市场销售数据”中添加行过滤:省份是 其中一个 [?{权限}]:
f、进入制作报告,打开报告“北京/报表1”,创建表1,绑定数据集“咖啡中国市场销售数据”上的“省份”等列:
g、用户“北京1”登录,进入查看报告,打开报告“北京/报表1”,查看过滤效果:只显示省份为北京的数据。如下图所示:
02 案例扩展以上我们讲到简单的“用户-分类”结构的权限控制,深层次挖掘行级别权限控制的使用场景,我们针对“用户层级”结构的数据,也能通过行过滤的方案来实现权限控制,场景如下: 现某企业销售部门有张业务员销售表,数据表结构如下所示
企业销售部门的人员结构如下:
报表开发人员使用“业务员销售数据”制作了一张“业务员销售分析报表”,期望通过行级别数据权限控制,实现如下效果: 普通业务员只能看到自己的销售数据; 省份负责人可以看到所属省份所有业务员的销售数据; 大区负责人可以看到所属大区所有业务员的销售数据。
分析思路: 1.找出业务员所在最高层级 2.找出业务员对应的最底层所有user 3.用步骤2找到的user用于“业务员销售数据集”的行过滤,筛选出最终数据。 03 结语数据行级别的权限控制,大大提升了数据展示的灵活性,但是针对复杂场景,需要我们具备足够的sql基础和分析能力。
|