SQL 编辑器

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

您还可以使用 Metabot 从自然语言生成 SQL。只需让 Metabot “编写一个 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;

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

您会注意到返回的表格与您使用查询构建器要求按 Created At 日期分组的 Orders 表中 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 方言不匹配,您的数据库将无法运行该查询。

本地查询编辑器旨在读取数据,而非写入数据

本地 SQL 编辑器旨在提问您的数据。请勿将编辑器用于

  • 多语句查询
  • 存储过程和函数调用
  • DDL 语句(如 CREATEALTERDROP

根据您的连接权限,上述某些操作可能有效,但均不受官方支持,我们建议不要将本地查询编辑器用于这些任务。

问题版本历史

对于问题、仪表板模型,Metabase 会保留该项的最近十五个版本。

请参阅历史记录

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

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

Explore results button

SQL 问题中的向下钻取

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

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

缓存结果

请参阅缓存问题策略

了解更多

阅读其他版本的 Metabase 的文档。

这有帮助吗?

感谢您的反馈!
想改进这些文档吗?提出更改。
© . This site is unofficial and not affiliated with Metabase, Inc.