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