ggsql:面向 SQL 的图形语法

查看原文 HN 讨论

文章摘要

Posit(前 RStudio)正式发布了 ggsql 的 alpha 版本——一个把”图形语法”(Grammar of Graphics)框架带入 SQL 世界的可视化工具。它让用户可以直接在 SQL 查询中创建可视化,并能在 Quarto、Jupyter Notebook、Positron 和 VS Code 等多种环境下运行。

ggsql 采用类 SQL 的声明式子句来组织绘图。比如最基础的散点图只需要一行:VISUALIZE bill_len AS x, bill_dep AS y FROM ggsql:penguins DRAW point。它继承了 ggplot2 经典的”图层组合”思想:用户先定义数据到视觉属性的映射(mappings),再叠加绘图图层、坐标轴尺度(scales)、标签(labels)等模块,逐步构建完整图表。此外它新增了一个 PLACE 子句,专门用来放置参考线、文本注释这类不依赖数据的图层,把数据驱动层与字面量注释层清晰分开。

Posit 给出了创造 ggsql 的五大动机:第一,服务那些”以 SQL 为主”、不熟悉 R 或 Python 的数据分析师,让他们也能享受现代可视化;第二,SQL 的声明式与可组合特性天然契合图形语法理念;第三,剥离 R/Python 运行时依赖,简化嵌入和部署;第四,SQL 是当下 LLM 最熟悉的语言之一,便于”自然语言到可视化”的工作流;第五,借助过去 18 年开发 ggplot2 积累的经验,在新的平台上做设计上的革新。

技术上,ggsql 的严格语法结构带来了显著的后端执行优势:例如要把 100 亿条交易数据画成柱状图,引擎只需取每个柱的计数值,无需把整张表拉到客户端。后续路线图包含基于 Rust 的写入器、主题系统、交互能力以及空间数据支持。它定位为 ggplot2 的补充而非替代。

HN 评论精华