在表格中搜索
了解如何在使用过滤器和自定义表达式的 SQL 问题和简单问题中进行搜索。在表格中查找单词或短语现在比以往任何时候都更容易。
向问题添加过滤器可以使在问题中搜索文本变得轻而易举。您可以按照本文中的示例,使用每个 Metabase 安装都包含的示例数据库。
在问题中搜索
我们将首先单击浏览数据按钮,选择 示例数据库
,然后打开 产品
表格。
要在问题中搜索,我们使用可自定义的过滤器。我们将单击过滤器按钮,然后在列表中找到我们要按其进行过滤的列。
让我们使用列 标题
。列名称旁边有一个下拉菜单,当前显示为 是
。将出现一个包含文本过滤器选项的弹出窗口,为我们提供
是
不是
包含
不包含
为空
不为空
开头是
结尾是
我们将选择 开头是
并在过滤器侧边栏上的搜索框中键入“rustic”。我们将单击应用过滤器以将过滤器添加到我们的问题中。
应用过滤器后,我们的问题将仅列出以“rustic”开头的产品标题。
更新您的搜索过滤器
现在我们添加了一个过滤器,我们的搜索过滤器位于表格顶部。我们可以单击过滤器描述,其中显示 标题开头是 rustic
。
在弹出窗口中,我们可以使用文本框替换当前搜索词,例如“Marble”。我们还可以通过单击当前显示 开头是
的下拉菜单来更改小部件过滤结果的方式,例如通过将我们的文本过滤器选项更改为 包含
。我们将搜索小部件从 标题开头是 rustic
更新为 标题包含 Marble
,并使搜索区分大小写。
搜索多个值
Metabase 中的过滤器小部件允许您同时搜索多个值。假设我们要按包含“Marble”、“Clock”或“Wallet”的产品过滤结果。我们可以再次单击过滤器描述,键入“Clock”,然后键入逗号(这告诉 Metabase“我已完成键入值,现在将输入另一个值”),然后键入“Wallet”
当您在“包含”过滤器(以及“开头是”和“结尾是”)中使用多个值时,Metabase 将搜索包含这些值中任何一个值的记录(隐式 或
,而不是 与
)。如果您想查找包含所有这些值的记录(例如,包含“Marble”和“Clock”的记录),则需要为每个值添加一个过滤器。或者您可以使用自定义表达式。
使用自定义表达式进行高级搜索
自定义表达式是一种使用数字或文本进行高级查询的方法。假设我们要按产品是 rustic 还是 clocks 来过滤结果。因此,我们想要标题以“Rustic”开头或以“Clock”结尾的记录。
让我们通过再次单击过滤器进行编辑,单击 <,然后在侧边栏底部选择自定义表达式来创建自定义表达式。
如果我们开始键入,我们将看到弹出建议,我们可以在自定义表达式中使用这些建议。
我们将编写如下基本查询:(startsWith([Title] , "Rustic")
)。
startsWith
是我们想要的过滤器类型[Title]
是要过滤的列"Rustic"
是要过滤的术语
我们将添加一个空格并键入 OR
,然后我们将编写另一个文本搜索函数:OR endsWith([Title] , "Clock")
,然后单击完成。
搜索外键
我们可以使用外键基于连接表中的数据搜索表格。为了能够使用字符串以及 ID 号搜索外键,管理员需要更改数据模型设置设置。从主 Metabase 导航栏中,单击齿轮图标以打开管理面板,单击数据模型选项卡,然后选择 示例数据库
。接下来,单击 评论
表格,然后单击 Product_ID
字段旁边的齿轮图标。
在我们的示例中,Product_ID
列设置为外键,具有 搜索框
过滤器设置,以及 标题
的显示值。这样,当我们按 Product_ID
过滤时,我们可以按标题而不是 ID 号进行过滤,并且表格将显示每个产品的标题而不是其 ID 号。
您可以在我们的文档中了解有关编辑元数据的更多信息。
设置元数据后,我们将能够按产品标题过滤评论
- 单击浏览 > 数据库按钮,选择
示例数据库
,然后打开评论
表格。 - 单击过滤器按钮。这将打开过滤器编辑器,其中包含
评论
和产品
表格中的所有列 - 在过滤器编辑器的侧边栏中选择
产品
表格。 - 找到
标题
字段,键入“Practical”,然后在下拉列表中选择一个值,例如“Practical Bronze Computer”。
向 SQL 问题添加搜索小部件
在普通数据库中,我们需要为每个搜索词制作一个新的 SQL 查询,但 Metabase 使搜索我们的数据库变得容易,即使在使用 SQL 查询时也是如此。我们所需要做的就是在查询的 WHERE
子句中插入一个变量。
在主导航栏的右上角,我们将单击铅笔图标以编写 SQL。
SELECT *
FROM REVIEWS
[[WHERE UPPER(Body) LIKE UPPER(CONCAT('%', {{search_term}}, '%'))]]
一旦我们开始在花括号 {{}}
内键入内容,搜索栏将出现在 SQL 输入区域上方,Metabase 将弹出变量侧边栏。
SQL 问题分解
用简单的英语来说,此 SQL 查询表示“显示评论正文包含搜索词的评论,无论两者是否以相同方式大写。”
让我们分解第三行中的元素
[[]]
方括号使过滤器成为可选。如果未向变量提供搜索词,则查询将返回未过滤的行。WHERE
过滤结果。UPPER()
将被搜索的文本和搜索词都大写,因此即使大小写存在差异,它们也会匹配。BODY
是要过滤的列。LIKE
搜索模式。CONCAT()
(concatenate 的缩写)组合字符串。'%'
百分号是通配符。如果位于搜索词之前,则可以在该词之前添加文本。用%
包裹搜索词,即使该词被文本包围,也会搜索该词。{{}}
双花括号包裹一个变量。search_term
过滤器小部件将为其提供文本以进行搜索的变量。
变量侧边栏
变量类型已选择 文本
,但还有其他几个选项
- 数字
- 日期
- 字段过滤器
过滤器既可以复杂又非常有用;查看过滤器小部件和字段过滤器,以了解它们可以通过多种方式提供有价值的见解。
在 变量类型
下方是 过滤器小部件标签
,它会自动使用我们在花括号之间键入的文本作为我们的标签。
有关支持搜索小部件的 SQL 查询的其他示例和建议,请点击侧边栏顶部的帮助选项卡。
下一步:清理和格式化文本
如何使用自定义表达式清理不一致、非结构化或空白的文本。