如何导出Superset用户列表及各仪表盘的用户信息?
Superset 1.16.3 用户列表及仪表盘关联用户导出方案
一、导出用户列表
Superset 1.16.3的UI默认没有直接导出用户列表的按钮,可通过以下两种方式实现:
- 调用Superset API:使用
GET /api/v1/security/users/接口获取用户数据,再自行转换为CSV或Excel格式。示例请求(需携带有效授权令牌):curl -X GET "http://your-superset-url/api/v1/security/users/" -H "Authorization: Bearer your-access-token" - 直接查询数据库:用户信息存储在
ab_user表中,执行SQL查询后导出结果:
注:需具备数据库访问权限,部分部署环境表前缀可能有差异,以实际情况为准。SELECT id, username, email, first_name, last_name, is_active FROM ab_user;
二、导出仪表盘对应的用户信息
仪表盘关联的用户信息分为授权用户和访问用户两类,UI无直接导出入口,可通过以下方式获取:
1. 仪表盘授权用户
通过关联权限表查询拥有仪表盘访问权限的用户,SQL示例:
SELECT DISTINCT u.username, u.email FROM ab_user u JOIN ab_user_role ur ON u.id = ur.user_id JOIN ab_role r ON ur.role_id = r.id JOIN ab_permission_view_role pvr ON r.id = pvr.role_id JOIN ab_permission_view pv ON pvr.permission_view_id = pv.id JOIN ab_view_menu vm ON pv.view_menu_id = vm.id WHERE vm.name LIKE 'Dashboard:%' AND pv.permission_id = (SELECT id FROM ab_permission WHERE name = 'can_show') -- 如需指定单个仪表盘,添加条件:AND vm.name = 'Dashboard:your-dashboard-id'
2. 仪表盘访问用户
若Superset开启访问日志(默认开启),可查询logs表获取访问过指定仪表盘的用户,SQL示例:
SELECT DISTINCT u.username, u.email, l.dttm FROM logs l JOIN ab_user u ON l.user_id = u.id WHERE l.action = 'dashboard' AND l.dashboard_id = your-dashboard-id;
注意事项
- 数据库查询操作需确保有对应权限,避免误操作影响系统运行。
- API调用需先通过
/api/v1/security/login/接口获取有效访问令牌。
内容的提问来源于stack exchange,提问作者Jinqi Liu
相关产品推荐
相关产品推荐

