表达式列表
有关表达式的介绍,请参阅自定义表达式概述。
-
函数
-
- concat (连接)
- contains (包含)
- date (日期)
- datetime (日期时间)
- doesNotContain (不包含)
- domain (域名)
- endsWith (以...结尾)
- float (浮点数)
- host (主机)
- isEmpty (是否为空)
- integer (整数)
- lTrim (左修剪)
- length (长度)
- lower (小写)
- notEmpty (是否非空)
- path (路径)
- regexExtract (正则提取)
- replace (替换)
- splitPart (分割)
- rTrim (右修剪)
- startsWith (以...开头)
- subdomain (子域名)
- substring (子字符串)
- text (文本)
- trim (修剪)
- upper (大写)
-
- convertTimezone (转换时区)
- date (日期)
- datetime (日期时间)
- datetimeAdd (日期时间相加)
- datetimeDiff (日期时间差)
- datetimeSubtract (日期时间相减)
- day (天)
- dayName (星期名)
- hour (小时)
- interval (间隔)
- minute (分钟)
- month (月)
- monthName (月份名)
- now (现在)
- quarter (季度)
- quarterName (季度名)
- relativeDateTime (相对日期时间)
- second (秒)
- timeSpan (时间跨度)
- today (今天)
- week (周)
- weekday (工作日)
- year (年)
聚合
聚合表达式会考虑字段中的所有值。它们只能在查询构建器的 **汇总** 部分使用。
Average (平均值)
返回列中值的平均值。
语法: Average(column)
示例: Average([Quantity])
会返回 Quantity
字段的平均值。
Count (计数)
返回所选数据中的行数(也称为记录数)。
语法: Count()
示例: Count()
如果一个表或结果返回 10 行,Count
将返回 10
。
CountIf (条件计数)
仅在条件为真时才对行进行计数。
语法: CountIf(condition)
示例: CountIf([Subtotal] > 100)
会返回小计大于 100 的行数。
Distinct (去重计数)
此列中不同值的数量。
语法: Distinct(column)
示例: Distinct([Last Name])
。返回列中唯一的姓氏数量。重复项(例如姓氏“Smith”)不计算在内。
DistinctIf (条件去重计数)
返回列中条件为真的不同值的数量。
语法: DistinctIf(column, condition)
示例: DistinctIf([ID], [Category] = "Gizmo")
会返回 Category
列为“Gizmo”的唯一 ID 的数量。
Max (最大值)
返回列中找到的最大值。
语法: Max(column)
示例: Max([Age])
会返回 Age
列中所有值中的最大年龄。
Median (中位数)
返回指定列的中位数。
语法: Median(column)
示例: Median([Age])
会找到年龄的中点,即一半的年龄比它大,一半的年龄比它小。
不支持 median
的数据库:Druid, MariaDB, MongoDB, MySQL, SQLite, Vertica, 和 SQL Server。Presto 仅提供近似结果。
Min (最小值)
返回列中找到的最小值。
语法: Min(column)
示例: Min([Salary])
会在 Salary
列中所有薪水中找到最低的薪水。
Percentile (百分位数)
返回列在百分位数处的值。
语法: Percentile(column, percentile-value)
示例: Percentile([Score], 0.9)
会返回该列所有值中第 90 个百分位数的值。
不支持 percentile
的数据库:Druid, H2, MariaDB, MySQL, MongoDB, SQL Server, SQLite, Vertica。Presto 仅提供近似结果。
Share (份额)
以小数形式返回数据中符合条件的行的百分比。
语法: Share(condition)
示例: Share([Color] = "Blue")
会返回 Color
字段设置为 Blue
的行数,再除以总行数。
StandardDeviation (标准差)
计算列的标准差,这是衡量一组值变化程度的指标。低标准差表示值聚集在平均值周围,而高标准差表示值分布在更宽的范围内。
语法: StandardDeviation(column)
示例: StandardDeviation([Population])
会返回 Population
列中值的标准差。
不支持 StandardDeviation
的数据库:Druid, SQLite。
Sum (求和)
将列的所有值相加。
语法: Sum(column)
示例: Sum([Subtotal])
会将 Subtotal
列中的所有值相加。
SumIf (条件求和)
仅在条件为真时对指定列求和。
语法: SumIf(column, condition)
示例:SumIf([Subtotal], [Order Status] = "Valid")
会将状态为“Valid”的订单的所有小计相加。
Variance (方差)
返回给定列的数值方差。
语法: Variance(column)
示例: Variance([Temperature])
将返回一个衡量该列中所有温度与平均温度离散程度的指标。
相关: StandardDeviation, Average。
不支持 Variance
的数据库:Druid, SQLite。
函数
函数表达式适用于每个单独的值。它们可用于更改或筛选列中的值,或创建新的自定义列。
逻辑函数
逻辑函数判断条件是否满足,或根据条件确定返回什么值。
between (介于)
如果日期或数字列的值在指定范围内,则返回 true。否则返回 false。
语法: between(column, start, end)
示例: 如果您使用表达式 between([Created At], "2019-01-01", "2020-12-31")
进行筛选,Metabase 将返回对该表达式返回 true 的行,在本例中是 Created At
日期落在 2019 年 1 月 1 日和 2020 年 12 月 31 日 *之间* 的范围,包括开始日期 (2019-01-01
) 和结束日期 (2020-12-31
)。
相关: interval。
case (条件)
case
(别名 if
) 根据一个条件列表测试一个表达式,并返回第一个匹配条件对应的值,如果没有任何匹配,则可以提供一个可选的默认值。
语法: case(condition, output, …)
示例: case([Weight] > 200, "Large", [Weight] > 150, "Medium", "Small")
如果 Weight
是 250,表达式将返回“Large”。在这种情况下,默认值是“Small”,所以任何小于等于 150 的 Weight
都将返回“Small”。
coalesce (合并)
按顺序查看每个参数中的值,并为每一行返回第一个非空值。
语法: coalesce(value1, value2, …)
示例: coalesce([Comments], [Notes], "No comments")
。如果该行的 Comments
和 Notes
列都为空,则表达式将返回字符串“No comments”。
if (如果)
if
是 case 的别名。根据一个条件列表测试一个表达式,并返回第一个匹配条件对应的值,如果没有任何匹配,则可以提供一个可选的默认值。
语法: if(condition, output, ...)
示例: if([Weight] > 200, "Large", [Weight] > 150, "Medium", "Small")
如果 Weight
是 250,表达式将返回“Large”。在这种情况下,默认值是“Small”,所以任何小于等于 150 的 Weight
都将返回“Small”。
in (在...之中)
如果 value1
等于 value2
(或 value3
等,如果指定),则返回 true。
语法: in(value1, value2, ...)
value1
: 要检查的列或值。value2, ...
: 用于对照检查的列或值的列表。
您可以添加更多要对照检查的值。
示例: in([Category], "Widget", "Gadget")
会为 Category
是“Widget”或“Gadget”的行返回 true。
相关: notIn, contains, startsWith, endsWith
isNull (是否为空)
如果列为空,则返回 true。
语法: isNull(column)
示例: isNull([Tax])
如果该行的列中没有值,则会返回 true。
notNull (是否非空)
如果列中包含值,则返回 true。
语法: notNull(column)
示例: notNull([Tax])
如果该行的列中有值存在,则会返回 true。
notIn (不在...之中)
如果 value1
不等于 value2
(以及 value3
等,如果指定),则返回 true。
语法: notIn(value1, value2, ...)
value1
: 要检查的列或值。value2, ...
: 要查找的列或值。
您可以添加更多要查找的值。
示例: notIn([Category], "Widget", "Gadget")
会为 Category
不是“Widget”或“Gadget”的行返回 true。
数学函数
数学函数实现常见的数学运算。
abs (绝对值)
返回指定列的绝对值(正值)。
语法: abs(column)
示例: abs([Debt])
。如果 Debt
是 -100,abs(-100)
会返回 100
。
ceil (向上取整)
将小数向上舍入(ceil 意为天花板)。
语法: ceil(column)
示例: ceil([Price])
。ceil(2.99)
会返回 3。
exp (指数)
返回欧拉数 e 的所提供数字的次幂。(Euler 的发音类似于“Oy-ler”)。
语法: exp(column)
示例: exp([Interest Months])
相关: power。
floor (向下取整)
将小数向下舍入。
语法: floor(column)
示例: floor([Price])
。如果 Price
是 1.99,表达式将返回 1。
log (对数)
返回数字的以 10 为底的对数。
语法: log(column)
示例: log([Value])
。
power (幂)
将一个数提高到指数值的幂。
语法: power(column, exponent)
示例: power([Length], 2)
。如果长度是 3
,表达式将返回 9
(3 的二次方是 3*3)。
不支持 power
的数据库:SQLite。
相关: exp。
round (四舍五入)
将小数向上或向下舍入到最接近的整数值。
语法: round(column)
示例: round([Temperature])
。如果温度是 13.5
摄氏度,表达式将返回 14
。
示例: round([Temperature] * 10) / 10
。如果温度是 100.75
,表达式将返回 100.8
。
sqrt (平方根)
返回一个值的平方根。
语法: sqrt(column)
示例: sqrt([Hypotenuse])
。
不支持 sqrt
的数据库:SQLite。
相关: power。
字符串函数
字符串函数操作或验证字符串数据。
concat (连接)
将两个或多个字符串连接在一起。
语法: concat(value1, value2, …)
示例: concat([Last Name], ", ", [First Name])
会生成一个格式为“姓, 名”的字符串,如“Palazzo, Enrico”。
contains (包含)
检查 string1
是否包含 string2
。
默认执行区分大小写的匹配。您可以传递一个可选参数 "case-insensitive"
来执行不区分大小写的匹配。
语法: contains(string1, string2)
用于区分大小写的匹配。
contains(string1, string2, "case-insensitive")
用于不区分大小写的匹配。
示例: contains([Status], "Class")
。
如果 Status
是“Classified”,表达式将返回 true
。如果 Status
是“classified”,表达式将返回 false
,因为大小写不匹配。
相关: doesNotContain, regexExtract。
date (日期)
不适用于 Oracle 或非 JDBC 的 Apache Druid 驱动程序。
- 当用于字符串时,将 ISO 8601 日期字符串转换为日期。该字符串*必须*是有效的 ISO 8601 格式。如果字符串包含时间,时间部分将被截断。
- 当用于日期时间值时,将日期时间截断为日期。
语法: date(value)
示例: date("2025-03-20")
会返回一个日期值,以便您可以在查询构建器中使用所有日期功能:按月分组、按过去 30 天筛选等。
ISO 8601 标准格式
- 年 (YYYY): 2025
- 月 (MM): 03
- 日 (DD): 25
- 时间分隔符 (T)
- 小时 (HH): 14
- 分钟 (MM): 30
- 秒 (SS): 45
- UTC 时区指示符 (Z)
有效的 ISO 8601 示例包括
- 仅日期:
2025-03-25
- 带时间的日期:
2025-03-25T14:30:45
- 带时间和时区偏移的日期:
2025-03-25T14:30:45+01:00
另一个例子: date(2025-04-19T17:42:53+01:00)
会返回 2025-04-19
。
相关: datetime
datetime (日期时间)
适用于 PostgreSQL, MySQL/MariaDB, BigQuery, Redshift, ClickHouse, 和 Snowflake
将日期时间字符串或字节转换为日期时间。
语法: datetime(value, mode)
value
: 要转换为日期时间的字符串、字节或数字。mode
: 可选。指示格式的模式。可选值为:"simple"
,"iso"
,"simpleBytes"
,"isoBytes"
,"unixSeconds"
,"unixMilliseconds"
,"unixMicroseconds"
,"unixNanoseconds"
。默认为"iso"
。
示例: datetime("2025-03-20 12:45:04")
datetime
支持以下日期时间字符串格式
2025-05-15T22:20:01
2025-05-15 22:20:01
但一些数据库也可能支持其他日期时间格式。
相关: date
doesNotContain (不包含)
检查 string1
是否包含 string2
。
默认执行区分大小写的匹配。您可以传递一个可选参数 "case-insensitive"
来执行不区分大小写的匹配。
语法: doesNotContain(string1, string2)
用于区分大小写的匹配。
doesNotContain(string1, string2, "case-insensitive")
用于不区分大小写的匹配。
示例: doesNotContain([Status], "Class")
。如果 Status
是“Classified”,表达式将返回 false
。
相关: contains, regexExtract。
domain (域名)
从 URL 或电子邮件中提取域名。
语法: domain(urlOrEmail)
示例: domain([Page URL])
。如果 [Page URL]
列的值为 https://metabase.net.cn
,domain([Page URL])
将返回 metabase
。domain([Email])
将从 hello@metabase.com
中提取 metabase
。
endsWith (以...结尾)
如果文本的结尾与比较文本匹配,则返回 true。
默认执行区分大小写的匹配。您可以传递一个可选参数 "case-insensitive"
来执行不区分大小写的匹配。
语法: endsWith(text, comparison)
用于区分大小写的匹配。
endsWith(text, comparison, "case-insensitive")
用于不区分大小写的匹配。
示例: endsWith([Appetite], "hungry")
相关: startsWith, contains, doesNotContain。
float (浮点数)
适用于 PostgreSQL, MySQL/MariaDB, BigQuery, Redshift, ClickHouse, 和 Snowflake。
将字符串转换为浮点数值。如果您的数据以字符串形式存储,但您想对数字进行一些数学运算,这很有用。
语法: float(value)
示例: float("123.45")
会返回 123.45
作为浮点数值。
host (主机)
从 URL 或电子邮件中提取主机,即域名和顶级域名 (TLD)。
语法: host(urlOrEmail)
示例: host([Page URL])
。如果 [Page URL]
列的值为 https://metabase.net.cn
,host([Page URL])
将返回 metabase.com
。host([Email])
将从 hello@metabase.com
中提取 metabase.com
。
isEmpty (是否为空)
如果*字符串列*包含空字符串或为 null,则返回 true。在非字符串列上调用此函数将导致错误。您可以使用 isNull 来处理非字符串列。
语法: isEmpty(column)
示例: isEmpty([Feedback])
如果 Feedback
是一个空字符串 (''
) 或没有值,则返回 true。
integer (整数)
仅适用于 BigQuery, ClickHouse, MySQL, PostgreSQL, Amazon Redshift, 和 Snowflake。
- 将字符串转换为整数值。如果您的数据以字符串形式存储,但您想对数字进行一些数学运算,这很有用。
- 通过将其四舍五入为整数来转换浮点数值。
语法: integer(value)
字符串示例: integer("123")
会返回 123
作为整数。该字符串必须能计算为整数(所以 integer("123.45")
会返回错误)。
浮点数示例: integer(123.45)
会返回 123
。
相关: round。
lTrim (左修剪)
从文本字符串中移除前导空白。
语法: lTrim(text)
示例: lTrim([Comment])
。如果评论是 " I'd prefer not to"
,lTrim
会返回 "I'd prefer not to"
。
length (长度)
返回文本中的字符数。
语法: length(text)
示例: length([Comment])
。如果 comment
是“wizard”,length
会返回 6(“wizard”有六个字符)。
lower (小写)
返回全部小写的文本字符串。
语法: lower(text)
示例: lower([Status])
。如果 Status
是“QUIET”,表达式将返回“quiet”。
相关: upper。
notEmpty (是否非空)
如果*字符串列*包含一个非空字符串的值,则返回 true。在非字符串列上调用此函数将导致错误。您可以在非字符串列上使用 notNull。
语法: notEmpty(column)
示例: notEmpty([Feedback])
如果 Feedback
包含一个非空字符串 (''
) 的值,则返回 true。
path (路径)
从 URL 中提取路径名。
语法: path(url)
示例: path([Page URL])
。例如,path("https://www.example.com/path/to/page.html?key1=value")
会返回 /path/to/page.html
。
regexExtract (正则提取)
⚠️
regexExtract
在 MongoDB、SQLite 和 SQL Server 中不可用。对于 Druid,regexExtract
仅适用于 Druid-JDBC 驱动程序。
根据正则表达式提取匹配的子字符串。
语法:regexExtract(text, regular_expression)
示例:regexExtract([Address], "[0-9]+")
不支持 regexExtract
的数据库:H2、SQL Server、SQLite。
相关:contains、doesNotContain、substring。
replace (替换)
将输入文本中所有出现的搜索文本替换为替换文本。
语法:replace(text, find, replace)
示例:replace([Title], "Enormous", "Gigantic")
splitPart (分割)
在 PostgreSQL、MySQL/MariaDB、BigQuery、Redshift、Clickhouse 和 Snowflake 中可用
在指定的分隔符上拆分字符串并返回第 n 个子字符串。
语法:splitPart(text, delimiter, position)
text
:要返回其一部分的列或文本。
delimiter
:描述每次拆分应在何处发生的模式。
position
:拆分后要返回哪个子字符串。索引从位置 1 开始。
示例:splitPart([Date string], " ", 1)
。如果 Date string
的值为 "2024-09-18 16:55:15.373733-07"
,splitPart
会返回 "2024-09-18"
,因为它按空格 (" "
) 拆分数据,并取第一部分(索引为 1 的子字符串)。
另一个示例:splitPart("First name, Middle Name, Last name", ", ", 3)
会返回 "Last Name"
(因为我们使用逗号和空格 ", "
作为分隔符将字符串拆分为多个部分,并取第三个子字符串)。
rTrim (右修剪)
从文本字符串中移除尾部空白。
语法:rTrim(text)
示例:rTrim([Comment])
。如果评论是“Fear is the mindkiller. ”,该表达式将返回“Fear is the mindkiller.”
startsWith (以...开头)
如果文本的开头与比较文本匹配,则返回 true。默认执行区分大小写的匹配。您可以传递一个可选参数 "case-insensitive"
来执行不区分大小写的匹配。
语法:startsWith(text, comparison)
用于区分大小写的匹配。
startsWith(text, comparison, "case-insensitive")
用于不区分大小写的匹配。
示例:startsWith([Course Name], "Computer Science")
对于以“Computer Science”开头的课程名称(如“Computer Science 101: An introduction”)将返回 true。
对于“Computer science 201: Data structures”将返回 false,因为“science”的大小写与比较文本中的大小写不匹配。
startsWith([Course Name], "Computer Science", "case-insensitive")
对于“Computer Science 101: An introduction”和“Computer science 201: Data structures”都将返回 true。
相关:endsWith、contains、doesNotContain。
subdomain (子域名)
从 URL 中提取子域。忽略 www
(返回一个空字符串)。
语法:subdomain(url)
示例:subdomain([Page URL])
。如果 [Page URL]
列的值为 https://status.metabase.com
,subdomain([Page URL])
将返回 status
。
substring (子字符串)
返回所提供文本的一部分,由起始位置和长度指定。
语法:substring(text, position, length)
示例:substring([Title], 1, 10)
返回字符串的前 10 个字母(字符串索引从位置 1 开始)。
相关:regexExtract、replace。
text (文本)
对于非 JDBC 的 Druid 驱动程序不可用
将数字或日期转换为文本(字符串)。可用于应用文本筛选器或基于文本比较与其他列进行连接。
语法:text(value)
示例:text(Created At])
将获取一个日期时间 (Created At
) 并返回转换后的字符串(如 "2024-03-17 16:55:15.373733-07"
)。
trim (修剪)
从文本字符串中移除前导和尾部空白。
语法:trim(text)
示例:trim([Comment])
将移除评论两侧的任何空白字符。
upper (大写)
返回全大写的文本。
语法:upper(text)
示例:upper([Status])
。如果状态是“hyper”,upper("hyper")
将返回“HYPER”。
相关:lower。
日期函数
日期函数用于操作、提取或创建日期和时间值。
convertTimezone (转换时区)
将日期或时间戳值转换为指定的时区。
语法:convertTimezone(column, target, source)
示例:convertTimezone("2022-12-28T12:00:00", "Canada/Pacific", "Canada/Eastern")
将返回值 2022-12-28T09:00:00
,显示为 December 28, 2022, 9:00 AM
。
请参阅 convertTimezone
的数据库限制。
datetimeAdd (日期时间相加)
向日期或时间戳值添加某个时间单位。
语法:datetimeAdd(column, amount, unit)
示例:datetimeAdd("2021-03-25", 1, "month")
将返回值 2021-04-25
,显示为 April 25, 2021
。
amount
必须是整数,不能是小数。例如,您不能添加“半年”(0.5)。
datetimeDiff (日期时间差)
以某个时间单位返回两个日期时间之间的差值。例如,datetimeDiff(d1, d2, "day")
将返回 d1
和 d2
之间的天数。
语法:datetimeDiff(datetime1, datetime2, unit)
示例:datetimeDiff("2022-02-01", "2022-03-01", "month")
将返回 1
。
请参阅 datetimediff
的数据库限制。
datetimeSubtract (日期时间相减)
从日期或时间戳值中减去某个时间单位。
语法:datetimeSubtract(column, amount, unit)
示例:datetimeSubtract("2021-03-25", 1, "month")
将返回值 2021-02-25
,显示为 February 25, 2021
。
amount
必须是整数,不能是小数。例如,您不能减去“半年”(0.5)。
相关:between、datetimeAdd。
day (天)
接收一个日期时间,并返回月份中的天数(作为整数)。
语法:day([datetime column])
示例:day("2021-03-25T12:52:37")
将返回天数作为整数 25
。
dayName (星期名)
根据星期几的数字(1-7),返回本地化的星期名称。遵循每周第一天设置。
语法:dayName(dayNumber)
示例:dayName(1)
将返回 Sunday
,除非您更改每周第一天设置。
相关:quarterName、monthName。
hour (小时)
接收一个日期时间,并返回小时(0-23)作为整数。
语法:hour([datetime column])
示例:hour("2021-03-25T12:52:37")
将返回 12
。
interval (间隔)
检查日期列的值是否在相对范围内。
语法:interval(column, number, text)
示例:interval([Created At], -1, "month")
number
必须是整数。您不能使用小数值。
相关:between。
minute (分钟)
接收一个日期时间,并返回分钟(0-59)作为整数。
语法:minute([datetime column])
示例:minute("2021-03-25T12:52:37")
将返回 52
。
month (月)
接收一个日期时间,并返回月份编号(1-12)作为整数。
语法:month([datetime column])
示例:month("2021-03-25T12:52:37")
将返回月份作为整数 3
。
monthName (月份名)
返回给定月份的本地化短名称。
语法:monthName([Birthday Month])
示例:monthName(10)
将返回十月的 Oct
。
相关:dayName、quarterName。
now (现在)
使用您的 Metabase 报告时区返回当前日期和时间。
语法:now()
quarter (季度)
接收一个日期时间,并返回年份中的季度编号(1-4)作为整数。
语法:quarter([datetime column])
示例:quarter("2021-03-25T12:52:37")
将返回第一季度的 1
。
quarterName (季度名)
给定季度编号(1-4),返回一个类似 Q1
的字符串。
语法:quarterName([Fiscal Quarter])
示例:quarterName(3)
将返回 Q3
。
relativeDateTime (相对日期时间)
获取相对于当前时间的时间戳。
语法:relativeDateTime(number, text)
number
:时间间隔的周期,负值表示过去的时间。number
必须是整数。您不能使用小数值。
text
:时间间隔的类型,如 "day"
、"month"
、"year"
。
请注意,relativeDateTime()
会将结果截断到其参数中指定的单位。
示例:[Orders → Created At] < relativeDateTime(-30, "day")
将筛选出从当前日期起 30 天前创建的订单。
相关:datetimeAdd、datetimeSubtract。
second (秒)
接收一个日期时间,并返回分钟内的秒数(0-59)作为整数。
语法:second([datetime column])
示例:second("2021-03-25T12:52:37")
将返回整数 37
。
timeSpan (时间跨度)
获取指定长度的时间间隔。
语法:timeSpan(number, text)
number
:时间间隔的周期,负值表示过去的时间。number
必须是整数。您不能使用小数值。
text
:时间间隔的类型,如 "day"
、"month"
、"year"
。
示例:[Orders → Created At] + timeSpan(7, "day")
将返回 Created At
日期之后 7 天的日期。
today (今天)
返回当前日期(不含时间)。
语法:today()
示例:today()
将返回当前日期,如 2025-05-04
。
相关:now。
week (周)
接收一个日期时间,并返回周数作为整数。
语法:week(column, mode)
示例:week("2021-03-25T12:52:37")
将返回周数作为整数,即 12
。
- column:日期或日期时间值所在的列名。
- mode:可选。
- ISO:(默认)第 1 周从一月第一个星期四之前的星期一开始。
- US:第 1 周从 1 月 1 日开始。所有其他周从星期日开始。
- Instance:第 1 周从 1 月 1 日开始。所有其他周从您的 Metabase 本地化设置中定义的那天开始。
请注意,在查询构建器中按年中的周进行汇总时,使用的是一种不同的模式来确定第一周,更多信息请参阅年中的周。
weekday (工作日)
接收一个日期时间,并返回一个整数(1-7),表示星期几。
语法:weekday(column)
- column:日期时间列。
示例
case(
weekday([Created At]) = 1, "Sunday",
weekday([Created At]) = 2, "Monday",
weekday([Created At]) = 3, "Tuesday",
weekday([Created At]) = 4, "Wednesday",
weekday([Created At]) = 5, "Thursday",
weekday([Created At]) = 6, "Friday",
weekday([Created At]) = 7, "Saturday")
year (年)
接收一个日期时间,并返回年份作为整数。
语法:year([datetime column])
示例:year("2021-03-25T12:52:37")
将返回年份 2021 作为整数 2,021
。
类型转换函数
窗口函数
窗口函数只能在**汇总**部分使用。它们不能用于创建自定义列或自定义筛选器。
CumulativeCount (累积计数)
更多信息,请查看我们的累积函数页面。
跨分组的行数累加总计。
语法:CumulativeCount()
CumulativeSum (累积求和)
更多信息,请查看我们的累积函数页面。
跨分组的列的滚动总和。
语法:CumulativeSum(column)
示例:CumulativeSum([Subtotal])
Offset (偏移)
⚠️
Offset
函数目前在 MySQL/MariaDB、ClickHouse、MongoDB 和 Druid 中不可用。
更多信息,请查看我们的Offset页面。
返回另一行中表达式的值。Offset
只能在查询构建器的“汇总”步骤中使用(您不能使用 Offset
创建自定义列)。
语法:Offset(expression, rowOffset)
expression
是要从不同行获取的值。
rowOffset
是相对于当前行的行数。例如,-1
表示上一行,1
表示下一行。
示例:Offset(Sum([Total]), -1)
将获取上一行的 Sum([Total])
值。
限制
- 聚合表达式只能在查询构建器的**汇总**部分使用。
数据库限制
上面已注明每个聚合和函数的限制,这里是摘要
H2(包括 Metabase 示例数据库):Median
、Percentile
、convertTimezone
、regexExtract
、datetime
、float
、splitPart
。
Athena:convertTimezone
、datetime
、float
、splitPart
。
Databricks:convertTimezone
、datetime
、float
、splitPart
。
Druid:Median
、Percentile
、StandardDeviation
、power
、log
、exp
、sqrt
、Offset
、datetime
、float
、splitPart
。函数 regexExtract
和一些类型转换函数仅适用于 Druid-JDBC 驱动程序。
MongoDB:Median
、Percentile
、power
、log
、exp
、sqrt
、Offset
、regexExtract
、datetime
、float
、splitPart
。
MariaDB:Median
、Percentile
、Offset
。
MySQL:Median
、Percentile
、Offset
。
Oracle:date
、datetime
、float
、splitPart
。
Presto:convertTimezone
、datetime
、float
、splitPart
。对于 Median
和 Percentile
仅提供*近似*结果。
SparkSQL:convertTimezone
、datetime
、float
、splitPart
。
SQL Server:Median
、Percentile
、regexExtract
、datetime
、float
、splitPart
。
SQLite:exp
、log
、Median
、Percentile
、power
、regexExtract
、StandardDeviation
、sqrt
、Variance
、datetime
、float
、splitPart
。
Vertica:Median
、Percentile
、datetime
、float
、splitPart
。
如果您正在使用或维护第三方数据库驱动程序,请参考维基了解您的驱动程序可能受到的影响。
要了解更多信息,请查看我们关于查询构建器中自定义表达式的教程。
阅读其他版本的 Metabase 的文档。