开源BI神器Superset 4.x定制化开发系列(一)总体分析

275 阅读4分钟

01.引言

Apache Superset是一个现代数据探索和数据可视化平台。Superset 可以取代或增强许多团队的专有商业智能工具。Superset与各种数据源很好地集成。可以在不编码的情况下,快速构建自己的分析图表,在几乎支持了所有的常见数据库的基础上,同时提供了以下的特性:

  • 用于快速构建图表的无代码界面
  • 用于高级查询的强大的、基于 Web 的SQL 编辑器
  • 用于快速定义自定义维度和指标的轻量级语义
  • 对几乎所有 SQL数据库或数据引擎的开箱即用支持
  • 各种精美的可视化效果 可展示您的数据,从简单的条形图到地理空间可视化
  • 轻量级、可配置的缓存层有助于减轻数据库负载
  • 高度可扩展的安全角色和身份验证选项
  • 用于编程定制API
  • 为扩展而从头开始设计的云原生架构

02.总体分析

2.1 项目地址

官方地址

2.2 开源协议

协议类型

  • 协议: Apache License 2.0
  • 协议文件: 项目根目录的 LICENSE.txt

商业友好性

允许的行为
✓ 商业使用 (Commercial Use)
✓ 修改源码 (Modification)  
✓ 分发 (Distribution)
✓ 私有使用 (Private Use)
✓ 专利授权 (Patent Grant)
✓ 二次开发销售
✓ 闭源分发修改版本

✅ 完全允许的操作

  • 基于 Superset 开发商业产品
  • 修改源码并闭源销售
  • 集成到企业内部系统
  • 提供基于 Superset 的 SaaS 服务

⚠️ 需要注意的事项

  • 在产品中包含 Apache 2.0 许可证声明
  • 如有修改,需要在 NOTICE 或文档中声明
  • 不能直接使用 "Apache Superset" 作为产品名称

2.3 技术栈

2.3.1 前端核心框架

#主要框架
- React: 18+ (UI框架)
- TypeScript: 5+ (类型系统)  
- Redux: 状态管理
- Ant Design: UI组件库
- D3.js: 数据可视化

2.3.2 后端核心框架

# 主要技术栈
- Python: 3.10+ (支持 3.10, 3.11, 3.12)
- Flask: 2.2.5+ (Web 框架)
- SQLAlchemy: 1.4+ (ORM)
- Flask-AppBuilder: 4.8.1+ (管理界面框架)
- Alembic: 数据库迁移工具

2.3.3 数据处理

# 数据处理相关
- Pandas: 2.0.3+ (数据处理)
- NumPy: >1.23.5 (数值计算)
- PyArrow: 16.1.0+ (列式存储)
- Marshmallow: 3.0+ (数据序列化)

2.3.4 异步任务

# 异步处理
- Celery: 5.5.2 (分布式任务队列)
- Redis: 4.6.0+ (消息代理和缓存)
- Kombu: (消息传递库)

2.3.5 数据库支持

# 元数据库(自身数据库)支持
- PostgreSQL: 10.X - 16.X (推荐)
- MySQL: 5.7, 8.X
- SQLite: (仅开发环境)

# 数据源连接器 (50+ 种)
- PostgreSQL, MySQL, SQL Server
- Snowflake, Redshift, BigQuery  
- Spark, Presto, Trino
- ClickHouse, DuckDB, Apache Drill
- Oracle, DB2, Teradata

2.3.6 构建工具

# 构建和工程化
- Webpack: 5+ (模块打包)
- Babel: ES6+ 转换
- ESLint: 代码检查
- Prettier: 代码格式化
- Jest: 单元测试

2.3.7 可视化组件

# 可视化相关
- @superset-ui/core: 核心UI组件
- @superset-ui/chart-controls: 图表控件
- Echarts: 图表库
- Mapbox: 地图可视化
- React-Virtualized: 虚拟滚动

2.3.8 容器化部署

# 容器技术
- Docker: 容器化部署
- Docker Compose: 本地开发环境
- Kubernetes: 生产环境编排
- Helm: K8s 包管理

2.3.9 监控与日志

# 运维相关
- Gunicorn: WSGI服务器
- Nginx: 反向代理
- StatsD: 指标收集
- Sentry: 错误追踪 (可选)

2.4.常见定制化需求

本系列文章将专注用户在使用Superset作为BI工具时,可能遇到的各类定制化场景的二次开发实现。下面是常用场景的概述:

2.4.1 品牌化定制

  • Logo 和品牌色彩
  • 主题样式 (支持 Ant Design 主题)
  • 导航栏和菜单结构
  • 欢迎页面和帮助文档
  • 多语言本地化

2.4.2 功能模块定制

  • 隐藏或修改特定功能菜单
  • 自定义仪表板布局
  • 添加企业特定的工具栏
  • 集成外部系统链接

2.4.3 认证与权限集成

  • LDAP/Active Directory 集成
  • SAML 2.0 认证
  • OAuth 2.0 (Google, GitHub, Azure AD)
  • OIDC (OpenID Connect)
  • 企业内部认证系统

2.4.4 数据源连接定制

  • 内部数据库系统
  • 自研数据仓库
  • 特殊数据格式支持
  • 数据湖连接器

2.4.5 可视化组件扩展

  • 企业特定的图表样式
  • 行业专用可视化组件
  • 3D 可视化图表
  • 实时数据图表
  • 地理信息可视化

2.4.6 工作流程集成

  • ERP 系统数据同步
  • CRM 系统集成
  • 邮件系统集成 (报告推送)
  • 消息系统集成 (钉钉、企微、Slack)
  • 审批流程集成