SQL 编辑器
如果您需要提出无法使用查询生成器表达的问题,则可以使用 SQL 代替。
您也可以使用 Metabot 从自然语言生成 SQL。只需让 Metabot 说“写一个 SQL 查询,它会……”并描述您想了解的数据。
什么是 SQL?
SQL(发音为“sequel”,有时也读作 S.Q.L. — 人们对此有争议)代表结构化查询语言,是用于从数据库中检索数据的一种广泛使用的标准。我们现在不会尝试教您 SQL 的所有知识,但要了解更多信息,请参阅 使用 SQL。
即使您不了解 SQL 或如何使用它,了解它在 Metabase 中的工作原理也是值得的,因为有时其他人会分享基于 SQL 的有用问题。
开始新的 SQL 查询
在主导航栏中选择 **+ 新建**。如果您拥有使用 SQL 编辑器的 权限,您将看到一个选项,可以启动一个新的 **SQL 查询**,旁边有一个小控制台图标。
点击 **SQL 查询** 后,您将看到一个编辑器,您可以在其中以 SQL(或您的数据库的本机查询语言)编写和运行查询。

要进行尝试,请确保您已选择 示例数据库,然后粘贴此简短 SQL 查询
SELECT
sum(subtotal),
created_at
FROM orders
GROUP BY created_at;
如果您暂时还不理解,请不要担心。点击蓝色的 **运行查询** 按钮以执行您的查询。
您会注意到,返回的表与您使用 查询生成器 要求计算 Orders 表中的 Subtotal 总计,并按 Created At 日期分组时得到的结果相同。
运行查询选择
您可以通过按 Windows 和 Linux 上的 **ctrl + enter**,或 Mac 上的 **⌘ + return** 来运行 SQL 查询。您还可以通过突出显示想要运行的部分,然后在点击运行按钮或使用运行快捷键来运行查询的一部分。
使用 SQL 提出的问题可以像使用查询生成器提出的问题一样保存、下载、转换为模型并添加到仪表板。
您还可以在 SQL 查询中 引用模型和已保存的问题。
使用 ?? 代替 ? 操作符
如果您在 PostgreSQL 中使用 ? JSON 操作符,请改用等效的 ?? 操作符。
这是因为 JDBC 的限制会将单个问号 ? 解释为参数占位符。
格式化 SQL 查询
您可以通过点击编辑器侧边栏中的“文档”图标来格式化您的 SQL 查询。
格式化前:
select sum(subtotal),
created_at from orders group by created_at;
格式化后:
SELECT
sum(subtotal),
created_at
FROM
orders
GROUP BY
created_at;
格式化器仅适用于 SQL 查询,不适用于 SQLite 和 SQL Server。
使用 SQL 过滤器
如果您或其他人编写的 SQL 查询包含 变量,那么该问题在编辑器上方的屏幕顶部可能会出现过滤器小部件。过滤器小部件允许您在运行查询之前修改 SQL 查询,从而更改您可能获得的结果。

编写使用变量或参数的 SQL 查询可能很强大,但也有些复杂,因此该主题有其自己的页面,如果您想 了解更多。
代码片段
您可以使用 代码片段 在使用 SQL 编辑器构建的多个问题之间保存、重用和共享 SQL 代码。
Metabase 如何执行 SQL 查询
当您从 SQL 编辑器运行查询时,Metabase 会按照编写的原样将查询发送到您的数据库。Metabase 中显示的任何结果或错误与您直接在数据库上运行查询时获得的结果或错误相同。如果查询的 SQL 语法与您的数据库使用的 SQL 方言不匹配,您的数据库将无法运行该查询。
本机查询编辑器用于读取数据,而不是写入数据
本机 SQL 编辑器设计用于查询您的数据。请勿将编辑器用于
- 多语句查询
- 存储过程和函数调用
- DDL 语句(例如
CREATE、ALTER或DROP)
根据您连接的权限,以上某些操作可能有效,但均不受官方支持,我们建议不要将本机查询编辑器用于这些任务。
问题版本历史记录
对于问题、仪表板和模型,Metabase 会保留该项目前十五个版本的版本历史记录。
请参阅 历史记录。
使用查询生成器探索 SQL 问题结果
对于没有 参数 的已保存 SQL 问题,您将获得 **探索结果** 按钮。它将创建一个新的查询生成器问题,该问题使用 SQL 问题结果作为数据源。

SQL 问题中的钻取
使用 SQL 创建的可视化具有有限的 钻取 功能。
- 您可以筛选 SQL 查询的结果,方法是单击数据点,放大时间序列或地图,并使用一些 列标题操作。
- 您将无法钻取到未聚合的记录、更改时间粒度或按类别或位置分组。
缓存结果
请参阅 问题缓存策略。
了解更多
阅读其他版本的 Metabase 的文档。