自定义表达式
自定义表达式类似于 Excel、Google Sheets 和 LibreOffice Calc 等电子表格软件中的公式。它们是查询构建器编辑器中的强大工具,可让您提出更复杂的问题。
您也可以直接跳到完整的表达式列表。
用于创建筛选、指标和自定义列的自定义表达式
要使用自定义表达式编辑器,请创建一个**自定义列**(其中自定义表达式用作字段公式来计算新列的值),或者单击**筛选**或**汇总**,然后选择**自定义表达式**。
使用查询构建器时,您可以使用表达式来创建新的
- **自定义列**。您可以使用
[Subtotal] / [Quantity]
来创建一个新列,您可以将其命名为“Item price”。 - **筛选**。表达式
contains([comment], "Metabase")
将筛选出comment
字段包含“Metabase”一词的行。 - **汇总**。也称为指标或聚合。
Share([Total] > 50)
将返回总额大于 50 美元的订单百分比。
输入您的表达式,给它起个名字,然后单击**完成**。如果“完成”按钮是灰色的,请检查您的表达式是否有效,以及您是否已为表达式命名(在表达式编辑器底部输入)。
本页介绍了表达式的基础知识。您可以查看 Metabase 中的完整表达式列表,或者通过教程了解如何在笔记本编辑器中使用自定义表达式。
表达式的类型
表达式有两种基本类型,**聚合**和**函数**。查看完整的表达式列表。
聚合
聚合从多行中取值进行计算,例如求一列中所有值的平均值。聚合函数只能在笔记本编辑器的**汇总**部分使用,因为聚合使用该列所有行的值。因此,虽然您可以使用公式 [Subtotal] + [Tax]
创建一个自定义列,但您_不能_写成 Sum([Subtotal] + [Tax])
,除非您正在创建一个自定义指标表达式(该表达式会将所有的小计和税金加在一起)。
函数
相比之下,函数对列中的每个值执行操作,例如在每个值中搜索一个词 (contains
)、将每个值四舍五入到最接近的整数 (ceil
函数) 等。
函数浏览器
表达式编辑器包含一个函数浏览器,以帮助您找到所需的函数。要查看浏览器,请单击表达式编辑器右侧的 **f**。另请参阅函数和聚合列表。
自动格式化
要格式化表达式,请单击表达式编辑器右侧的自动格式化按钮(大括号中的闪电图标)。
基本数学运算符
对具有数值的数字列(如整数、浮点数和双精度数)使用 +
、-
、*
(乘)、/
(除)。您可以使用括号 (
和 )
对表达式的各部分进行分组。
例如,您可以创建一个新列来计算订单总额和小计之间的差额:[Total] - [Subtotal]
。
要对时间戳列进行数学运算,您可以使用日期函数,例如 dateDiff。
条件运算符
AND
OR
NOT
>
>=
(大于或等于)<
<=
(小于或等于)=
!=
(不等于)
例如,您可以为来自加利福尼亚州或佛蒙特州的客户创建一个筛选:[State] = "CA" OR [State] = "VT"
。
您还可以将条件与 case
函数(别名 if
)一起使用
case([Size] = "L", "LARGE", [SIZE] = "M", "MEDIUM", "SMALL")
参见 case
。
引用其他列
您可以引用当前表中的列,或通过外键关系链接的列。列名应包含在方括号内,如下所示:[列名]
。连接表中的列可以这样引用:[连接表名.列名]
。
引用分段和指标
您可以引用当前选定表中存在的已保存指标和分段。您像引用列一样写出它们,如下所示:[有效的用户会话]
。
筛选表达式和条件
关于筛选表达式和条件的一些注意事项
- 筛选表达式的不同之处在于它们必须返回一个布尔值(即真或假)。例如,您可以写
[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 的文档。