SQL编辑器

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

什么是SQL?

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

即使您不理解SQL或如何使用它,了解Metabase内部SQL的工作原理也是值得的,因为有时其他人会分享可能对您有用的基于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 查询。

格式化前 格式化后
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 保留该项目的先前十五个版本的历史记录。

查看 历史记录

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

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

Explore results button

SQL问题中的钻取

使用SQL创建的视觉化有限钻取功能

  • 您可以通过点击数据点过滤SQL查询的结果,放大时间序列或地图,并使用一些列头操作
  • 您将无法钻取到非聚合记录,更改时间粒度,或按类别或位置拆分。

缓存结果

查看问题缓存策略

了解更多

阅读其他Metabase版本的文档。

想要改进这些文档?提出更改。