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;

如果暂时不理解,请不要担心。点击蓝色 运行查询 按钮执行您的查询。

您会注意到返回的表格与您使用查询构建器查询 Orders 表中按 Created At 日期分组的 Subtotal 总和时相同。

运行选定的查询

您可以通过在 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 filter

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

代码片段

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

Metabase 如何执行 SQL 查询

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

问题版本历史

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

请参阅历史记录

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

对于未包含参数的已保存 SQL 问题,您将看到“探索结果”按钮。它将创建一个新的查询构建器问题,该问题使用 SQL 问题结果作为数据源。

Explore results button

SQL 问题中的下钻

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

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

缓存结果

请参阅缓存问题策略

了解更多

阅读其他 Metabase 版本的文档。

© . All rights reserved.