参考来源1:https://www.jianshu.com/p/b02fcea7eb5b
参考来源2:https://www.cnblogs.com/luweilehei/p/10
系统环境:Windows 10
Python:3.7.4
0 Superset 简介
Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。
Superset 的前端主要用到了 React 和 NVD3/D3,而后端则基于 Python 的 Flask 框架和 Pandas、SQLAlchemy 等依赖库,主要提供了这几方面的功能:
- 集成数据查询功能,支持多种数据库,包括 MySQL、PostgresSQL、Oracle、SQL Server、SQLite、SparkSQL 等,并深度支持 Druid。
- 通过 NVD3/D3 预定义了多种可视化图表,满足大部分的数据展示功能。如果还有其他需求,也可以自开发更多的图表类型,或者嵌入其他的 JavaScript 图表库(如 HighCharts、ECharts)。
- 提供细粒度安全模型,可以在功能层面和数据层面进行访问控制。支持多种鉴权方式(如数据库、OpenID、LDAP、OAuth、REMOTE_USER 等)。
Superset 的搭建与使用非常简单,只需要一些 Python 基础,下面先从创建虚拟环境开始。
1 创建虚拟环境
Superset 的依赖包较多,为了避免冲突,需要先搭建虚拟环境,再进行安装,这里推荐使用 Anaconda 自带的 conda 工具创建虚拟环境:
conda create -n superset python=3.6
创建虚拟环境成功后,启动虚拟环境:
activate superset
2 安装Superset
使用豆瓣源安装 Superset:
pip install superset -i https://pypi.douban.com/simple
安装的时候可能会遇到下面的情况:
解决办法:到https://www.lfd.uci.edu/~gohlke/pythonlibs里搜索红色框的whl文件(如果是别的,就搜索对应的),下载后直接通过 pip install
安装即可,如下图:
安装完成后,再继续安装执行安装:pip install superset -i https://pypi.douban.com/simple
如果出现下面这个错误,可以先忽略(我后面使用暂时没发现有异常)
3 安装waitress
为了后面可以正常启动服务,建议要安装一下 waitress:
pip install waitress
接着找到 superset(参考路径C:\Users\zhaosai\.virtualenvs\supersetup-i-tusfW0\Lib\site-packages\superset)下的cil.py 的 debug_run()
函数:
def debug_run(app, port, use_reloader):
app.run(
host='0.0.0.0',
port=int(port),
threaded=True,
debug=True,
use_reloader=use_reloader)
将其改写成并保存:
def debug_run(app, port):
from waitress import serve #使用 waitress 解决 gunicorn 不支持 windows 问题
return serve(
app,
host='0.0.0.0',
port=int(port))
4 初始化
在虚拟环境里执行命令
(1)初始化数据
创建命令
#1.创建管理员账号(执行后按提示输入账号密码邮箱等,输入完后,可能会报错,详见代码末尾说明)
fabmanager create-admin --app superset
#2.cd到superset 根目录,参考路径 C:\Users\zhaosai\.virtualenvs\supersetup-i-tusfW0\Lib\site-packages\superset\bin
#初始化数据库
python superset db upgrade
#初始化角色权限
python superset init
#加载示例数据,加载superset自带数据库文件数据,不需要也可不操作
python superset load_examples
#启动superset服务 默认端口8088, -p 端口号,可指定运行在某端口
python superset runserver -d -p 8079
如果创建管理员账号提交报错 Was unable to import superset Error: cannot import name '_maybe_box_datetimelike' ,那则是因为pandas版本的原因,我们通过pip命令卸载掉较新的版本安装正确的版本就好,如下:
#卸载
pip uninstall pandas
#安装
pip install pandas==0.23.4
上面的命令执行完成后,需要重新执行创建管理员账号的命令。
如果初始化数据库时报错pkg_resources.ContextualVersionConflict: (Flask 0.12.4 (f:\programdata\anaconda3\envs\superset\lib\site-packages), Requirement.parse('Flask>=1.0'), {'Flask-JWT-Extended'})同样卸载
#卸载
pip uninstall Flask
#安装1.2版本
pip install Flask==1.0
如果初始化数据库报错 sqlalchemy.exc.InvalidRequestError: Can't determine which FROM clause to join from, there are multiple FROMS which can join to this entity. Try adding an explicit ON clause to help resolve the ambiguity. 同样卸载
#卸载
pip uninstall SQLAlchemy
#安装1.2版本
pip install SQLAlchemy==1.2
浏览器输入地址:http://locahost:8079即可访问
(2)个性化设置
1)汉化: 进入登陆页面后,右上角可以选择语言,但是选择中文后,汉化程度也是一般。
这里选择中文,并不会保存下来,若要设置默认为中文,可以在 C:\Users\zhaosai\.virtualenvs\supersetup-i-tusfW0\Lib\site-packages\superset\config.py 下BABEL_DEFAULT_LOCALE = 'en' 修改为BABEL_DEFAULT_LOCALE = 'zh'
2)使用mysql数据源:详见下一篇“Superset使用mysql数据源”