在表格中搜索

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

向问题添加筛选器可以使在问题中搜索文本变得轻而易举。您可以按照本文中的示例,使用每个 Metabase 安装中包含的示例数据库

在问题中搜索

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

要在问题中搜索,我们使用可自定义的筛选器。我们将点击“筛选器”按钮,并在列表中找到要按其筛选的列。

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

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

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

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

应用筛选器后,我们的问题将只列出以“rustic”开头的产品标题。

更新您的搜索筛选器

现在我们已经添加了筛选器,我们的搜索筛选器位于表格的顶部。我们可以点击筛选器描述,上面写着标题开头是 rustic

Close up picture of the question search filter.

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

Using the search widget to change what we

搜索多个值

Metabase 中的筛选器小部件允许您同时搜索多个值。假设我们想按包含“大理石”、“时钟”或“钱包”的产品来筛选结果。我们可以再次点击筛选器描述,输入“时钟”,然后输入逗号(这告诉 Metabase“我已完成输入一个值,现在将输入另一个值”),然后输入“钱包”

Search with a filter widget

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

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

自定义表达式是一种使用数字或文本进行高级查询的方法。假设我们想要按既是乡村风格又是时钟的产品来筛选结果。因此,我们想要标题以“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列被设置为外键,具有搜索框筛选器设置和标题的显示值。这样,当我们按Product_ID筛选时,我们可以按标题而不是 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

这有帮助吗?

感谢您的反馈!
分析师每周技巧
获取可行的见解
关于 AI 和数据的资讯,直接发送到您的收件箱
© . This site is unofficial and not affiliated with Metabase, Inc.