页面树结构
转至元数据结尾
转至元数据起始

针对关系数据源创建的数据权限。在关系数据源中通过对查询的目标表设置数据权限,当组合分析和可视化查询中涉及到这个数据源的这些表时,数据权限设置条件会自动启用。

 

文档目录:

1、操作入口

在关系数据源的右键菜单选择 设置数据权限,则在右侧区域打开“数据权限设置”界面。

在表的右键菜单中选择 设置,“数据权限设置区”呈可编辑状态,在该处设置数据权限即可。

2、界面介绍

“数据权限设置”界面主要分为以下几个区域:

  • 可选资源区:该区主要列出了设置数据权限可使用的资源。
  • 表达式区:该区主要用于编辑数据权限的表达式,设置数据权限表达式的资源可从“可选资源区”中拖拽。
  • 范围定义区:该区主要是对数据权限生效的范围进行定义,包括适用的用户组、用户、角色以及优先级等。该区设置项说明如下:

设置项

说明

适用对象

表示通过设置数据权限生效对象,主要有:用户组、角色、用户。这三类选项取并集。

优先级

表示当数据源存在多个数据权限时,优先执行的数据权限。数据权限优先级的数字越大,则该数据权限越先被执行

适用范围

适用范围主要有两个:

  • 适用于此范围:表示属于“适用对象”内的用户才执行当前数据权限。
  • 不适用于此范围:表示不属于“适用对象”内的用户才执行当前数据权限。

 

2.1 优先级

表示当数据源存在多个数据权限时,优先执行的数据权限。数据权限优先级的数字越大,则该数据权限越先被执行。比如我们设置同一个数据源下两张表的数据权限,则根据优先级设置有如下两种情况:

  • 两张表的数据权限优先级都设置为0。则数据权限中两个表的数据权限同时生效,条件之间是and关系。
  • 若某张表的数据权限优先级大于另外一张表的数据权限,并且我们在资源中同时使用了这两张表,则数字大的执行优先级高,资源中只有数字大的数据权限生效。

下面我们以基于数据源的组合分析为例演示数据权限执行优先级。若某张表的数据权限优先级大于另外一张表的数据权限,并且我们在资源中同时使用了这两张表,则数字大的执行优先级高,资源中只有数字大的数据权限生效。

  • 我们对northwind数据源下的顾客表设置数据权限如下图,并设置其优先级为0
  • 我们对northwind数据源下的雇员表设置数据权限如下图,并设置其优先级为0
  • 使用用户test(其用户组名称为"华北",用户别名"北京")登录系统,创建组合分析,并从顾客表雇员表都勾选字段。

    顾客表和雇员表的权限都生效,如下图:

          

          

 

  • 修改northwind数据源下的顾客表数据权限的优先级为1顾客表的数据权限大于雇员表的数据权限优先级,则只会执行顾客表的数据权限。
  • 修改northwind数据源下的雇员表数据权限的优先级为2雇员表的数据权限大于顾客表的数据权限优先级,则只会执行雇员表的数据权限。

 

2.2 适用范围

用于设置数据权限对于用户生效的范围,比如很多情况下我们对于管理员用户是不希望其受到数据权限的影响的。适用范围操作入口:在数据权限窗口点击范围定义中的用户组用户角色等按钮,则会弹出对应的选择框。目前包含两类范围:

  • 适用于此范围:表示属于“适用对象”内的用户才执行当前数据权限。
  • 不适用于此范围:表示不属于“适用对象”内的用户才执行当前数据权限。

 

3、实现原理

对于基于关系数据源的资源,我们实际上是通过SQL语句的where条件来实现不同的用户登录看到不同的数据。比如报表对应的执行SQL语句为select A.××× from A,如果要实现不同的用户登录进来看到的数据不同,我们需要给这个报表对应SQL加where限制条件。如下:

select A.xxx from A where A.department = ?

 

其中?号获取的值是根据不同的用户登录动态变化的:

  • 如广州用户登录,会得到"广州"这个机构值,然后把这个机构值加到SQL语句中,就会得到广州的数据。对应SQL类似如下:select A.××× from A where A.department ='广州'
  • 如北京用户登录,会得到"北京"这个机构值,然后把这个机构值加到SQL语句中,就会得到北京的数据。对应SQL类似如下:select A.××× from A where A.department ='北京'

因此,我们需要根据不同的用户登录获取到这个用户所属的机构。那我们如何获取到用户所属机构呢?Smartbi产品默认自带系统函数用户属性功能可以获取到用户所属属性。

  • 一般当登录产品的用户自带机构信息时,比如其所属组就可以获取机构信息,我们使用系统函数和数据集SQL关联即可。
  • 若无法直接根据当前用户的信息获取到机构信息,则需要用户和机构的映射表,然后创建用户属性根据不同的用户获取机构信息。

 

4、参考示例

请参考:数据权限设置-组合分析

 

  • 无标签