数据可视化_企业级BI工具Superset简介

简介

  • 企业级BI工具
  • Superset 是一个数据探索和可视化平台,设计用来提供直观的,可视化的,交互式的分析体验
    最初由Airbnb开源,后面进入Apache 软件基金会孵化项目

特性:

  • 开源, Apache 孵化项目,迭代进度正常,star数量 2w+
  • 可视化方面非常出色,静态的日报、报表,Superset表现力很好
  • 图表类型丰富,有时间序列、GEO地理位置、词汇云、等近50种图表类型
  • 支持数据源丰富,包括Apache Kylin、Clickhouse、Hive
  • 支持数据切片、SQL-Lab
  • 数据能力取决于数据源

项目地址:

看板

  • 由若干图表组成
  • 支持图表大小调整,拖拽
  • 支持加 行、列、Tab组件、Markdown组件、分割线
  • 支持自动刷新、强制刷新;支持设定刷新间隔
  • 支持分享、权限控制

支持图表

支持近50种类型的图表

  • 常规图:柱状体、饼图、折线图、堆积图、趋势图、热力图、箱线图及透视表等等
  • 时间序列:柱状、多折线、周期性Pivot、表、堆积图、事件流、配对t检验,玫瑰图
  • Geo地图类型:基于deck.gl的散点图、屏幕网格图、柱状、六角形,国家/世界地图
  • 力导向图(force Network)
  • 桑基图(Sankey diagrams)
  • 弦图(chord Diagram)
  • 南丁格尔玫瑰图(nightingale rose chart)


支持的数据源

不同的数据源,需要安装相应的python package,见后面的附录表

安装

Superset安装(docker-compose版本)

https://github.com/amancevice/superset

整个Docker包括3部分:1. 元数据 2. Redis缓存 3.Mysql 4. Superset本身
支持SQLLite/PG/MySQL方式的元数据存储

如果想采用MySQL存储Superset的元数据,请务必修改所MySQL表结构里的charcter,默认是latin1(需要先把元数据dump出来,通过命令sed修改一下,再灌入)

1
2
3
4
5
6
7
8
9
10
mkdir -p /data/superset/
# 下载
git clone https://github.com/amancevice/superset.git
cd /data/superset/superset/examples/mysql
# 启动Redis、Mysql、Superset
docker-compose up -d
# Superset本身启动需要几十秒,需要观察下才能执行下一步
docker-compose ps
# 进行初始化,根据提示设置用户名密码
docker-compose exec superset superset-demo

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
version: '3'
services:
redis:
image: redis:3.2
restart: always
volumes:
- redis:/data
mysql:
image: mysql:5
restart: always
environment:
MYSQL_ROOT_PASSWORD: superset
MYSQL_DATABASE: superset
MYSQL_USER: superset
MYSQL_PASSWORD: superset
volumes:
- mysql:/var/lib/mysql
superset:
image: amancevice/superset
restart: always
depends_on:
- mysql
- redis
environment:
MAPBOX_API_KEY: "pk.xxxxxxWQ"
ports:
- "8088:8088"
volumes:
- ./superset_config.py:/etc/superset/superset_config.py
volumes:
mysql:
external: false
redis:
external: false

superset配置文件: superset_config.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
MAPBOX_API_KEY = os.getenv('MAPBOX_API_KEY', 'pk.eyJ1xxxxxxtTGhkFm3KaTf_WQ')
CACHE_CONFIG = {
'CACHE_TYPE': 'redis',
'CACHE_DEFAULT_TIMEOUT': 300,
'CACHE_KEY_PREFIX': 'superset_',
'CACHE_REDIS_HOST': 'redis',
'CACHE_REDIS_PORT': 6379,
'CACHE_REDIS_DB': 1,
'CACHE_REDIS_URL': 'redis://redis:6379/1'}
SQLALCHEMY_DATABASE_URI = 'mysql://superset:superset@mysql:3306/superset'
SQLALCHEMY_TRACK_MODIFICATIONS = True
SECRET_KEY = 'thisISaSECRET_000000'

对于其中的MAPBOX_API_KEY,是为了支持地图GEO类型图表,需要在mapbox 中注册,获得一个api_token,注册地址:https://www.mapbox.com/account/

启动

1
docker-compose up -d

其他的可视化工具

Grafana

  • 用于Graphite,InfluxDB和Prometheus等的精美监控和度量分析和仪表板的工具
  • 时间序列、数据量大、偏监控

Metabase

  • 美观、完成度与更新速度、团队支撑,比较注重非技术人员使用体验
  • 不支持Clickhouse(在16年就提出,到现在还不支持)
  • ClickHouse+ProxySQL = Using ClickHouse like MySQL


参考

附录表:Database dependencies

database pypi package SQLAlchemy URI prefix

MySQL |pip install |mysqlclient |mysql://
Postgres |pip install psycopg2 |postgresql+psycopg2://
Presto |pip install pyhive |presto://
Hive |pip install pyhive |hive://
Oracle |pip install cx_Oracle |oracle://
sqlite | |sqlite://
Snowflake |pip install snowflake-sqlalchemy |snowflake://
Redshift |pip install sqlalchemy-redshift |redshift+psycopg2://
MSSQL |pip install pymssql |mssql://
Impala |pip install impyla |impala://
SparkSQL |pip install pyhive |jdbc+hive://
Greenplum |pip install psycopg2 |postgresql+psycopg2://
Athena |pip install “PyAthenaJDBC>1.0.9” |awsathena+jdbc://
Athena |pip install “PyAthena>1.2.0” |awsathena+rest://
Vertica |pip install sqlalchemy-vertica-python |vertica+vertica_python://
ClickHouse |pip install sqlalchemy-clickhouse |clickhouse://
Kylin |pip install kylinpy |kylin://
BigQuery |pip install pybigquery |bigquery://
Teradata |pip install sqlalchemy-teradata |teradata://

clickhouse+<driver>://<user>:<password>@<host>:<port>/<database>[?key=value..]

参考

https://github.com/apache/incubator-superset

https://github.com/xzkostyan/clickhouse-sqlalchemy

https://superset.incubator.apache.org/visualization.html

http://jackpgao.github.io/2018/05/30/Superset-Introduce/

https://juejin.im/post/596702f7f265da6c23289373

坚持原创技术分享,您的支持将鼓励我继续创作!
分享