superset详解(二)--sql工具箱

sql编辑器


左侧功能涉及的接口


1. 获取所有的数据源
databaseasync/api/read?_flt_0_expose_in_sqllab=1&_oc_DatabaseAsync=database_name&_od_DatabaseAsync=asc

这里没有权限控制,如果你有进入sql编辑器的权限,就可以获取平台上所有的数据源

2.获取schema
superset/schemas/database_id/              # database_id 数据库的id

这里有权限控制,有三个权限all_database_access(所有的数据库权限), schema_access (某一个数据库的权限), all_datasource_access(访问所有的表的权限)。
1.如果你有all_database_access或者all_datasource_access,那就返回当前数据源下的所有的数据库
2. 如果没有1,如果你有schema_access,那么返回你有权限的那个数据库
3. 如果没有1和2,那么会根据你的datasource_access来确定你有权限的表,然后获取到表所属的数据库 3.如果没有1和2,那么会根据你的datasource_access来确定你有权限的表,然后获取到表所属的数据库

3.获取数据库中所有的表
superset/tables/db_id/schema_name/undefined/

这里的权限控制和获取schema的权限类似:
1.判断是否有当前database的权限或者有all_datasource_access的权限
2.判断是否有获取当前schema的权限
3.获取用户所有有权限的表,如果表的shema字段不为空,则过滤出schema等于当前shema的表,如果schema为空则返回所有的表

4.获取表的结构信息
superset/table/db_id/table_name/schema_name/                  #获取表的基本信息
superset/extra_table_metadata/<database_id>/<table_name>/<schema>/       #获取额外的信息 

获取表的字段,主键,外键,索引


右侧功能涉及的接口


1.sql查询
superset/sql_json

查询sql的时候,有2中,异步和同步。用celery来执行异步任务。默认查询100000条,但是页面只展示1000条记录

2.保存查询
savedqueryviewapi/api/create

在表saved_query中保存了一条查询记录

3.分享查询
kv/store/ 
参数:data: {"dbId":3,"title":"未命名的查询 3","schema":"bi","autorun":false,"sql":"SELECT * from bi_marketing_daily_new_salerecord limit 100;"}
返回值:返回的是记录的ID          

把查询信息保存到表keyvalue中,然后把ID返回给前端

4.可视化

可视化和报表的功能类似,只不过这里如果是普通用户的话,因为没有新建的表的权限,所以不能进入到可视化界面,需要admin账户把表的权限给普通用户才可以。

5.下载CSV
superset/csv/<client_id>

要把权限 can csv on superset 添加到普通用户的角色上才可以下载,如果没有下载权限,会跳转到welcome页面

6. 下载xlsx
supersetext/xlsx/<client_id>

要把权限 can xlsx on supersetext 添加到普通用户的角色上才可以下载,如果没有下载权限,会跳转到welcome页面

上一篇:Superset学习之Ubuntu18.04安装Superset


下一篇:Linux中Superset的安装与使用