数据行列权限
概述
数据行列权限是观远 BI 提供的针对行列级别的权限控制功能。通过给数据集配置行列权限,可以为不同的关联用户/用户组设置不可见的字段或字段值,满足个性化的数据安全保障需求。
列权限:控制用户不能查看哪些字段(纵向控制,隐藏整列)。例如:隐藏成本价字段,让普通员工看不到。
行权限:控制用户可以查看哪些数据记录(横向控制,过滤行)。例如:让华东销售人员只能查看华东区域的数据。
业务价值
- 精细化权限管控:实现字段级和记录级的数据访问控制
- 数据安全保障:防止敏感数据泄露,确保数据合规使用
- 灵活配置:支持多种条件类型和自定义函数,适应复杂业务场景
- 降低管理成本:通过模板快速应用权限策略,提升管理效率
适用场景
- 敏感字段隐藏:如隐藏成本价、利润等敏感字段不让普通员工查看
- 数据范围隔离:如销售人员只能查看自己负责区域的数据
- 层级数据管控:如下级部门只能查看本部门及下属部门的数据
- 个性化数据视图:不同角色查看不同的数据维度
前提条件
- 具备数据集行列权限的配置权限(数据集所有者 / 管理员)
- 了解数据集的基本概念(参见 术语解释)
数据行列权限入口
配置入口速查表:
| 操作 | 路径 | 说明 |
|---|---|---|
| 配置行列权限 | 数据准备 > 数据集 > 选择数据集 > 数据安全 > 行列权限 | 设置列权限和行权限规则 |
| 使用权限模板 | 管理中心 > 资源管理 > 数据安全模板 > 创建/编辑模板 | 创建可复用的权限规则 |
| 应用权限模板 | 数据准备 > 数据集 > 数据安全 > 行列权限 > 选择模板 | 将模板应用到数据集 |
详细操作步骤:
- 在「数据准备 > 数据集」页面,找到需要处理的目标数据集,点击目标数据集的名称,进入数据集详情页。
- 在数据集详情页,点击「数据安全 > 行列权限」页签,进入行列权限配置页面。

管理员和数据集所有者的行列权限
针对管理员和数据集所有者,系统提供了专门的开关来控制其是否受行列权限影响。
开关位置:在行列权限页面的底部区域。
| 开关状态 | 说明 |
|---|---|
| 关闭(默认) | 管理员和数据集所有者不受行列权限限制,可查看所有数据 |
| 开启 | 管理员和数据集所有者受行列权限限制,只能查看权限范围内的数据 |
- 只有当管理员和数据集所有者被包含在行列权限的「适用对象」中时,此开关设置才会生效
- 开关默认关闭,方便管理员进行数据管理和排查问题 。

列权限设置
列权限用于控制用户不能查看哪些字段信息,如限制普通人员查看成本价字段。
新增列权限
-
在「行列权限」页面,找到「设置列权限」区域,点击「新增」按钮。

-
在「列权限编辑器」页面,配置列权限后点击「确定」。
- 列权限的对象:选择关联用户或用户组。
- 列权限内容:不允许选择的对象查看哪些内容。
- 列权限的备注信息:方便后期快速了解列权限。

-
在「行列权限」页面,打开列权限启用开关,列权限即可生效。

列权限效果示例
以销售员 A 的账号为例:
- 列权限开启前:可查看数据集中的所有字段(如产品名称、销售数量、成本价、销售价)。
- 列权限开启后:无法查看被限制的字段(如成本价),其他字段正常显示。
.png)
多用户组权限说明
当用户属于多个用户组,且不同用户组的列权限不一致时,该用户不能查看的数据是各用户组限制字段的交集。
示例:
- 数据集有 5 个字段:产品名称、销售数量、成本价、客户电话、销售区域
- 用户组 A 限制查看:成本价、客户电话
- 用户组 B 限制查看:客户电话、销售区域
结果:该用户不能查看客户电话(交集),其他字段可见
行权限设置
行权限用于控制用户可以查看每个字段下的哪些记录,如限制华东销售人员只能查看华东区域的数据。
新增行权限
-
在「行列权限」页面,找到「设置行权限」区域,点击「新增」按钮。

-
在「行权限编辑器」页面,配置以下信息:
- 行权限的对象:选择关联用户或用户组。
- 行权限内容:允许上一步选择的对象查看哪些行数据。
- 行权限的备注信息:方便后期快速了解或查找行权限。

行权限内容编辑方式
行权限内容支持两种编辑方式:条件模式和自由模式。
条件模式(推荐)
通过可视化界面配置筛选条件,无需编写代码,适合大多数场景。
支持的条件类型

| 条件类型 | 适用场景 | 说明 |
|---|---|---|
| 选择 | 文本字段 | 直接勾选或批量粘贴条件值,如省份、类别、名称等 |
| 范围 | 数值/日期字段 | 设置大于、小于、为空等条件,日期支持今天、昨天、最近 7 天等,如如零售价、销售量、日期等 |
| 条件 | 文本字段 | 设置等于、包含、以...开始等条件,如省份、类别、名称等 |
| in(用户属性) | 用户相关字段 | 字段值包含某个用户属性,如姓名、工号、部门等 |
| in(全局参数) | 动态参数场景 | 字段值包含某个全局参数值 |
| 以(用户属性)为开始 | 层级字段 | 字段值以某个用户属性值为开头,如部门层级 |
| 以(全局参数)为开始 | 层级字段 | 字段值以某个全局参数值为开头,如部门层级 |
配置完成后,点击「查询语句」按钮可查看生成的 SQL。

自由模式
通过 SQL 语句自定义筛选条件,适合复杂场景。
示例 1:只允许华东销售组查看华东数据。
[大区]="华东"

示例 2:每个销售人员只能查看自己的数据。

- 直连数据集:使用对应数据库类型的 SQL 语法(如 MySQL 使用 MySQL 语法)
- Guan-Index 抽取数据集:使用 SparkSQL 语法
- 如果不确定数据集类型,可在数据集详情页查看「连接方式」信息
其他用户数据可见性设置
对关联对象设置指定可见数据后,可配置其他用户的数据可见性:

可选配置项
| 选项 | 说明 |
|---|---|
| 均不可看 | 未被当前行权限规则覆盖的用户无法查看任何数据 |
| 均可看 | 未被当前行权限规则覆盖的用户可以查看所有数据 |
| 条件模式 | 未被当前行权限规则覆盖的用户只能查看满足指定条件的数据 |
| 自由模式 | 未被当前行权限规则覆盖的用户只能查看满足 SQL 条件的数据 |
- 此设置用于控制未被当前行权限规则覆盖的用户能看到什么数据
- 建议根据业务需求谨慎设置,避免数据泄露
启用行权限
创建行权限后,打开「启用」开关使行权限生效。

行权限效果示例
行权限开启前:销售人员 A 可查看所有大区的数据。
.png)
示例 1:行权限设置为「华东组销售只能看到华东区的数据」。
.png)
行权限开启后,销售人员 A 只能查看华东区的数据。
.png)
示例 2:行权限设置为「销售员只能看到自己的数据」。
.png)
行权限开启后,销售人员 A 只能看到自己的数据。
.png)
多用户组权限说明
当用户属于多个用户组,且不同用户组的行权限不一致时,该用户可以查看的数据是各用户组允许查看数据的并集。
示例:
对于「城市」字段
- 用户组 A 允许查看:上海、杭州
- 用户组 B 允许查看:上海、北京
结果:该用户可以查看上海、杭州、北京 3 个城市的数据
自定义函数设置(高级)
观远数据支持通过自定义函数进行统一权限管理,适合需要将权限与第三方系统集成的场景。
适用场景
- 企业已有独立的权限管理系统,需要与观远 BI 集成
- 权限审批流程需要在第三方系统中完成
- 需要根据复杂的业务规则动态计算用户权限
- 行列权限和用户的关联关系及相关审批审核工作由第三方系统实现
- 此功能需要一定的技术开发能力,建议由技术人员配置
- 普通用户可跳过此章节
配置步骤
- 联系系统管理员获取 system-backend 系统运维页面的访问权限,进入「自定义域函数」。
.png)
- 点击「新增」或「编辑」自定义函数,配置以下信息:
.png)
- 域:选择函数所属域
- 函数名称:输入函数名称
- 调用接口:输入调用的接口名称
- 请求方式:选择接口请求方式(GET/POST 等)
- 超时时长:配置接口超时时间(默认 2s)
- 参数:列出函数的参数、用法、说明和示例
- 安全验证码:可选,用于接口身份验证
- 创建好的函数可在 行权限内容编辑方式-自由模式 中使用。
权限计算规则总结
| 权限类型 | 多用户组计算规则 | 说明 |
|---|---|---|
| 列权限 | 取交集 | 用户不能查看的数据是各用户组限制字段的共同部分 |
| 行权限 | 取并集 | 用户可以查看的数据是各用户组允许查看数据的总和 |
可视化理解
列权限 - 交集(越来越严格)
用户组A限制: [成本价, 客户电话]
用户组B限制: [客户电话, 销售区域]
交集结果: [客户电话] ← 只有共同限制的字段才被限制
行权限 - 并集(越来越宽松)
用户组A允许: [上海, 杭州]
用户组B允许: [上海, 北京]
并集结果: [上海, 杭州, 北京] ← 所有允许的字段都可见
记忆技巧
| 权限类型 | 本质 | 多组叠加 | 结果 |
|---|---|---|---|
| 列权限 | 限制(不能看什么) | 多个限制叠加 | 取交集(最严格) |
| 行权限 | 允许(能看什么) | 多个允许叠加 | 取并集(最宽松) |
一句话记忆:
- 列权限是「限制」,多个限制叠加取交集(越来越严)
- 行权限是「允许」,多个允许叠加取并集(越来越宽)
注意事项
- 权限优先级:列权限和行权限相互独立,同时生效(是「且」的关系,需同时满足)
- 管理员权限:可通过开关控制管理员和数据集所有者是否受行列权限限制,开关默认关闭
- 数据安全模板:可通过 数据权限模板 快速应用权限策略
- 权限生效时间:权限设置后通常立即生效,如遇缓存可尝试刷新页面
- 权限继承:基于当前数据集派生的子数据集或关联数据集,不会自动继承行列权限,需单独配置
常见问题
权限问题排查检查清单
当用户反馈「看不到数据」或「权限不生效」时,请按以下顺序排查:
| 排查顺序 | 检查项 | 检查位置 | 预期结果 |
|---|---|---|---|
| 1 | 功能权限 | 管理中心 > 用户管理 > 角色 | 用户角色有数据集查看权限 |
| 2 | 资源权限 | 数据集 > 权限管理 | 用户对数据集有使用者/所有者权限 |
| 3 | 行权限启用状态 | 数据集 > 数据安全 > 行列权限 | 行权限开关已开启 |
| 4 | 行权限适用对象 | 行权限规则详情 | 用户在「适用对象」列表中 |
| 5 | 行权限条件 | 行权限规则详情 | 条件设置正确,不过于严格 |
| 6 | 列权限设置 | 列权限规则详情 | 未隐藏用户必需的字段 |
| 7 | 管理员开关 | 行列权限页面底部 | 如需要,开启「管理员受行列权限影响」 |
排查技巧
- 先确认用户能打开数据集(说明功能权限和资源权限正常)
- 再确认用户能看到数据内容(说明数据权限正常)
- 如果打开后数据为空,通常是行权限问题
- 如果缺少某些字段,通常是列权限问题
设置的行列权限对数据集所有者没生效
原因:「管理员和数据集所有者受行列权限影响」开关未开启。
解决方案:
- 进入行列权限配置页面
- 找到页面顶部区域的「管理员和数据集所有者受行列权限影响」开关
- 将开关设置为「开启」状态
详见 常见问题。
用户属于多个用户组时权限如何计算
解决方案:
- 列权限:取各用户组限制的交集(最严格)
- 行权限:取各用户组允许的并集(最宽松)
详见 权限计算规则总结。
自由模式 SQL 语句报错
原因:使用了错误的数据集语法。
解决方案:
- 确认数据集类型:
- 在数据集详情页查看「连接方式」
- 显示「直连」则为直连数据集
- 显示「Guan-Index」则为抽取数据集
- 选择正确的 SQL 语法:
- 直连数据集:使用对应数据库语法(如 MySQL、Oracle 等)
- Guan-Index 抽取数据集:使用 SparkSQL 语法
权限设置后普通用户看不到数据
排查步骤:
- 检查权限规则是否已「启用」
- 检查用户是否在权限规则的「适用对象」中
- 检查行权限条件是否设置正确(如条件过于严格可能导致无数据)
- 检查列权限是否隐藏了对用户必要的字段
如何快速为多个数据集设置相同的权限
解决方案:使用 数据权限模板。
- 创建数据安全模板,定义通用的权限规则
- 在多个数据集上应用该模板
- 修改模板时,所有应用的数据集权限同步更新
术语解释
在使用行列权限前,建议了解以下术语:
| 术语 | 解释 |
|---|---|
| 数据集 | 观远 BI 中存储和管理数据的基本单位,可以是数据库表、Excel 文件等数据源 |
| 直连数据集 | 直接连接外部数据库的数据集,实时查询数据,使用对应数据库的 SQL 语法 |
| Guan-Index 抽取数据集 | 将数据抽取到观远 BI 内部存储的数据集,使用 SparkSQL 语法 |
| 用户组 | 一组用户的集合,可以批量管理用户权限 |
| 用户属性 | 系统中预定义的用户信息字段,如姓名、部门、工号等 |
| 全局参数 | 系统中可动态配置的参数值,可用于动态控制权限 |
| 交集 | 多个集合的共同部分。例如:A 组限制字段 1、2,B 组限制字段 2、3,交集是字段 2 |
| 并集 | 多个集合的所有部分。例如:A 组允许上海、杭州,B 组允许上海、北京,并集是上海、杭州、北京 |