在表格中搜索

学习如何在您的SQL问题和简单问题中使用过滤器自定义表达式进行搜索。现在在您的表中查找单词或短语比以往任何时候都要容易。

将过滤器添加到您的问题中可以使在问题中搜索文本变得轻而易举。您可以使用每个Metabase安装中包含的示例数据库中的示例进行操作。

在问题内搜索

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

要搜索问题内,我们使用可定制的过滤器。我们将点击 过滤器 按钮,然后在列表中找到我们想要过滤的列。

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

  • 不是
  • 包含
  • 不包含
  • 为空
  • 不为空
  • 以...开始
  • 以...结束

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

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

应用过滤器后,我们的问题将只列出以“rustic”开头的商品标题。

更新您的搜索过滤器

现在我们已经添加了过滤器,我们的搜索过滤器位于表的顶部。我们可以点击过滤器描述,它说 标题以 rustic 开始

Close up picture of the question search filter.

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

Using the search widget to change what we

搜索多个值

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

Search with a filter widget

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

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

自定义表达式是一种使用数字或文本进行高级查询的方法。假设我们想要根据是乡村风格还是时钟的产品进行筛选。因此,我们希望记录的标题以“乡村”开头或以“时钟”结尾。

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

如果我们开始键入,我们将在自定义表达式中看到弹出建议。

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主导航栏中,单击齿轮图标打开管理员面板,单击数据模型选项卡,然后选择示例数据库。接下来,单击Reviews表,然后单击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. 单击浏览 > 数据库按钮,选择示例数据库,然后打开Reviews表。
  2. 单击过滤器按钮。这将打开包含ReviewsProducts表所有列的过滤器编辑器。
  3. 在过滤器编辑器的侧边栏中选择Products表。
  4. 找到标题字段,键入“实用”,然后从下拉列表中选择一个值,如“实用青铜电脑”。

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()(简称连接)合并字符串。
  • '%' 百分号是通配符。如果通配符位于搜索词之前,则搜索词之前可以有其他文本。使用%将搜索词包裹起来,即使它被文本包围也可以搜索到。
  • {{}} 双花括号包裹一个变量。
  • search_term 过滤小部件将提供的用于搜索的文本的变量。

变量侧边栏

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

  • 数字
  • 日期
  • 字段过滤器

过滤器可以既复杂又非常有用;查看过滤小部件字段过滤器,了解它们以各种方式提供有价值见解的多种方式。

变量类型下方是过滤小部件标签,它自动使用我们在花括号中键入的文本作为我们的标签。

要获取有关编写支持搜索小部件的SQL查询的示例和建议,请单击侧边栏顶部的帮助标签

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

下一步:清理和格式化文本

如何使用自定义表达式清理不一致、无结构或空的文本。

下一篇文章