自定义表达式

自定义表达式类似于电子表格软件(如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

条件运算符

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

例如,您可以创建一个针对加利福尼亚州或佛蒙特州的客户的过滤器:= [State] = "CA" OR [State] = "VT"

引用其他列

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

引用段和指标

您可以根据当前所选表格中存在的已保存的指标进行参考。您将这些内容写出来和列一样,例如:[有效用户会话]

过滤器表达式和条件

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

  • 过滤器表达式与它们必须返回一个布尔值(要么为真,要么为假)不同。例如,您可以编写[Subtotal] + [Tax] < 100。Metabase会查看每一行,将其小计和税加起来,然后检查总和是否大于100。如果是,则该语句评估为真,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的其他版本文档

想要改进这些文档? 提出更改。