一. Superset 概述
Superset是Airbnb开源BI数据分析与可视化平台(曾用名Caravel、Panoramix),该工具主要特点是可自助分析、自定义仪表盘、分析结果可视化(导出)、用户/角色权限控制,还集成了一个SQL编辑器,可以进行SQL编辑查询等,原来是用于支持Druid的可视化分析,后面发展为支持很多种关系数据库及大数据计算框架,如:mysql, oracle, Postgres, Presto, sqlite, Redshift, Impala, SparkSQL, Greenplum, MSSQL。整个项目基于Python框架,它集成了Flask、D3、Pandas、SqlAlchemy等。
Github地址:https://github.com/airbnb/superset
官网地址:[http://superset.apache.org/]
二. 架构介绍
2.1 后端
整个项目的后端是基于Python的,用到了Flask、Pandas、SqlAlchemy。
- Flask AppBuilder(鉴权、CRUD、规则
- Pandas(分析)
- SqlAlchemy(数据库ORM)
此外,也关注到Superset的缓存机制值得我们学习:
- 采用memcache和Redis作为缓存
- 级联超时配置
- UI具有时效性控制
- 允许强制刷新
2.2 前端
自然前端是JS的天下,用到了npm、react、webpack,这意味着你可以在手机也可以流畅使用。
- d3 (数据可视化)
- nvd3.org(可重用图表)
2.3 局限性
- Superset的可视化,目前只支持每次可视化一张表,对于多表join的情况还无能为力
- 依赖于数据库的快速响应,如果数据库本身太慢Superset也没什么办法
- 语义层的封装还需要完善,因为druid原生只支持部分sql