自定义表达式

Custom expression editor

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

您也可以直接跳转到完整的表达式列表

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

要使用自定义表达式编辑器,请创建“自定义列”(其中自定义表达式用作字段公式,用于计算新列的值),或单击“筛选”或“汇总”并选择“自定义表达式”。

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

  • 自定义列。您可以使用 [Subtotal] / [Quantity] 来创建新列,并将其命名为“项目价格”。
  • 筛选器。表达式 contains([comment], "Metabase") 将筛选出 comment 字段包含“Metabase”一词的行。
  • 汇总。也称为度量或聚合。Share([Total] > 50) 将返回总计大于 50 美元的订单百分比。

输入您的表达式,为其命名,然后单击“完成”。如果“完成”按钮显示为灰色,请检查您的表达式是否有效,以及是否已为表达式命名(您可以在表达式编辑器的底部输入名称)。

本页介绍表达式的基础知识。您可以查看 Metabase 中完整的表达式列表,或通过教程了解如何在笔记本编辑器中使用自定义表达式

表达式类型

表达式主要分为两种基本类型:聚合函数。查看完整的表达式列表

聚合

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

函数

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

函数浏览器

Function browser

表达式编辑器包含一个函数浏览器,可帮助您找到所需的函数。要查看浏览器,请单击表达式编辑器右侧的 f。另请参阅函数和聚合列表

自动格式化

Auto-format expression

要格式化表达式,请单击表达式编辑器右侧的自动格式化按钮(带括号的闪电图标)。

基本数学运算符

对包含数字值(如整数、浮点数和双精度数)的数值列使用 +-*(乘法)、/(除法)运算符。您可以使用括号(())来分组表达式的各个部分。

例如,您可以创建一个新列来计算订单的总计和小计之间的差值:[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。如果是,则语句评估为 true,Metabase 将在结果中包含该行。但如果您(错误地)编写 [Subtotal] + [Tax],Metabase 将不知道如何处理,因为该表达式无法评估为真或假。
  • 您可以在 CountIfSumIf 聚合的条件部分中使用函数,例如: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 版本的文档。

© . All rights reserved.