Superset查询用户报表看板权限

这篇博客分享了两个SQL查询,第一个查询用于获取数据权限信息,包括仪表板标题、ID、数据源ID、权限等,涉及多表联接操作。第二个查询则统计了指定日期用户对看板的访问次数,展示每天的访问次数分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本来想google一下的,结果没找到,写完了就分享出来,方便大家。

SELECT  a.dashboard_title
       ,a.id
       ,c.datasource_id
       ,c.perm
       ,c.schema_perm
       ,h.last_name
FROM dashboards a
LEFT JOIN dashboard_slices b
ON a.id = b.dashboard_id
LEFT JOIN slices c
ON b.slice_id=c.id
JOIN ab_view_menu d
ON d.name=c.schema_perm
JOIN ab_permission_view e
ON e.view_menu_id = d.id
JOIN ab_permission_view_role f
ON f.permission_view_id = e.id
JOIN ab_user_role g
ON g.role_id = f.role_id
JOIN ab_user h
ON h.id = g.user_id AND active = 1
GROUP BY  1
         ,2
         ,3
         ,4
         ,5
         ,6 
union
SELECT  a.dashboard_title
       ,a.id
       ,c.datasource_id
       ,c.perm
       ,c.schema_perm
       ,h.last_name
FROM dashboards a
LEFT JOIN dashboard_slices b
ON a.id = b.dashboard_id
LEFT JOIN slices c
ON b.slice_id=c.id
JOIN ab_view_menu d
ON d.name=c.perm
JOIN ab_permission_view e
ON e.view_menu_id = d.id
JOIN ab_permission_view_role f
ON f.permission_view_id = e.id
JOIN ab_user_role g
ON g.role_id = f.role_id
JOIN ab_user h
ON h.id = g.user_id AND active = 1
GROUP BY  1
         ,2
         ,3
         ,4
         ,5
         ,6;

还有个用户每天看板访问次数的sql

select date_format(a.dttm,'%Y-%m-%d') days,b.last_name, c.dashboard_title ,count(distinct date_format(a.dttm,'%Y-%m-%d %H:%i')) pv
from logs a
join ab_user b on b.id=a.user_id
join dashboards c on c.id = a.dashboard_id 
where a.action = 'dashboard'
and date_format(a.dttm,'%Y-%m-%d')='2021-09-01'
group by 1,2,3

### 导出 Apache Superset 用户权限配置 在Apache Superset中,用户管理和权限控制是由Flask AppBuilder (FAB) 处理的[^2]。为了导出用户组及其对应的权限设置,可以通过以下几种方式实现: #### 方法一:利用API接口 如果部署环境允许访问REST API,则可以直接调用官方提供的API来获取所需的信息。 ```bash curl --location 'http://localhost:8088/api/v1/role/' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' ``` 此命令会返回所有角色以及它们所具有的视图菜单和权限列表。注意替换`YOUR_ACCESS_TOKEN`为实际有效的认证令牌。 #### 方法二:编写Python脚本连接数据库查询 另一种方法是直接操作存储这些信息的关系型数据库表结构。通常情况下,Superset 使用 SQLAlchemy 作为 ORM 工具,并且大多数关系型数据库都支持 SQL 查询语句执行。下面给出一段简单的 Python 脚本来完成这项工作: ```python from sqlalchemy import create_engine import pandas as pd engine = create_engine('postgresql+psycopg2://username:password@host:port/superset') query = """ SELECT r.name AS role_name, p.permission AS permission_name, v.name AS view_menu_name FROM ab_role r JOIN ab_permission_view_role pr ON r.id = pr.role_id JOIN ab_permission p ON pr.permission_id = p.id JOIN ab_view_menu v ON pr.view_menu_id = v.id; """ df = pd.read_sql(query, engine) df.to_csv('./roles_permissions.csv', index=False) print("Export completed.") ``` 这段代码将会把所有的角色名称、权限名及视图菜单保存成CSV文件形式存放在当前目录下名为 `roles_permissions.csv` 的位置上。请根据实际情况修改数据库连接字符串部分的内容以适应自己的安装情况。 #### 方法三:手动记录 对于小型部署或一次性需求来说,也可以考虑登录Web界面逐个查看各个用户组的具体权限分配状况并手工整理出来。不过这种方式效率较低而且容易遗漏细节,在大规模生产环境中并不推荐采用这种方法。 以上就是关于如何导出Apache Superset用户权限设定的方法介绍。希望这些建议能帮助解决遇到的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值