Superset 数据分析平台使用
一、实验介绍
1.1 实验内容
Superset 是 Airbnb 开源的数据分析与可视化平台,同时也是由 Python 语言构建的轻量级 BI 系统。Superset 可实现对 TB 量级数据进行处理,兼容常见的数十种关系或非关系型数据库,并在内部实现 SQL 编辑查询等操作。除此之外,基于 Web 服务的 Superset 可实现多用户协使用,并可针对不同角色进行权限管理。Superset 如今已归属于 Apache 孵化项目,并被 Yahoo,豆瓣等国内外知名公司使用。
1.2 实验知识点
- Superset 平台使用
1.3 实验环境
- python2.7
- Xfce 终端
1.4 适合人群
本课程难度为一般,属于初级级别课程,适合具有 Python 基础,并对数据分析与可视化感兴趣的用户。
二、Superset 简明教程
2.1 Dashboards 看板
当我们登陆 Superset 之后,默认呈现的是看板界面。看板是许多 BI 类工具的必要元素之一,它的作用是将不同类型的图表平铺集中呈现,这些图表甚至可以由不同数据表绘制而来。看板所达到的效果也是显而易见的。
Superset 提供默认提供了 3 个示例看板,分别是:Misc Charts、Birth、World’s Bank Data。我们可以通过下面的动图看到,它集中显示了世界人口变化的一些数据图表。其中包含地图样式、饼状图、散点图、柱状图、词图等。
看板中的图表并不是静态的,它可以实随着数据库的变化时刷新。你可以随意组合、拖动、拼接不同类型的图表。图表是动态可交互。例如图中所示,当我们在 World’s Bank Data 看板中选择特定地区时,看板中的所有图表都会刷新到选定地区的数据。
2.2 Slice 切片
上面,我们介绍了看板,而看板中的图表均是通过 Slice 切片工具绘制。你可以通过顶部菜单栏进入到切片。
切片,实际上就是抽取整个数据库中的特定一块数据,然后针对这块数据进行绘图的过程。通过对数据库切片,我们就可以用不同类型的图表绘制不同维度的数据,从而达到对整个数据集的透视效果。
你可以通过左上角的 + 号新建一个切片。进入之后,需要选取数据表、选取绘制的图类型。界面的下方,是针对数据的一些选项。通过不同的筛选条件,将需求绘制出来。
Superset 目前支持绘制 30 多种不同类型的图表,它们如下图所示。其中,Sankey,Chord Diagram,Word Cloud 等样式的图表都非常不错。
2.2 Sources 数据源
Slice 切片中使用到的数据由 Superset 数据源提供。Superset 数据源实际上就是连接本地数据库。
Superset 安装完成之后,就可以直接连接 SQLite 数据库。但同时也支持连接常见的数据库类型,不过需要安装依赖。相关数据库安装命令如下:
# MySQL 数据库
pip install mysqlclient
# Postgres 数据库
pip install psycopg2
# Presto 数据库
pip install pyhive
# Oracle 数据库
pip install cx_Oracle
# Redshift 数据库
pip install sqlalchemy-redshift
# MSSQL 数据库
pip install pymssql
# Impala 数据库
pip install impyla
# SparkSQL 数据库
pip install pyhive
# Greenplum 数据库
pip install psycopg2
# Athena 数据库
pip install "PyAthenaJDBC>1.0.9"
# Vertica 数据库
pip install sqlalchemy-vertica-python
# ClickHouse 数据库
pip install sqlalchemy-clickhouse
Superset 使用了 SQLAlchemy,使得连接数据库变得非常简单。SQLAlchemy 是 Python 语言下的一款开源软件,它提供了 SQL 工具包及对象关系映射工具。
下面,我们就尝试连接一个数据库,首先你可以先通过下面命令下载 SQLite 数据库文件。示例数据来源于 清华大学开放中文词库。
wget http://labfile.oss.aliyuncs.com/courses/919/THUOCL_IT.sqlite
然后,我们点击顶部数据库菜单,然后通过 + 新建连接。
需要填写数据库名称,然后重点是 SQLAlchemy URI
。这里是 SQLite 数据库,在 Linux 下它的链接如下:
sqlite:home/shiyanlou/THUOCL_IT.sqlite
链接以 sqlite://
开头,后面是数据文件的绝对路径 //home/shiyanlou/THUOCL_IT.sqlite
。
不同类型数据库的 SQLAlchemy URI
开头部分不一致,具体如下:
# MySQL 数据库
mysql://
# Postgres 数据库
postgresql+psycopg2://
# Presto 数据库
presto://
# Oracle 数据库
oracle://
# sqlite 数据库
sqlite://
# Redshift 数据库
postgresql+psycopg2://
# MSSQL 数据库
mssql://
# Impala 数据库
impala://
# SparkSQL 数据库
jdbc+hive://
# Greenplum 数据库
postgresql+psycopg2://
# Athena 数据库
awsathena+jdbc://
# Vertica 数据库
vertica+vertica_python://
# ClickHouse 数据库
clickhouse://
如果你在实际操作中仍然有疑问,可以参考SQLAlchemy URI 官方说明。
填写完 SQLAlchemy URI
之后,可以点击 Test Connection 测试连接是否正确。如果成功链接,页面下方会显示出该数据库对应的表。页面下方的选项,推荐 Expose in SQL Lab
和Allow Run Sync
打√
,其余默认即可。
2.4 SQL 工具箱
Superset 顶部的最后一个菜单为 SQL 工具箱,它提供了针对数据库的 SQL 查询功能。
三、实验总结
Superset 适合与个人或中小企业内部使用的 BI 工具。相比于成熟的商业软件,它开源免费,可以自己根据需求进一步 DIY。基于 Web 的形式非常方便,还可以多用户协同使用。
当然,Superset 也有一些缺点。多标之间的联动操作、过滤条件都比较薄弱,更新迭代慢,这些这都不及商业软件。