Superset—开源数据可视化平台

最近有不少数据统计分析的事情,发现公司内网的showx平台真是好用,可是这个系统并没有开源,那么有没有类似的开源产品呢,找了下,发现Superset这个项目还是挺不错的,这里大概讲解下使用方法和效果。

Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。
Superset 的前端主要用到了 ReactNVD3/D3,而后端则基于 Python 的 Flask 框架和 PandasSQLAlchemy 等依赖库,主要提供了这几方面的功能:

  • 集成数据查询功能,支持多种数据库,包括 MySQL、PostgresSQL、Oracle、SQL Server、SQLite、SparkSQL 等,并深度支持 Druid
  • 通过 NVD3/D3 预定义了多种可视化图表,满足大部分的数据展示功能。如果还有其他需求,也可以自开发更多的图表类型,或者嵌入其他的 JavaScript 图表库(如 HighCharts、ECharts)。
  • 提供细粒度安全模型,可以在功能层面和数据层面进行访问控制。支持多种鉴权方式(如数据库、OpenID、LDAP、OAuth、REMOTE_USER 等)。

Superset 的搭建与使用非常简单,只需要一些 Python 基础,下面先从创建虚拟环境开始。

源代码:https://github.com/apache/incubator-superset

#1.安装
# 通过 PyPi 仓库安装 superset
sudo yum upgrade python-setuptools
sudo yum install mysql-devel gcc gcc-c++ gcc-devel libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel
sudo pip install superset mysqlclient

#2.初始化
#创建初始超级用户: admin/123456
fabmanager create-admin --app superset --username admin --password 123456 --firstname admin --lastname admin --email yanjingang@mail.com
#使用默认 sqllite metadata,位于 ~/.superset/superset.db,并根据 migrate 创建表结构
superset db upgrade
#加载 Superset提供的示例数据
superset load_examples
#初始化 role 等
superset init

#3. 启动
superset runserver -d    #-d打开debug 模式;-p指定端口
或
gunicorn -D -w 2 -k gevent --timeout 120 -b  0.0.0.0:8088 --limit-request-line 0 --limit-request-field_size 0 superset:app
-D 后台运行
-w 负载进程数量,通常推荐的worker数量是:(2 x $num_cores) + 1
-k 工作进程类型(gevent是一个基于libev的并发库)
*关闭:pkill gunicorn

#4.访问
http://localhost:8088
admin/123456

#5.创建数据源
点击“数据源 —> 数据库 -> 添加新记录”
SQLAlchemy URI格式为:dialect://user:password@host:port/dbname[?key=value..]
示例:mysql://root:XXXXXXXXXX@127.0.0.1:3306/test?charset=utf8

#6.添加表
点击“数据源 —> 数据表 -> 添加新记录”

#7.创建可视化分析报表
点击“Charts-添加新记录”,选择数据源和表类型后编辑sql和表行业选项并调试即可。
*图标配置方法可参考系统内置的示例报表。

#8.合并多个报表到看板
有时多个报表从不同纬度分析同一个事情,可以在建立报表时选择建到一个看板上,就能在一个页面一起看了。
看板上可以增加filter_box类型的报表做筛选条件(条件不支持设置默认值)。

#9.添加用户/角色/权限

Superset 本身提供了一组基本角色和权限控制:

  • Admin:拥有所有可能的权限,包括从其他用户授予或撤消权限以及更改其他人的切片和 dashboard。
  • Alpha:可以访问所有数据源,但不能授予或撤消其他用户的访问权限。它们也仅限于改变它们拥有的对象。可以添加和更改数据源。
  • Gamma:访问受限,只能使用通过另一个互补角色获得访问权限的数据源。他们只能查看由他们有权访问的数据源制作的切片和 dashboard。无法更改或添加数据源,但可以可以创建切片和 dashboard。
  • sql_lab:被授予对 SQL Lab 的访问权限。
  • public:可以通过在 superset\config.py 设置 PUBLIC_ROLE_LIKE_GAMMA = True,授予该角色与 Gamma 角色相同的权限集。

登录:

添加数据库:

编辑报表:

看板:

这个系统也有些缺点,比如sql工具箱里的自定义sql不能作为charts的数据源,只能选择数据库里的数据表(即数据要预先处理好,不是很灵活)。

如果觉得Superset不太好用,可以拿源码改造一下或者以ECharts为展现组件自己开发一个这样报表系统。不过现在开源的ECharts非常好用,如果是简单的报表直接用ECharts画成本也很低。

yan 19.7.2

参考:

http://superset.apache.org/installation.html

https://www.sohu.com/a/216910767_659643

发表评论

电子邮件地址不会被公开。