01.引言
Apache Superset是一个现代数据探索和数据可视化平台。Superset 可以取代或增强许多团队的专有商业智能工具。Superset与各种数据源很好地集成。可以在不编码的情况下,快速构建自己的分析图表,在几乎支持了所有的常见数据库的基础上,同时提供了以下的特性:
- 用于快速构建图表的无代码界面
- 用于高级查询的强大的、基于 Web 的SQL 编辑器
- 用于快速定义自定义维度和指标的轻量级语义层
- 对几乎所有 SQL数据库或数据引擎的开箱即用支持
- 各种精美的可视化效果 可展示您的数据,从简单的条形图到地理空间可视化
- 轻量级、可配置的缓存层有助于减轻数据库负载
- 高度可扩展的安全角色和身份验证选项
- 用于编程定制的API
- 为扩展而从头开始设计的云原生架构
02.总体分析
2.1 项目地址
官方地址
- GitHub 主仓库: github.com/apache/supe…
- 官方网站: superset.apache.org/
- 官方文档: superset.apache.org/docs/intro
- 开发者门户: superset.apache.org/docs/develo…
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)
- 审批流程集成