apache商业智能系统superset使用报告

2019/7/17 posted in  python 商业智能

最近公司有bi的需求,安排我收集了阿里云的quickbi、apache、airbnb的superset、和metabase系统的资料,个人觉得superset还不错,就来了个简单上手了

supeprset是airbnb开源到apache的商业智能项目,目前正在apache里孵化,以后可能成为apache的顶级项目

项目地址:https://github.com/apache/incubator-superset

bi数据显示面板由数据图表组成,数据图表里的数据来自数据库里的表,数据库里的表来自配置的数据源,关系如下所示

创建数据源

然后在添加数据源界面填上数据库的名称、连接参数

单击保存即可

可选:Expose in SQL Lab单选表示是否可以在Sql Editor调试这个数据源,建议勾上

superset支持的完整的数据源列表参考:https://superset.incubator.apache.org/installation.html#database-dependencies

常用的mysql snakeflow druid都支持

基于数据源创建数据表

数据源建好后,只是表示有可选的数据使用了,具体使用数据源中的那张表需要在superset中创建数据表来表示

然后选择数据源和填写需要操作的表

最后保存就ok了

基于数据表创建图表

在superset中有了数据表后,就可以从这个数据表读取数据生成图表了
比如从下面这个mysql的word_freq表中生成图表

操作如下

然后选择图表使用的数据表,和需要显示成的效果,这里案例就使用表格简单的把数据显示出来了

单击"Create new chart"进行确认进入到表格编辑页面

按照上图操作后,单击Run Query按钮就可以看到生成的数据表格了

这个superset可以生成复杂的查询

然后对这个图表进行保存

就可以在面板中使用这个图表了

基于图表创建bi面板

一般一个bi面板由多个图表组成,可以提前创建多个图表,然后在bi面板中组合使用

然后进入到这个dashboard的编辑模式就可以把图表添加到这个dashboard了

分享面板可以生成访问这个dashboard的url,方便进行交流

用户和权限管理

superset提供了基于角色的权限管理

可以看到这个superset提供了一大堆内置的权限可以使用,权限涉及到两张表:ab_permission、ab_view_menu

superset使用flask内置的has_access, has_access_api装饰实现权限检查
在incubator-superset/superset/security.py中继承了flask默认的权限处理,并在/incubator-superset/superset/__init__.py注册成了默认的权限处理器

查看执行过的sql语句

可以在"Manage" > "Queries"中查看到执行过的sql语句列表,详情就是具体的sql语句了,显示效果如下


可以看到被执行的完整的sql语句

在sql editor中调试sql语句

目录结构

可以看到这个superset源码的目录结构是非常清晰的。

表结构

superset截至本文写完共有51张表,部分效果如下

可以看到这些表的命名还是非常简单、容易理解的

一些注意的点

连接mysql必须指定字符集,否则中文乱码,比如mysql+mysqldb://root:root@127.0.0.1/word_freq?charset=utf8

source venv/bin/activate
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements-dev.txt

FLASK_ENV=development FLASK_APP=superset:app flask run -p 8098 --with-threads --reload --debugger --host=0.0.0.0

可以使用docker启动这个superset,参考:https://superset.incubator.apache.org/installation.html#start-with-docker

参考资料

  1. https://airbnb.io/projects/superset/
  2. https://github.com/apache/incubator-superset
  3. https://www.jianshu.com/p/b02fcea7eb5b