SQL 编辑器

如果您需要提出无法使用查询构建器表达的问题,可以使用 SQL 代替。

什么是 SQL?

SQL(发音为“sequel”,有时也发音为 S.Q.L. — 人们对此争论不休)代表结构化查询语言,是一种广泛使用的从数据库获取数据的标准。我们不会尝试现在教您关于 SQL 的所有知识,但要了解更多信息,请查看使用 SQL

即使您不了解 SQL 或如何使用它,也值得了解它在 Metabase 内部的工作原理,因为有时其他人会分享基于 SQL 的问题,这些问题可能对您有用。

开始新的 SQL 查询

在主导航栏中选择 + 新建。如果您有使用 SQL 编辑器的权限,您将在一个小控制台图标旁边看到启动新的 SQL 查询 的选项。

单击 SQL 查询 后,您将看到一个编辑器,您可以在其中用 SQL(或数据库的本机查询语言)编写和运行查询。

SQL editor

要试用它,请确保您已选择示例数据库,然后粘贴此简短的 SQL 查询

SELECT
    sum(subtotal),
    created_at
FROM orders
GROUP BY created_at;

如果您现在还不理解这一点,请不要担心。单击蓝色 运行查询 按钮以执行您的查询。

您会注意到,返回的表与您使用查询构建器请求 订单 表中 小计 的总和,并按 创建于 日期分组时得到的表相同。

运行查询选择

您可以通过在 Windows 和 Linux 上按 ctrl + enter 或在 Mac 上按 ⌘ + return 来运行 SQL 查询。您也可以通过在单击运行按钮或使用运行快捷键之前突出显示要运行的部分来仅运行查询的一部分。

使用 SQL 提出的问题可以像使用查询构建器提出的问题一样保存、下载、转换为模型并添加到仪表板。

您还可以在 SQL 查询中引用模型和已保存的问题

使用 ?? 代替 ? 运算符

如果您在 PostgreSQL 中使用 ? JSON 运算符,请使用等效的 ?? 运算符代替。

这是由于 JDBC 的限制,JDBC 将单个问号 ? 解释为参数占位符。

格式化 SQL 查询

您可以通过单击编辑器侧边栏中的“文档”图标来格式化 SQL 查询。

格式化前 格式化后
a SQL query before formatting a SQL query after formatting

格式化程序仅适用于 SQL 查询,不适用于 SQLite 和 SQL Server。

使用 SQL 筛选器

如果您或其他人编写的 SQL 查询包含变量,则该问题可能会在屏幕顶部的编辑器上方具有筛选器小部件。筛选器小部件允许您在运行 SQL 查询之前修改它,从而更改您可能获得的结果。

SQL filter

编写使用变量或参数的 SQL 查询可能非常强大,但这也有点高级,因此如果您想了解更多,该主题有其自己的页面。

SQL 代码段

您可以使用SQL 代码段来保存、重用和共享 SQL 代码,这些代码可以在使用 SQL 编辑器编写的多个问题中重复使用。

Metabase 如何执行 SQL 查询

当您从 SQL 编辑器运行查询时,Metabase 会将查询完全按照编写的方式发送到您的数据库。Metabase 中显示的任何结果或错误与您直接针对数据库运行查询时获得的结果或错误相同。如果您的查询的 SQL 语法与数据库使用的 SQL 方言不匹配,则您的数据库将无法运行该查询。

问题版本历史记录

对于问题、仪表板模型,Metabase 会为该项目的前 15 个版本保留版本历史记录。

请参阅历史记录

使用查询构建器探索 SQL 问题结果

在没有参数的已保存 SQL 问题上,您将获得 探索结果 按钮。它将创建一个新的查询构建器问题,该问题使用 SQL 问题结果作为数据源。

Explore results button

SQL 问题中的下钻

使用 SQL 创建的可视化效果具有有限的下钻功能

  • 您可以通过单击数据点来筛选 SQL 查询的结果,放大时间序列或地图,并使用一些列标题操作
  • 您将无法向下钻取到未聚合的记录、更改时间粒度或按类别或位置细分。

缓存结果

请参阅缓存问题策略

了解更多

阅读其他Metabase 版本的文档。