在表格中搜索
了解如何使用筛选器和自定义表达式在 SQL 查询和简单查询中进行搜索。现在,在表格中查找单词或短语比以往任何时候都更容易。
为查询添加筛选器可以使查询中的文本搜索变得轻而易举。您可以按照本文中的示例,使用每个 Metabase 安装中包含的示例数据库进行操作。
在查询中搜索
我们首先点击浏览数据按钮,选择示例数据库
,然后打开产品
表。
要在查询中搜索,我们使用可自定义的筛选器。我们将点击筛选按钮,并在列表中找到我们想要筛选的列。
我们使用标题
列。列名旁边有一个下拉菜单,目前显示为是
。将出现一个带有文本筛选选项的弹出窗口,为我们提供
是
不是
包含
不包含
为空
不为空
开头是
结尾是
我们将选择开头是
,并在筛选侧边栏的搜索框中输入“rustic”。我们将点击应用筛选将筛选器添加到我们的查询中。
应用筛选器后,我们的查询将只列出以“rustic”开头的产品标题。
更新您的搜索筛选器
现在我们已经添加了一个筛选器,我们的搜索筛选器位于表格的顶部。我们可以点击筛选器描述,它显示标题开头是 rustic
。
在弹出窗口中,我们可以使用文本框替换当前搜索词,例如替换为“Marble”。我们还可以通过点击当前显示为开头是
的下拉菜单来更改小部件筛选结果的方式,例如将我们的文本筛选选项更改为包含
。我们将搜索小部件从标题开头是 rustic
更新为标题包含 Marble
,并使搜索区分大小写。
搜索多个值
Metabase 中的筛选器小部件允许您同时搜索多个值。假设我们想根据包含“Marble”、“Clock”或“Wallet”的产品来筛选结果。我们可以再次点击筛选器描述,输入“Clock”,然后是逗号(这告诉 Metabase “我已输入完一个值,现在将输入另一个值”),然后是“Wallet”。
当您在“包含”筛选器(以及“开头是”和“结尾是”)中使用多个值时,Metabase 将搜索包含其中任何一个值的记录(隐式Or
,而不是And
)。如果您想查找包含所有这些值的记录(例如同时包含“Marble”和“Clock”的记录),则需要为每个值添加一个筛选器。或者您可以使用自定义表达式。
使用自定义表达式进行高级搜索
自定义表达式是一种进行高级数字或文本查询的方法。假设我们想根据产品是“rustic”或“clocks”来筛选结果。因此,我们想要标题以“Rustic”开头或以“Clock”结尾的记录。
我们再次点击筛选器进行编辑,点击<,然后选择侧边栏底部的自定义表达式来创建自定义表达式。
如果我们开始输入,我们将看到可以用于自定义表达式的建议弹出。
我们将这样编写我们的基本查询:(startsWith([标题] , "Rustic")
)。
startsWith
是我们想要的筛选器类型[标题]
是要筛选的列"Rustic"
是要筛选的词
我们将添加一个空格并输入OR
,然后我们将编写另一个文本搜索函数:OR endsWith([标题] , "Clock")
,然后点击完成。
在外键上搜索
我们可以使用外键根据连接表中的数据来搜索表。为了能够用字符串和 ID 号搜索外键,管理员需要更改数据模型设置。从 Metabase 主导航栏中,点击齿轮图标打开管理面板,点击数据模型选项卡,然后选择示例数据库
。接下来,点击评论
表,然后点击产品ID
字段旁边的齿轮图标。
在我们的示例中,产品ID
列被设置为外键,具有搜索框
筛选设置,显示值为标题
。这样,当我们根据产品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()
将搜索文本和搜索词都转换为大写,因此即使大小写不同也能匹配。正文
是要筛选的列。LIKE
搜索模式。CONCAT()
(concatenate 的缩写)连接字符串。'%'
百分号是一个通配符。如果放在搜索词之前,可以在搜索词之前添加额外文本。用%
包裹搜索词,即使搜索词被文本包围也能找到。{{}}
双花括号包裹一个变量。search_term
筛选小部件将提供文本以供搜索的变量。
变量侧边栏
变量类型已选择文本
,但还有其他几个选项
- 数字
- 日期
- 字段筛选器
筛选器既复杂又非常有用;查看筛选器小部件和字段筛选器,了解它们如何提供有价值的见解。
在变量类型
下方是筛选小部件标签
,它会自动使用我们在花括号之间输入的文本作为标签。
有关支持搜索小部件的 SQL 查询的更多示例和建议,请点击侧边栏顶部的帮助选项卡。
下一篇:清理和格式化文本
如何使用自定义表达式清理不一致、非结构化或空白的文本。