目的
superset是很强大的BI分析框架,有些不满足需求的难免要二次开发,二次开发首先要读懂它的源码,基于此目的把自己阅读代码的一些分析分享给大家,让大家都superset整体的源码有个整体的认识,然后具体到哪块代码的时候,可以快速找到具体分析。
Superset是什么?
Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。
支持的图表类型非常多,如下一部分:
进入正题,源码分析
后台
spuerset 后端采用 Flask-AppBuilder, Sqlachermy, celery,pandas
Flask-AppBuilder: superset 的基本框架,登录验证,权限控制
pandas:数据处理
celery:定时异步任务
sqlachermy: 数据引擎,连接DB
superset源码结构如下:
- bin: 程序的入口文件,可以不关心
- common: 程序共用的代码,暂不关心
- connectors: 数据库连接器,连接数据源有2种类型,通过ConnectorRegistry连接
- migration: superset本身的数据库 升级操作记录
- db_engine_specs,db_engines: 连接其他数据库的engines 比如mysql,pgsql等
- examples: 事例文件,不关心
- models: 数据库模型, Slice, Dashboard
- views: 视图,core.py 存放所有得superset 开头的接口
- tasks: celery 任务脚本
- security: 修改权限入口
- templates, static: 前端相关的模板, 控件代码
- app.py: superset 服务启动,初始化入口
- cli.py: spuerset 命令
- viz.py: 重要,所有得图表类型 后端数据处理入口
- extensions.py: 定义 celery, logger 等中间件 <