⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 极客之家 「丛林」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

昨天在 GitHub 上瞎逛,又发现了个有意思的玩意儿。这次不是又一个前端框架,而是一个让我这种“后端佬”眼前一亮的工具——Shaper。

说实话,现在各种可视化、BI工具多如牛毛,从臃肿的商业软件到各种云上服务。但每次想快速整一个内部看板,过程都差不多:先用 SQL 客户端连上数据库查数据,导出成 CSV,再导入到某个图表工具里,调样式、拉筛选器。一套流程下来,半个上午没了,数据链路还脆得像饼干。

Shaper 的思路,一下就戳中了我。它的核心理念就一句话:既然所有数据最后都能用 SQL 拿到,那为什么不能用 SQL 来定义整个仪表盘?

简介

简单说,Shaper 是一个可以自己部署的、用 SQL 来驱动一切 的数据可视化工具。后端是 Go,前端是 React,整个项目开源,扔在 Docker 里一条命令就能跑起来。

功能特性

广泛的数据源支持

Shaper支持加载几乎我们能想到的所有常见数据源:从本地的CSV、JSON、Parquet、Excel、文本文件,到远程的HTTP文件、Amazon S3存储,再到主流的数据库如PostgreSQL、SQLite、MySQL,当然,还包括其原生引擎DuckDB。

最重要的是,借助DuckDB强大的扩展生态系统,Shaper还能间接读取Snowflake、BigQuery、ClickHouse、Arrow Flight、Iceberg乃至Google Sheets等数据源。这意味着我们可以用一个工具统一访问分散在各处的数据。

动态与可嵌入的交互式仪表盘

Shaper生成的仪表盘是高度动态和交互式的。我们可以轻松添加数据过滤器,让仪表盘上的所有组件联动更新。同时,它支持图表注解,并能灵活显示或隐藏特定部件。

对于希望将分析能力嵌入自己产品的开发者,Shaper提供了JavaScript嵌入式API,允许我们将仪表盘无缝集成到Web应用中,并通过JWT Token机制来管理访问权限,实现安全的内部分享。

自动化与工程化的工作流

Shaper充分考虑到了生产环境的需求。它支持创建定时任务,自动执行SQL脚本,可用于定时拉取远程数据、执行ETL转换或清理历史数据。

更重要的是,整个仪表盘的构建完全基于SQL脚本文件,这使得我们可以像管理代码一样,使用任何文本编辑器来编写和维护,并利用Git进行版本控制,轻松集成到团队的CI/CD(持续集成/持续部署)流水线中。

便捷的分享与导出

分析结果需要被看见。Shaper支持生成可在线分享的仪表盘链接,并可选择设置密码保护,方便安全地与他人协作。

同时,分析结果可以方便地导出为CSV、Excel等数据文件,或直接生成精美的PDF报告,满足不同场景下的汇报需求。

一键部署

Shaper的安装体验非常友好,官方推荐使用Docker进行快速部署,这几乎是最简单的方式。只需一行命令:

docker run --rm -it -p5454:5454 -v ./mydata:/data taleshape/shaper

这条命令会拉取最新镜像,将容器的5454端口映射到本地,并挂载一个本地目录用于持久化数据。执行后,在浏览器中访问 http://localhost:5454/,点击“+ New”即可开始创建我们的第一个可视化仪表盘。

效果展示

我们写完一段 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

文章目录
  1. 1. 简介
  2. 2. 功能特性
    1. 2.1. 广泛的数据源支持
    2. 2.2. 动态与可嵌入的交互式仪表盘
    3. 2.3. 自动化与工程化的工作流
    4. 2.4. 便捷的分享与导出
  3. 3. 一键部署
  4. 4. 效果展示
  5. 5. 开源地址