其实大数据图表展示的这类平台有很多,Superset是其中之一,最近有个需求对各类图表展示的开发较多,索性将工作量交给这个平台。
Superset的中文翻译是快船,而Superset其实是一个自助式数据分析工具,它的主要目标是简化我们的数据探索分析操作,它的强大之处在于整个过程一气呵成,几乎不用片刻的等待。
docker pull amancevice/caravel
docker run --name caravel -d -p 8088:8088 amancevice/caravel
docker exec -it caravel demo
#系统会提示设置管理员
具体效果如下
[root@localhost ~]# docker exec -it ac94ec4d9469 demo
Username [admin]: admin
User first name [admin]: admin
User last name [user]: a
Email [[email protected]]: a
Password:
Repeat for confirmation:
******此处省略几百行
yum makecache
sudo easy_install -i http://pypi.douban.com/simple/ pip
sudo easy_install pip
sudo yum install gcc libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel
#安装Superset
pip install superset
#创建管理员用户名和密码
fabmanager create-admin --app superset
#初始化Superset
superset db upgrade
#装载初始化样例数据
superset load_examples
#创建默认角色和权限
superset init
#启动Superset
superset runserver
数据库 | 命令 | 链接方式 |
---|---|---|
MySQL | pip install mysqlclient | mysql:// |
Postgres | pip install psycopg2 | postgresql+psycopg2:// |
Presto | pip install pyhive | presto:// |
Oracle | pip install cx_Oracle | oracle:// |
sqlite | sqlite:// | |
Redshift | pip install sqlalchemy-redshift | redshift+psycopg2:// |
MSSQL | pip install pymssql | mssql:// |
Impala | pip install impyla | impala:// |
SparkSQL | pip install pyhive | jdbc+hive:// |
因为默认是有权限控制的,即使分享出去的图表也需要登录用户才能看到,那如何做到不登陆用户也能查看图表呢,于是改造之路就开始了。
刚开始没找到方法,不得不从从源码入手解开权限,
https://github.com/apache/incubator-superset/blob/master/superset/views/core.py这个文件
/superset/views/core.py文件922行删掉 @has_access_api注解
@log_this
@has_access_api
@expose("/explore_json///")
def explore_json(self, datasource_type, datasource_id):
try:
viz_obj = self.get_viz(
datasource_type=datasource_type,
1006行删掉 @has_access_api注解
@log_this
@has_access
@expose("/explore///")
def explore(self, datasource_type, datasource_id):
form_data = self.get_form_data()
在1017行加入
viz_obj.datasource.("all_datasource_access")
增加库的访问权限,可能还有些地方要改,该方法改了源码,侵入性强,不推荐。
/superset/config.py第127行
# ---------------------------------------------------
# Roles config
# ---------------------------------------------------
# Grant public role the same set of permissions as for the GAMMA role.
# This is useful if one wants to enable anonymous users to view
# dashboards. Explicit grant on specific datasets is still required.
PUBLIC_ROLE_LIKE_GAMMA = False
将PUBLIC_ROLE_LIKE_GAMMA
改为True,
注释意思
授予公共角色与GAMMA角色相同的权限集。
如果想让匿名用户查看,可以设置这里
在仪表盘对特定数据集的授权显示,也在这里设置。
加入数据库权限这里加入所有数据库权限
Public [can explore on Superset, all database access on all_database_access, can explore json on Superset]
其中
can explore on Superset为导出图表
can explore json on Superset为导出图表json
all database access on all_database_access访问所有数据库权限,也可以设置单个
选择某个切片,点右上角
将iframe放入任意html内即可打开。
借助superset可以帮助我们可视化进行数据库分析,支持导出导入sql语句,支持各种数据库,在图表展现方面是个不错的框架。
觉得好的话,记得关注我哦!
掘金:
https://juejin.im/user/57cd55218ac247006459c40c
Github:
https://github.com/qq273681448