教程:在表格中搜索

了解如何通过过滤器和自定义表达式在 SQL 问题和简单问题中进行搜索。现在比以往任何时候都更容易在表格中查找单词或短语。

向问题添加过滤器可以轻松搜索问题中的文本。您可以使用 Metabase 安装中包含的示例数据库中的示例来学习本文中的示例。

在问题中搜索

我们将从点击“**浏览数据**”按钮开始,选择示例数据库,然后打开产品表格。

要在问题中进行搜索,我们会使用可自定义的过滤器。我们将点击“**过滤器**”按钮,并在列表中找到要过滤的列。

让我们使用标题列。列名旁边有一个下拉菜单,当前显示为等于。将出现一个包含“**文本过滤器选项**”的弹出窗口,为我们提供

  • 等于
  • 不等于
  • 包含
  • 不包含
  • 为空
  • 不为空
  • 开头是
  • 结尾是

我们将选择开头是,并在“**过滤器侧边栏**”上的搜索框中输入“rustic”。我们将点击“**应用过滤器**”将过滤器添加到我们的问题中。

Creating a search widget by adding a filter to a question.

应用过滤器后,我们的问题将仅列出以“rustic”开头的elesaian titles。

更新搜索过滤器

现在我们已经添加了过滤器,我们的搜索过滤器位于表格顶部。我们可以点击过滤器描述,该描述显示为标题以 rustic 开头

Close up picture of the question search filter.

在弹出窗口中,我们可以使用文本框替换当前的搜索词,例如用“Marble”。我们还可以通过单击当前显示“**开头是**”的下拉菜单来更改小部件过滤结果的方式,例如,将我们的“**文本过滤器选项**”更改为“**包含**”。我们将搜索小部件从标题以 rustic 开头更新为标题包含 Marble,并使搜索区分大小写。

Using the search widget to change what we

搜索多个值

Metabase 中的过滤器小部件允许您一次搜索多个值。假设我们想按包含“Marble”、“Clock”或“Wallet”的产品过滤结果。我们可以再次单击过滤器描述,输入“Clock”,然后输入逗号(这告诉 Metabase “我已完成一个值的输入,将输入另一个值”),然后输入“Wallet”。

Search with a filter widget

当您在“包含”过滤器(以及“开头是”和“结尾是”)中使用多个值时,Metabase 将搜索包含其中任何*一个*值的记录(隐式,而不是)。如果您想查找包含*所有*这些值的记录(例如,包含“Marble”*和*“Clock”的记录),您需要为每个值添加一个过滤器。或者,您可以使用自定义表达式。

使用自定义表达式的高级搜索

自定义表达式是一种使用数字或文本进行高级查询的方法。假设我们想按产品是乡村的还是时钟来过滤结果。因此,我们想要标题以“Rustic”开头或以“Clock”结尾的记录。

让我们通过再次单击过滤器进行编辑,单击“**<**”,然后在侧边栏底部选择“**自定义表达式**”来创建一个自定义表达式。

如果我们开始输入,我们会看到建议弹出,我们可以在自定义表达式中使用它们。

The Custom Expression sidebar is open and an expression beginning with `contains()` is visible.

我们将基础查询写成如下:(startsWith([Title] , "Rustic"))。

  • startsWith是我们想要的过滤器类型
  • [Title]是要过滤的列
  • "Rustic"是要过滤的术语

我们将添加一个空格并输入OR,然后我们将编写另一个文本搜索函数:OR endsWith([Title] , "Clock"),然后单击“**完成**”。

Creating a Custom Expression that searches through the Title column of the Products table for the words

搜索外键

我们可以使用外键根据连接表中的数据来搜索表。为了能够使用字符串以及 ID 号来搜索外键,管理员需要更改数据模型设置。从主 Metabase 导航栏中,单击“**齿轮图标**”以打开“**管理面板**”,单击“**数据模型**”选项卡,然后选择示例数据库。接下来,单击“**评论**”表,然后单击Product_ID字段旁边的“**齿轮图标**”。

在我们的示例中,Product_ID列被设置为外键,具有搜索框过滤器设置,并且显示值为标题。这样,当我们按标题而不是 ID 号过滤Product_ID时,表格将显示每个产品的标题而不是其 ID 号。

In the data model for the Product_ID field in the Reviews table, the admin has saved the Filtering on this field settings as Search box and the Display values as Title.

您可以在我们的文档中了解有关编辑元数据的更多信息。

设置好元数据后,我们将能够按产品标题过滤评论。

  1. 单击“**浏览 > 数据库**”按钮,选择示例数据库,然后打开“**评论**”表。
  2. 单击“**过滤器**”按钮。这将打开过滤器编辑器,其中包含评论产品表中的所有列。
  3. 在“**过滤器**”编辑器的侧边栏中选择产品表。
  4. 找到标题字段,输入“Practical”,然后从下拉列表中选择一个值,例如“Practical Bronze Computer”。

Creating a search widget for the Reviews table using the title of the product instead of the ID.

为 SQL 问题添加搜索小部件

在普通数据库中,我们需要为每个搜索词编写一个新的 SQL 查询,但 Metabase 可以轻松搜索我们的数据库,即使在使用 SQL 查询时也是如此。我们只需要在查询的WHERE子句中插入一个变量

在主导航栏的右上角,我们将单击“**铅笔图标**”以编写 SQL。

SELECT *
FROM REVIEWS
[[WHERE UPPER(Body) LIKE UPPER(CONCAT('%', {{search_term}}, '%'))]]

一旦我们开始在花括号{{}}内输入,搜索栏将出现在 SQL 输入区域上方,Metabase 将退出变量侧边栏。

The SQL Editor with the example query typed into the SQL text area.

SQL 问题细分

用简单的英语来说,这个 SQL 查询的意思是:“显示评论中包含搜索词的评论,无论两者的大小写是否相同。”

让我们分解第三行的元素。

  • [[]] 这些方括号使过滤器成为可选的。如果未向变量提供搜索词,查询将返回未过滤的行。
  • WHERE 过滤结果。
  • UPPER() 将要搜索的文本和搜索词都转换为大写,因此即使大小写不同,它们也会匹配。
  • BODY 是要过滤的列。
  • LIKE 搜索模式。
  • CONCAT()(concatenate 的缩写)将字符串组合起来。
  • '%' 百分号是通配符。如果放在搜索词前面,则搜索词前面可以有其他文本。将搜索词用%括起来会搜索该词,即使它被文本包围。
  • {{}} 双花括号将变量括起来。
  • search_term 过滤器小部件将提供要搜索的文本的变量。

变量侧边栏

变量类型已选择文本,但还有其他几个选项

  • 数字
  • 日期
  • 字段筛选器

过滤器既复杂又极其有用;请查看过滤器小部件字段过滤器,了解它们能提供宝贵见解的多种方式。

变量类型下方是过滤器标签,它会自动使用我们在花括号之间输入的文本作为我们的标签。

有关支持搜索小部件的 SQL 查询键入的其他示例和建议,请单击侧边栏顶部的“**帮助**”选项卡。

The variable type options, creating a new placeholder for the widget label, and scrolling through the

这有帮助吗?

感谢您的反馈!
订阅新闻通讯
Metabase 的更新和新闻
© . This site is unofficial and not affiliated with Metabase, Inc.