自定义表达式

自定义表达式 类似于 Excel、Google Sheets 和 LibreOffice Calc 等电子表格软件中的公式。它们是查询构建器笔记本编辑器中的强大工具,可让您提出更复杂的问题。

您也可以跳到完整表达式列表

用于创建筛选器、指标和自定义列的自定义表达式

要使用自定义表达式,请创建自定义列(其中自定义表达式用作字段公式来计算新列的值),或单击筛选器汇总,然后选择自定义表达式

使用查询构建器时,您可以使用表达式创建新的

  • 自定义列。您可以使用 = [小计] / [数量] 创建一个新列,您可以将其命名为“商品价格”。
  • 筛选器。表达式 = contains([评论], "Metabase") 将筛选出 评论 字段包含单词“Metabase”的行。
  • 汇总。也称为指标或聚合。= Share([总计] > 50) 将返回总额超过 50 美元的订单百分比。

本页涵盖表达式的基础知识。您可以查看 Metabase 中的完整表达式列表,或浏览一个教程,该教程向您展示如何在笔记本编辑器中使用自定义表达式

表达式的类型

表达式有两种基本类型:聚合函数。查看完整表达式列表

聚合

聚合从多行获取值以执行计算,例如查找列中所有值的平均值。聚合函数只能在笔记本编辑器的汇总部分中使用,因为聚合使用该列中所有行的值。因此,虽然您可以使用公式 [小计] + [税] 创建自定义列,但您不能编写 Sum([小计] + [税]),除非您正在创建自定义指标表达式(这将把所有小计和税款加在一起)。

函数

相比之下,函数对列中的每个值执行某些操作,例如在每个值中搜索单词 (contains),将每个值向上舍入到最接近的整数(ceil 函数)等等。

基本数学运算符

在数字列上使用 +-* (乘法)、/ (除法)和数值,例如整数、浮点数和双精度数。您可以使用括号 () 对表达式的各部分进行分组。

例如,您可以创建一个新列来计算订单的总计和小计之间的差额:= [总计] - [小计]

要在时间戳列上进行数学运算,您可以使用日期函数,例如dateDiff

条件运算符

ANDORNOT>>= (大于或等于)、<<= (小于或等于)、=!= (不等于)。

例如,您可以为来自加利福尼亚州或佛蒙特州的客户创建筛选器:= [州] = "CA" OR [州] = "VT"

您还可以将条件与 case 函数(别名 if)一起使用

case([Size] = "L", "LARGE", [SIZE] = "M", "MEDIUM", "SMALL")

请参阅case

引用其他列

您可以引用当前表中的列,或引用通过外键关系链接的列。列名应包含在方括号内,如下所示:[列名]。连接表中的列可以这样引用:[连接表名.列]

引用分段和指标

您可以引用当前选定表中存在的已保存指标分段。您可以使用与列相同的方式写出这些内容,如下所示:[有效用户会话]

筛选器表达式和条件

关于筛选器表达式和条件的一些注意事项

  • 筛选器表达式的不同之处在于它们必须返回布尔值(真或假)。例如,您可以编写 [小计] + [税] < 100。Metabase 将查看每一行,将其小计和税款相加,然后检查总和是否大于 100。如果是,则语句评估为真,Metabase 将在结果中包含该行。如果您(不正确地)编写 [小计] + [税],Metabase 将不知道该怎么做,因为该表达式不会评估为真或假。
  • 您可以在 CountIfSumIf 聚合的条件部分中使用函数,如下所示:CountIf( round([小计]) > 100 OR floor([税]) < 10 )

在筛选器表达式中使用日期

如果您想在筛选器表达式中使用日期,则日期需要遵循 "YYYY-MM-DD" 格式,即年份四位字符,月份和日期各两位字符,用引号 " 括起来,并用短划线 - 分隔。

示例

between([创建时间], "2020-01-01", "2020-03-31") OR [接收时间] > "2019-12-25"

此表达式将返回 创建时间 在 2020 年 1 月 1 日至 2020 年 3 月 31 日之间,或 接收时间 在 2019 年 12 月 25 日之后的行。

表达式列表

请参阅完整表达式列表

有关表达式的教程,请参阅查询构建器中的自定义表达式

阅读其他Metabase 版本的文档。