Apache Superset开发指南:从文档贡献到可视化插件开发
概述
Apache Superset作为一款开源的数据可视化与商业智能工具,其开发过程涉及多个技术环节。本文将深入介绍Superset开发中的关键操作指南,包括文档维护、可视化插件开发、测试策略以及国际化支持等内容。
文档开发与维护
Superset的文档系统基于Docusaurus 2构建,这是一款现代化的静态网站生成器。文档开发环境搭建步骤如下:
-
环境准备:
- 进入项目文档目录
- 安装依赖:
yarn install
- 启动开发服务器:
yarn start
-
构建生产版本:
- 执行构建命令:
yarn build
- 本地预览构建结果:
yarn serve
- 执行构建命令:
文档修改提交时应遵循规范,使用docs:
前缀标识文档相关的提交。
可视化插件开发实战
开发准备
开发Superset可视化插件需要满足以下条件:
- MacOS或Linux操作系统(Windows支持有限)
- Node.js 16环境
- npm 7或8版本
- 熟悉React和npm/Node生态系统
创建Hello World插件
-
初始化开发环境:
npm i -g yo cd superset-frontend/packages/generator-superset npm i npm link
-
创建插件目录结构:
mkdir /tmp/superset-plugin-chart-hello-world cd /tmp/superset-plugin-chart-hello-world
-
运行生成器:
yo @superset-ui/superset
按照提示输入插件信息,生成器会自动创建完整的项目结构。
-
构建与开发:
- 完整构建:
npm run build
- 开发模式(热更新):
npm run dev
- 完整构建:
集成到Superset
-
安装插件:
cd superset-frontend npm i -S /tmp/superset-plugin-chart-hello-world
-
修改主配置文件: 在
MainPreset.js
中添加插件引用和配置:import { SupersetPluginChartHelloWorld } from 'superset-plugin-chart-hello-world'; // ... new SupersetPluginChartHelloWorld().configure({ key: 'ext-hello-world' }),
-
启动开发服务器验证:
npm run dev-server
测试策略详解
后端测试
Superset采用pytest框架进行Python后端测试,推荐使用docker-compose环境:
-
运行完整测试套件:
scripts/tests/run.sh
-
执行单元测试:
pytest ./path_to_test.py
-
Presto/Trino测试: 可通过Docker启动本地Presto服务:
docker run -p 15433:15433 starburstdata/presto:350-e.6
并配置环境变量指向该服务。
前端测试
前端测试基于Jest和Enzyme:
-
运行全部测试:
cd superset-frontend npm run test
-
执行单个测试文件:
npm run test -- path/to/file.js
端到端测试
Superset提供两种e2e测试方案:
-
本地环境测试:
- 启动后端服务
- 构建前端资源
- 运行Cypress测试
-
Docker环境测试:
CYPRESS_CONFIG=true docker compose up
然后在新终端中启动Cypress测试界面。
调试技巧
Flask应用调试
-
配置Docker环境: 修改docker-compose.yaml,添加调试端口和权限。
-
容器内操作:
- 安装调试工具
- 注入debugpy到Flask进程
- 配置IDE连接调试端口
-
Kubernetes环境调试: 需要额外配置Pod安全上下文,并通过端口转发连接调试器。
国际化支持
Superset使用Flask-Babel实现多语言支持:
-
启用语言选择: 在配置文件中添加支持的语言列表:
LANGUAGES = { 'en': {'flag': 'us', 'name': 'English'}, 'zh': {'flag': 'cn', 'name': 'Chinese'}, }
-
翻译工作流程:
- 提取新字符串:
./scripts/translations/babel_update.sh
- 更新翻译文件:
pybabel update
- 编译翻译结果:
pybabel compile
- 提取新字符串:
-
前端翻译处理:
npm run build-translation
代码规范检查
Python代码规范
使用ruff进行代码风格检查:
ruff check path/to/file.py
通过本文介绍的核心开发指南,开发者可以全面掌握Superset项目的关键开发技能,从文档维护到功能扩展,构建高质量的Superset扩展功能。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考