最近在 GitHub 闲逛时,我又发现了一个让人眼前一亮的新项目。这回不是什么花哨的前端框架,而是一个特别对“后端党”胃口的工具——Shaper。
坦白说,现在市面上数据分析(BI)和可视化工具已经很多了,从功能庞杂的商业软件到各式各样的云服务,选择确实不少。但每次想要快速搭建一个内部数据看板,我的操作流程都出奇地一致:先用 SQL 客户端连上数据库,查询数据,导出为 CSV 文件,再导入某个图表工具里调整样式、配置筛选器。这一套“组合拳”打下来,大半个上午就没了,而且整个数据流转过程非常脆弱,像块苏打饼干,轻轻一碰就散架。
Shaper 的出现,让我眼前一亮。它的核心理念简单直接:既然所有数据的最终来源都可以通过 SQL 获取,那为什么不能用 SQL 来定义整个仪表盘呢?
简单来说,Shaper 是一个支持自主部署的开源数据可视化工具,完全由 SQL 驱动。后端用 Go 编写,前端基于 React,整个项目代码完全开放,通过 Docker 一条命令就能快速启动。开发者可以很轻松地加入我们的技术讨论。
1. 丰富的数据源支持
Shaper 几乎能连接我们日常使用的所有数据源:从本地的 CSV、JSON、Parquet、Excel、文本文件,到远程的 HTTP 文件、Amazon S3 存储,再到主流的 PostgreSQL、SQLite、MySQL 等数据库,当然还包括其内置的 DuckDB 引擎。
更有意思的是,借助 DuckDB 强大的扩展生态,Shaper 还能间接访问 Snowflake、BigQuery、ClickHouse、Arrow Flight、Iceberg 乃至 Google Sheets 等数据源。这意味着我们可以通过一个统一入口,轻松访问分散在各个角落的数据。
2. 动态交互的嵌入式仪表盘
Shaper 构建的仪表盘不仅高度动态,交互体验也很流畅。你可以轻松添加筛选条件,让所有图表组件实时联动更新。同时,它支持为图表添加注释,还能灵活控制各个部件的显示与隐藏。

对于想在自己产品中嵌入分析功能的开发者来说,Shaper 提供了 JavaScript 嵌入式 API,可以无缝地将仪表盘集成到 Web 应用中,配合 JWT Token 机制来管理访问权限,实现安全可控的内部分享。
3. 自动化的工作流支持
Shaper 对生产环境的需求考虑得很周到。它支持创建定时任务,自动执行 SQL 脚本,无论是定时拉取远程数据、执行 ETL 转换还是清理历史数据都不在话下。
更关键的是,整个仪表盘的构建完全基于 SQL 脚本文件,这意味着我们可以像管理代码一样,用任意文本编辑器来编写和维护,配合 Git 进行版本控制,轻松融入团队的 CI/CD 流程。

4. 便捷的分享与导出
分析结果只有被看到才有价值。Shaper 支持生成可在线分享的仪表盘链接,并可以设置密码保护,方便又安全地与他人协作。同时,分析结果可以导出为 CSV、Excel 等格式,或直接生成精美的 PDF 报告,满足不同场景的需求。

5. 一键部署体验
Shaper 的部署非常友好,官方推荐的 Docker 方式简单得不能再简单:
docker run --rm -it -p5454:5454 -v ./mydata:/data taleshape/shaper
这条命令会拉取最新镜像,映射端口并挂载本地目录用于数据持久化。启动后,浏览器访问 http://localhost:5454,点击 “+ New” 就能开始创建第一个可视化仪表盘。
6. 直观的使用体验
写段 SQL 查数据,在传统工具里还得手动点选“这里用柱状图”、“那里显示成表格”。但在 Shaper 中,你可以在编辑框里直接告诉它:
SELECT 'Sessions per Week'::LABEL;
SELECT
date_trunc('week', created_at)::XAXIS,
category::CATEGORY,
count()::BARCHART_STACKED,
FROM dataset
GROUP BY ALL ORDER BY ALL;
然后它就会自动生成一个可交互的图表,整个过程行云流水。

开源地址:https://github.com/taleshape-com/shaper
