什么是 superset
Superset 是 Airbnb 开源的大数据可视化平台,其特性包括:
- backend 支持几乎所有主流的数据库
- 支持复杂的权限控制和管理(OpenId, OAuth 等),满足企业内部不同部门人员对数据的权限要求
- 丰富的可视化展示,支持自定义创建 dashboard,可分享
- 可扩展、细粒度的数据库权限控制,满足不同层级人员对数据库权限的要求
- 数据的展示完全可控,可自定义展示字段、聚合数据、数据源等
- 深度集成 Druid.io
Superset 目前由 Apache 孵化,地址是 github.com/apache/incubator-superset
superset 解决什么问题
由 superset 的特性不难看出 superset 要解决的问题:
- 满足企业内部不同部门对数据的要求:老板、运营、产品、商务
- 细粒度的权限划分和控制,可满足不同层级的人员的不同权限
- 支持各种主流数据库,hbase、mysql、postgres等
- 不同数据不同维度的可视化
- 自定义数据的展示和可视化
下载安装
Superset 由 Python 构建,可使用 pip 安装 pip install superset
,详细信息请参考官方文档 https://superset.incubator.apache.org
, 在此我们重点介绍一下 superset 的使用。
使用 superset
添加数据源
Superset 自带权限管理,在使用之前首先按照官方文档的要求新建超级用户,首次登录使用创建的超级用户即可,之后可以按照自己的需求划分组和用户,权限划分在安全菜单中。
打开 superset 可以看到其菜单分步如下:
superset 支持国际化,可在右上角切换自己熟悉的语言,这里我们以中文为例。
在数据源—>数据库列表中添加需要使用的数据库如下:
SQLAlchemy URI
选项是我们需要填写的数据库连接,superset 使用 mysql 时默认使用 mysqlclient 做驱动连接数据库,而且还提供了 sqlalchemy 的文档连接,mysql://scott:tiger@localhost/foo
,需要注意的如果 passwd 中包含特殊字符,需要进行转义进行 urlquote。
填写成功之后点击测试,如果弹窗显示 Ok 表示连接建立成功,此时可以看到数据库的 tables 会在表单下方出现,点击保存。
如果添加数据库保存报 No module named MySQLdb ,安装 pip install mysql-python
数据库配置成功之后开始配置需要使用的 table,在数据源—>数据表添加需要使用的 table 如下:
保存之后回到 table 页,编辑刚才添加的 table,切换到列列表视图,可以看到 table 中包含的所有的列:
在此可以配置需要查询的字段、聚合字段等。
探索数据
table 配置完成就可以使用 superset 进行数据查询和展示了,在 table 页直接点击 table,进入 table explore 页:
在左侧选项栏依次是:
- 数据源和图表类型
- 查询时间
- group by 语句
- SQL 过滤条件
Time 可选 since 和 until ,表示开始和结束区间,如果图表类型支持自定义信息,还会有图表展示的配置。
配置完成之后点击左上角的 Run query 即可查看结果。
点击左上角 save 可以保存当前的结果为一个 slice,slice 在 superset 中就是一个数据结果集的展示,多个 slice 可以组成一个 dashboard,可以根据不同人员对数据的不同需求建立不同的 dashboard。
常见问题
配置数据库报错
如果配置数据库报点击连接测试无法从 url 获取 password 的错误,UI 上对应的是 object None type 错误,直接跳过保存即可。
csv 导出中文乱码
superset 的导出是可以进行配置的,创建 superset_config.py
改写其 csv 导出的编码
1 | CSV_EXPORT = { |
superset_config.py
必须放置在 PYTHONPATH,也就是 Python os.environ 可以获得的地方
总结
Superset 正在逐步应用到生产环境中,后续会我会根据团队的使用情况继续介绍更多 superset 的使用。