自定义表达式
自定义表达式 类似于 Excel、Google Sheets 和 LibreOffice Calc 等电子表格软件中的公式。它们是查询构建器笔记本编辑器中的强大工具,可让您提出更复杂的问题。
您也可以跳到完整表达式列表。
用于创建筛选器、指标和自定义列的自定义表达式
要使用自定义表达式,请创建自定义列(其中自定义表达式用作字段公式来计算新列的值),或单击筛选器或汇总,然后选择自定义表达式。
使用查询构建器时,您可以使用表达式创建新的
- 自定义列。您可以使用
= [小计] / [数量]
创建一个新列,您可以将其命名为“商品价格”。 - 筛选器。表达式
= contains([评论], "Metabase")
将筛选出评论
字段包含单词“Metabase”的行。 - 汇总。也称为指标或聚合。
= Share([总计] > 50)
将返回总额超过 50 美元的订单百分比。
本页涵盖表达式的基础知识。您可以查看 Metabase 中的完整表达式列表,或浏览一个教程,该教程向您展示如何在笔记本编辑器中使用自定义表达式。
表达式的类型
表达式有两种基本类型:聚合和函数。查看完整表达式列表。
聚合
聚合从多行获取值以执行计算,例如查找列中所有值的平均值。聚合函数只能在笔记本编辑器的汇总部分中使用,因为聚合使用该列中所有行的值。因此,虽然您可以使用公式 [小计] + [税]
创建自定义列,但您不能编写 Sum([小计] + [税])
,除非您正在创建自定义指标表达式(这将把所有小计和税款加在一起)。
函数
相比之下,函数对列中的每个值执行某些操作,例如在每个值中搜索单词 (contains
),将每个值向上舍入到最接近的整数(ceil
函数)等等。
基本数学运算符
在数字列上使用 +
、-
、*
(乘法)、/
(除法)和数值,例如整数、浮点数和双精度数。您可以使用括号 (
和 )
对表达式的各部分进行分组。
例如,您可以创建一个新列来计算订单的总计和小计之间的差额:= [总计] - [小计]
。
要在时间戳列上进行数学运算,您可以使用日期函数,例如dateDiff。
条件运算符
AND
、OR
、NOT
、>
、>=
(大于或等于)、<
、<=
(小于或等于)、=
、!=
(不等于)。
例如,您可以为来自加利福尼亚州或佛蒙特州的客户创建筛选器:= [州] = "CA" OR [州] = "VT"
。
您还可以将条件与 case
函数(别名 if
)一起使用
case([Size] = "L", "LARGE", [SIZE] = "M", "MEDIUM", "SMALL")
请参阅case
。
引用其他列
您可以引用当前表中的列,或引用通过外键关系链接的列。列名应包含在方括号内,如下所示:[列名]
。连接表中的列可以这样引用:[连接表名.列]
。
引用分段和指标
您可以引用当前选定表中存在的已保存指标和分段。您可以使用与列相同的方式写出这些内容,如下所示:[有效用户会话]
。
筛选器表达式和条件
关于筛选器表达式和条件的一些注意事项
- 筛选器表达式的不同之处在于它们必须返回布尔值(真或假)。例如,您可以编写
[小计] + [税] < 100
。Metabase 将查看每一行,将其小计和税款相加,然后检查总和是否大于 100。如果是,则语句评估为真,Metabase 将在结果中包含该行。如果您(不正确地)编写[小计] + [税]
,Metabase 将不知道该怎么做,因为该表达式不会评估为真或假。 - 您可以在
CountIf
和SumIf
聚合的条件部分中使用函数,如下所示: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 版本的文档。