Qliksense如何发布应用/工作表至自定义UI并实现行级安全?
非企业版QlikSense嵌入自定义UI与行级安全配置方案
一、报表嵌入自定义UI实现
1. QlikSense桌面版(免费版)
- 桌面版无官方开放的嵌入API,也不支持独立服务发布,可采用导出部署方案:
打开已完成的报表,点击右上角菜单→导出→选择导出为互动HTML,导出的文件包可直接部署到自研应用的静态资源目录,用<iframe>标签直接引用对应HTML路径即可嵌入,互动模式会保留筛选、下钻等原生报表功能
注意:桌面版导出的HTML不支持实时同步,每次报表调整后需要重新导出替换部署
2. QlikSense云免费版
- 云免费版支持官方嵌入能力:
将做好的应用上传到QlikSense云空间,打开要嵌入的报表页,点击右上角分享按钮→选择嵌入功能,设置访问权限后复制生成的<iframe>代码,直接粘贴到自定义UI的对应位置即可
如需限制访问范围,可在分享设置里指定仅添加的邮箱账号可访问,用户打开嵌入页面时需要登录自己的Qlik账号验证身份
二、行级安全配置
无需企业版专属的安全规则功能,直接在应用的数据加载脚本中即可实现行级权限控制:
- 首先维护一张用户权限映射表,必填字段为
经理ID、用户标识(桌面版填用户的Windows系统用户名,云版填用户的Qlik账号邮箱),该表可存在销售数据库中,也可单独存为Excel/CSV文件和销售数据一起加载 - 在数据加载编辑器中添加如下控制脚本:
// 加载权限映射表 UserPermission: LOAD 经理ID, 用户标识 FROM [你的权限表存储路径] (ooxml, embedded labels, table is Sheet1); // 加载销售主数据 SalesData: LOAD 销售订单号, 销售金额, 经理ID, 其他销售字段 FROM [你的销售数据库连接配置]; // 关联两张表实现行级过滤 INNER JOIN (SalesData) LOAD 经理ID RESIDENT UserPermission // 桌面版用OSUser()获取当前系统用户名,云版用AccountEmail()获取当前登录用户的邮箱 WHERE 用户标识 = OSUser();
- 验证逻辑:脚本加载完成后,每个用户打开报表时只会匹配到自己用户标识对应的经理ID,仅加载该经理权限范围内的销售数据,无法查看其他经理的相关数据
- 注意:配置完成后需要重新加载数据生效,不要给普通经理开放数据加载编辑器的编辑权限,避免权限规则被篡改
内容的提问来源于stack exchange,提问作者Sneha
相关产品推荐
相关产品推荐

