You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Qlik Sense中基于位置层级实现Section Access数据级安全

Qlik Sense Section Access配置方案:基于位置层级与用户权限的数据过滤

没问题,我帮你梳理一套完全贴合需求的Qlik Sense Section Access配置方案,覆盖位置层级关联、用户权限过滤,还有离职用户(NULL字段)的特殊场景:

1. 核心规则对齐

先把你的需求拆解确认,确保配置精准匹配:

  • 位置层级链(从低到高):Beed → Jalgaon → Yawatmal → Pune → Maharashtra
  • Level1用户权限:
    • Dharmesh:仅查看Jalgaon及其子节点Beed的数据
    • Mahesh:仅查看Jalgaon及其子节点Nagpur的数据
  • 上级用户Nikhil:查看所有下级位置(Pune、Yawatmal、Jalgaon、Nagpur、Beed)的全部数据,包括下属用户(即使下属用户字段为NULL)

2. 核心表结构设计

你需要准备两个基础映射表,用来支撑权限逻辑:

(1)用户-位置根节点映射表(User_Location_Map)

记录每个用户对应的可访问根位置,同时处理离职用户的归属:

UserIDRootLocation
DharmeshJalgaon
MaheshJalgaon
NikhilMaharashtra
NULLJalgaon

(2)位置层级关系表(Location_Hierarchy)

构建位置的上下级关联,方便递归获取所有子节点:

LocationParentLocation
BeedJalgaon
NagpurJalgaon
JalgaonYawatmal
YawatmalPune
PuneMaharashtra
MaharashtraNULL

3. Section Access脚本实现

把这段脚本放在Qlik Sense数据加载编辑器的最开头(Section Access必须优先加载),注意所有权限字段要大写(Qlik对Section Access字段大小写敏感):

// 启动Section Access权限控制
Section Access;

// 第一步:生成每个用户可访问的所有位置(递归获取子节点)
LOAD
    Upper(UserID) as USERID,  // 统一转大写,避免大小写匹配问题
    Location as LOCATION
;
// 先加载用户-根位置映射
LOAD
    UserID,
    RootLocation as Location
Resident User_Location_Map;

// 递归关联位置层级表,获取所有子位置
Join
LOAD
    ulm.UserID,
    lh.Location
Resident Location_Hierarchy lh
Inner Join (LOAD * Resident User_Location_Map)
LOAD
    ulm.UserID,
    ulm.RootLocation as ParentLocation
Resident User_Location_Map ulm
Where Exists(ParentLocation, lh.ParentLocation);

// 第二步:配置应用访问权限(给用户分配基础访问权限)
LOAD
    Upper(UserID) as USERID,
    'USER' as ACCESS  // 普通用户用USER,管理员可以设为ADMIN
Resident User_Location_Map;

// 结束Section Access,回到业务数据加载
Section Application;

// 加载业务数据时,通过Exists函数过滤用户有权限的位置
LOAD
    Location,
    User,
    // 这里添加你的其他业务字段
    Sales,
    Date
From [你的业务数据源路径]
Where Exists(LOCATION, Location);  // 仅加载用户权限范围内的位置数据

4. NULL用户场景的特殊处理

针对业务数据中User字段为NULL的情况,我们已经通过User_Location_Map里的NULL用户映射确保上级能看到这些数据。如果需要更精准控制,可以在业务数据加载时标记特殊值:

LOAD
    Location,
    If(User is Null, 'INACTIVE_USER', User) as User,
    Sales,
    Date
From [你的业务数据源路径];

5. 验证与注意事项

  • 测试时用对应用户登录:比如Dharmesh登录后,检查是否只能看到Jalgaon和Beed的数据;Nikhil登录后能看到所有下级位置的全部数据
  • 如果使用AD域用户,USERID必须和AD用户名完全一致(比如DOMAIN\DHARMESH,转大写后匹配)
  • 若位置层级更深,可以用循环加载的方式实现递归,确保所有子节点都被包含
  • 记得在Qlik Sense的应用设置里开启“Section Access”权限控制

内容的提问来源于stack exchange,提问作者Ipsita Mahapatra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:41:44