自定义表达式
自定义表达式类似于电子表格软件(如Excel、Google Sheets和LibreOffice Calc)中的公式。它们是查询构建器笔记本编辑器中的强大工具,允许您提出更复杂的问题。
您也可以跳转到表达式完整列表。
自定义表达式以创建过滤器、指标和自定义列
要使用自定义表达式,请创建一个自定义列(在此自定义表达式用作字段公式来计算新列的值),或单击过滤器或汇总并选择自定义表达式。
在查询构建器中,您可以使用表达式创建新的
- 自定义列。您可以使用
= [Subtotal] / [Quantity]
创建一个新列,并将其命名为“项目价格”。 - 过滤器。表达式
= contains([comment], "Metabase")
将筛选出包含单词“Metabase”的comment
字段的行。 - 汇总。也称为指标或聚合。
= Share([Total] > 50)
将返回总金额超过50美元的订单百分比。
本页介绍了表达式的基本知识。您可以在Metabase中查看完整表达式列表,或通过教程了解如何在笔记本编辑器中使用自定义表达式。
表达式类型
有两种基本类型的表达式,聚合和函数。查看完整表达式列表。
聚合
聚合从多个行中提取值以执行计算,例如从列中的所有值中找到平均值。聚合函数只能在笔记本编辑器的汇总部分中使用,因为聚合使用该列的所有行的值。因此,虽然您可以创建一个带有公式 [Subtotal] + [Tax]
的自定义列,但不能编写 Sum([Subtotal] + [Tax])
,除非您正在创建一个自定义指标表达式(这将汇总所有子总账和税费)。
函数
函数与聚合相反,对列中的每个值执行某些操作,例如在每个值中搜索单词(contains
),将每个值向上舍入到最接近的整数(ceil
函数)等。
基本数学运算符
在数值列(如整数、浮点数和双精度浮点数)上使用 +
、-
、*
(乘法)、/
(除法)。您可以使用括号,(
和 )
,来分组表达式的部分。
例如,您可以使用以下公式创建一个新列,该列计算订单的总价与子总账之间的差额:= [Total] - [Subtotal]
。
要对时间戳列执行数学运算,您可以使用日期函数,如dateDiff。
条件运算符
AND
、OR
、NOT
、>
、>=
(大于或等于)、<
、<=
(小于或等于)、=
、!=
(不等于)。
例如,您可以创建一个针对加利福尼亚州或佛蒙特州的客户的过滤器:= [State] = "CA" OR [State] = "VT"
。
引用其他列
您可以引用当前表中的列,或通过外键关系链接的列。列名应包含在方括号内,如下所示:[列名]
。连接的表中的列可以如下引用:[连接表名.列名]
。
引用段和指标
您可以根据当前所选表格中存在的已保存的指标和段进行参考。您将这些内容写出来和列一样,例如:[有效用户会话]
。
过滤器表达式和条件
关于过滤器表达式和条件的一些注意事项
- 过滤器表达式与它们必须返回一个布尔值(要么为真,要么为假)不同。例如,您可以编写
[Subtotal] + [Tax] < 100
。Metabase会查看每一行,将其小计和税加起来,然后检查总和是否大于100。如果是,则该语句评估为真,Metabase将包括该行在结果中。如果您(错误地)编写[Subtotal] + [Tax]
,Metabase将不知道如何处理,因为该表达式无法评估为真或假。 - 您可以在
CountIf
和SumIf
聚合的条件部分中使用函数,如下所示:CountIf( round([Subtotal]) > 100 OR floor([Tax]) < 10 )
。
在过滤器表达式中处理日期
如果您想在过滤器表达式中使用日期,则日期需要遵循格式"YYYY-MM-DD"
——即年份用四个字符表示,月份用两个字符表示,日期也用两个字符表示,用引号"
括起来,并由连字符-
分隔。
示例
between([Created At], "2020-01-01", "2020-03-31") OR [Received At] > "2019-12-25"
此表达式会返回那些Created At
在2020年1月1日至2020年3月31日之间,或者Received At
在2019年12月25日之后的行。
表达式列表
查看表达式完整列表。
有关表达式的教程,请参阅查询构建器中的自定义表达式。
阅读Metabase的其他版本文档。