本页提供 AI/BI 仪表板中自定义计算的所有受支持函数的完整参考。 有关如何使用自定义计算的信息,请参阅 什么是自定义计算?。
聚合函数
必须聚合所有计算度量值。 支持以下聚合操作:
注释
在聚合函数中使用DISTINCT 关键字,只包含聚合中的唯一值。 此外, FILTER(WHERE condition) 可以将子句追加到任何聚合函数,以限制计算中包含的值。
算术运算
可以将表达式与以下算术运算组合在一起:
| 操作 | Description |
|---|---|
| expr1 % expr2 | 返回expr1除以expr2的余数。 |
| multiplier * multiplicand | 返回两个表达式的乘积。 |
| expr1 + expr2 | 返回 expr1 和 expr2 的和。 |
| + expr | 返回表达式的值。 |
| expr1 - expr2 | 返回从 expr2减去 expr1 时的差值。 |
| - expr | 返回表达式的否定值。 |
| 被除数/除数 | 返回被除数除以除数的结果。 |
| dividend div divisor | 返回 dividend 除以 divisor 的整数部分。 |
| abs(expr) | 返回数值表达式的绝对值。 |
| acos(expr) | 返回 expr 的反余弦值(弧余弦)。 |
| asin(expr) | 返回 expr 的反正弦值(反正弦)。 |
| bround(expr [, d]) | 使用 HALF_EVEN(四舍六入五取偶)舍入模式将expr舍入到d位小数并返回。 |
| ceil(expr) 或 ceiling(expr) | 返回不小于 expr 的最小整数。 |
| cos(expr) | 返回expr的余弦值。 |
| exp(expr) | 返回 e 的 expr 次幂。 |
| floor(expr) | 返回不大于 expr的最大整数。 |
| ln(expr) | 返回表达式的自然对数。 |
| log(base, expr) | 返回与指定的expr对数 base 。 |
| log10(expr) | 返回表达式的 base-10 对数。 |
| mod(expr1, expr2) | 返回expr1除以expr2的余数。 |
| nullifzero(expr) | 如果 NULL 为 expr 0,则返回 ;否则返回 expr。 |
| pi() | 返回 pi 的值。 |
| pmod(expr1, expr2) | 返回 expr1 mod expr2 的正值。 |
| pow(expr1, expr2) 或 power(expr1, expr2) | 返回 expr1 的 expr2 次幂结果。 |
| radians(expr) | 将度转换为弧度。 |
| rand([seed]) | 返回一个随机值,其均匀分布在 0(包含)到 1(不包含)之间。 |
| round(expr [, d]) | 使用HALF_UP舍入模式返回 expr 舍入到 d 小数位数。 |
| sign(expr) | 返回数值表达式的符号。 |
| sin(expr) | 返回expr的正弦值。 |
| sqrt(expr) | 返回expr的平方根。 |
| try_add(expr1,expr2) | 两个值相加。 如果发生错误,则返回 NULL。 |
| try_divide(分红、除数) | 用被除数除以除数。 如果发生错误,则返回 NULL。 |
| try_multiply(乘数、被乘数) | 使两个数字相乘。 如果发生错误,则返回 NULL。 |
| try_subtract(expr1,expr2) | 从 expr2中减去 expr1。 如果发生错误,则返回 NULL。 |
| zeroifnull(expr) | 如果 expr 为 NULL,则返回 0,否则返回 expr。 |
布尔函数和运算符
自定义计算支持基本比较和布尔运算符。 支持以下运算符和函数:
| 操作 | Description |
|---|---|
| expr1 != expr2 | 如果 true 不等于 expr1,则返回 expr2。 |
| !expr | 逻辑不是。 |
| expr1 和 expr2 | 将 expr1 和 expr2 按位与返回。 |
| expr1 && expr2 | 返回true,如果expr1和expr2均为true。 |
| expr1 <=> expr2 | 返回与非 null 操作数的相等运算符相同的结果,但如果两者为 true,则返回 null;如果其中一个为 false,则返回 null。 |
| expr1 <> expr2 | 如果 true 不等于 expr1,则返回 expr2。 |
| expr1 < expr2 | 返回 true 如果 expr1 小于 expr2。 |
| expr1 <= expr2 | 如果 true 小于或等于 expr1,则返回 expr2。 |
| expr1 = expr2 | 如果true等于expr1,则返回expr2。 |
| expr1 == expr2 | 如果true等于expr1,则返回expr2。 |
| expr1 > expr2 | 返回 true 是否 expr1 大于 expr2。 |
| expr1 >= expr2 | 返回 true 是否 expr1 大于或等于 expr2。 |
| expr1 ^ expr2 | 返回 expr1 和 expr2 的按位排他或结果。 |
| expr1 |expr2 | 返回 expr1 和 expr2 的按位或。 |
| expr1 ||expr2 | 如果 true 或 expr1 中至少有一个等于 expr2,则返回 true。 |
| ~expr | 返回按位 NOT 的 expr。 |
| expr1 和 expr2 | 返回true,如果expr1和expr2均为true。 |
| 下部和上部之间的 expr | 测试是否 expr 属于指定范围(特殊语法)。 |
| str ilike 模式 | 如果true以不区分大小写的方式匹配str,则返回pattern。 还可以用作 ilike(str, pattern [, escapeChar]). |
| expr in (value1, value2, ...) | 测试是否 expr 匹配列表中的任何值(特殊语法)。 |
| isnan(expr) | 如果true是 NaN(非数字),则返回expr。 |
| isnotnull(expr) | 如果 true 不为 expr,则返回 NULL。 |
| isnull(expr) | 如果 true 是 expr,则返回 NULL。 |
| 字符串类似模式 | 返回true,如果str匹配pattern。 还可以用作 like(str, pattern [, escapeChar]). |
| 非表达式 | 逻辑非(前缀运算符)。 还可以用作 not(expr). |
| expr1 或 expr2 | 如果 true 或 expr1 中至少有一个等于 expr2,则返回 true。 |
| str regexp regexp | 如果true与正则表达式str匹配,则返回 regexp 。 |
| regexp_like(str, regexp) | 如果true与正则表达式str匹配,则返回 regexp 。 |
| str rlike regexp | 如果true与正则表达式str匹配,则返回 regexp 。 |
强制转换函数
使用以下函数将值转换为指定类型:
| 功能 | Description |
|---|---|
| expr :: type | 将值 expr 转换为目标数据类型 type。 |
| bigint(expr) | 将值 expr 强制转换为 BIGINT。 |
| boolean(expr) | 将值 expr 强制转换为 BOOLEAN。 |
| cast(expr AS 数据类型) | 将值 expr 转换为目标数据类型 type。 |
| date(expr) | 将值 expr 强制转换为 DATE。 |
| decimal(expr [, p [, s]]) | 将值 expr 强制转换为具有精度 DECIMAL 和刻度 p 的 s。 |
| double(expr) | 将值 expr 强制转换为 DOUBLE。 |
| float(expr) | 将值 expr 强制转换为 FLOAT。 |
| int(expr) | 将值 expr 强制转换为 INT。 |
| string(expr) | 将值 expr 强制转换为 STRING。 |
| timestamp(expr) | 将值 expr 强制转换为 TIMESTAMP。 |
| to_date(expr [, fmt]) | 将 expr 和 fmt 转换为日期。 |
| to_timestamp(expr [, fmt]) | 使用expr和fmt转换为时间戳。 |
| try_cast(expr AS type) | 将值 expr 安全地转换为 type 类型的目标数据。 |
| try_to_timestamp(expr [, fmt]) | 将expr与fmt安全地解析为时间戳。 |
日期、时间戳和时间间隔函数
使用以下函数处理日期、时间戳和间隔:
| 功能 | Description |
|---|---|
| add_months(start_date、num_months) | 返回num_months之后的start_date日期。 |
| curdate() | 返回当前日期。 |
| current_date() | 返回当前日期。 |
| current_timestamp() | 返回当前时间戳。 |
| date_add(start_date、num_days) | 返回num_days之后的start_date日期。 |
| date_diff(endDate、startDate) | 返回从 startDate 到 endDate 的天数。 |
| date_format(expr, fmt) | 将时间戳转换为 fmt 格式的字符串。 |
| date_part(field, source) | 从日期或时间戳中提取特定部分,例如年份、月或日。 |
| date_sub(start_date、num_days) | 返回num_days之前start_date的日期。 |
| date_trunc(fmt,source) | 将日期或时间戳截断为指定单位,例如年份或月份。 |
| dateadd(unit, value, expr) | 将指定的时间间隔添加到日期或时间戳。 |
| datediff(endDate, startDate) | 返回从 startDate 到 endDate 的天数。 |
| day(expr) | 返回日期或时间戳中的月份日期。 |
| dayname(expr) | 返回日期或时间戳中星期几的名称。 |
| dayofmonth(expr) | 返回日期或时间戳中的月份日期。 |
| dayofweek(expr) | 从日期或时间戳返回一周中的一天(1 = 星期日,7 = 星期六)。 |
| dayofyear(expr) | 返回日期或时间戳中的年份日期。 |
| extract(field FROM source) | 提取日期或时间戳的一部分。 |
| from_unixtime(unix_time [, fmt]) | 将 Unix 纪元中的秒数转换为时间戳。 |
| from_utc_timestamp(时间戳,时区) | 将给定时间戳解释为 UTC 并转换为给定时区。 |
| getdate() | 返回当前时间戳。 |
| hour(expr) | 返回时间戳的小时组件。 |
| last_day(expr) | 返回日期或时间戳所属月份的最后一天。 |
| make_date(年、月、日) | 从年、月和日字段创建日期。 |
| make_timestamp(year、month、day、hour、min、sec [, timezone]) | 从年、月、日、小时、分钟、秒和可选时区字段创建时间戳。 |
| minute(expr) | 返回时间戳中的分钟部件。 |
| month(expr) | 返回日期或时间戳的月份组件。 |
| months_between(timestamp1, timestamp2[, roundOff]) | 返回timestamp1和timestamp2之间的月份数。 |
| next_day(start_date、day_of_week) | 返回晚于 start_date 和命名为 day_of_week的第一个日期。 |
| now() | 返回当前时间戳。 |
| quarter(expr) | 返回给定日期或时间戳对应的年度季度(1 到 4)。 |
| second(expr) | 返回时间戳的第二个组件。 |
| timediff(endDate, startDate) | 返回以单位为单位测量的两个时间戳之间的差异。 |
| timestamp_micros(微秒) | 从 Unix 纪元以来的微秒数创建时间戳。 |
| timestamp_millis(milliseconds) | 根据自 Unix epoch 以来的毫秒数创建时间戳。 |
| timestamp_seconds(秒) | 从自 Unix 纪元起的秒数创建时间戳。 |
| timestampadd(unit, value, timestamp) | 将指定的时间间隔添加到时间戳。 |
| timestampdiff(unit,start,end) | 返回以单位为单位测量的两个时间戳之间的差异。 |
| to_date(expr [, fmt]) | 将 expr 和 fmt 转换为日期。 |
| to_timestamp(expr [, fmt]) | 使用expr和fmt转换为时间戳。 |
| to_unix_timestamp(expr [, fmt]) | 返回给定时间的 Unix 时间戳。 |
| to_utc_timestamp(时间戳,时区) | 解释给定时区中的给定时间戳并转换为 UTC。 |
| trunc(expr, fmt) | 返回 expr 日期的时间部分被截断为格式模型 fmt指定的单位。 |
| unix_micros(时间戳) | 返回自 Unix 纪元以来的微秒数。 |
| unix_millis(时间戳) | 返回自 Unix 纪元以来的毫秒数。 |
| unix_seconds(时间戳) | 返回自 Unix 纪元以来的秒数。 |
| unix_timestamp([expr [, fmt]]) | 返回给定时间的 Unix 时间戳。 |
| weekday(expr) | 从日期或时间戳(0 = 星期一,6 = 星期日)返回一周中的一天。 |
| weekofyear(expr) | 返回日期或时间戳所在的年份中的星期数。 |
| year(expr) | 返回日期或时间戳的年份部分。 |
字符串函数
使用以下函数转换字符串。 若要转换日期/时间字符串,请参阅 Cast 函数。
| 功能 | Description |
|---|---|
| base64(expr) | 将参数转换为 base64 字符串。 |
| char(expr) | 返回提供的 UTF-16 代码点处的字符。 |
| charindex(substr, str [, pos]) | 返回substr位置之后str中pos第一次出现的位置。 |
| concat(expr1, expr2 [, ...]) | 返回参数的拼接结果。 |
| concat_ws(sep [, expr1 [, ...]]) | 返回由sep分隔的字符串的串联。 |
| contains(左、右) | 返回true,如果在right找到left。 |
| convert_timezone(sourceTz、targetTz、sourceTs) | 将时间戳 sourceTs 从 sourceTz 时区转换为 targetTz 时区。 |
| decode(expr, charSet) | 使用字符集编码expr将二进制文件charSet转换为字符串。 |
| endswith(左、右) | 如果 true 以 left 结尾,则返回 right。 |
| find_in_set(str,str_array) | 返回逗号分隔列表中的给定字符串的索引(基于 1)。 |
| format_number(expr, scale) | 格式化 expr,并将其舍入至 #,###,###.## 位小数。 |
| format_string(format, expr [, ...]) | 从 printf 样式的格式字符串中返回格式化字符串。 |
| hex(expr) |
expr转换为十六进制。 |
| initcap(str) | 以 str 大写形式返回每个单词的第一个字母。 |
| instr(str, substr) | 返回 substr 中第一次出现的 str 的位置。 |
| lcase(str) | 返回 str,所有字符都更改为小写。 |
| left(str, len) | 从字符串len中返回最str左侧的字符。 |
| len(expr) | 返回字符串或二进制表达式的长度。 |
| length(expr) | 返回字符串或二进制表达式的长度。 |
| levenshtein(str1, str2 [, threshold]) | 返回两个给定字符串之间的 Levenshtein 距离。 |
| locate(substr, str [, pos]) | 返回substr位置之后str中pos第一次出现的位置。 |
| lower(str) | 返回 str,所有字符都更改为小写。 |
| lpad(str, len [, pad]) | 返回一个 str,使用 pad 进行左填充,使其长度达到 len。 |
| ltrim(str [, trimStr]) | 去除str的前导字符。 |
| md5(expr) | 以十六进制字符串的形式返回 MD5 128 位校验和。 |
| parse_url(url, partToExtract [, key]) | 从 url. 中提取部件。 |
| position(substr, str [, pos]) | 返回substr位置之后str中pos第一次出现的位置。 |
| printf(format, expr [, ...]) | 从 printf 样式的格式字符串中返回格式化字符串。 |
| regexp_count(str, regexp) | 返回正则表达式 regexp 匹配的 str次数。 |
| regexp_extract(str, regexp [, idx]) | 提取与 regexp 匹配的组。 |
| regexp_instr(str,regexp) | 返回regexp中第一个匹配str的位置。 |
| regexp_replace(str,regexp,rep[,position]) | 将匹配str的所有子字符串regexp替换为 rep。 |
| regexp_substr(str,regexp) | 返回与正则表达式 regexp 匹配的 str子字符串。 |
| repeat(str, n) | 返回重复时间的 strn 字符串。 |
| replace(str,search[,replace]) | 将search的所有出现项替换为replace于str中。 |
| reverse(str) | 返回 str 的字符顺序被反转。 |
| right(str, len) | 从字符串len中返回最str右边的字符。 |
| rtrim([trimStr,] str) | 返回已删除尾随字符的str。 |
| sha2(expr, bitLength) | 返回 SHA-2 系列哈希函数。 |
| split_part(str,分隔符,partNum) | 按照 str 对 delimiter 进行拆分,并返回指定部分。 |
| startswith(左、右) | 如果true以left开头,则返回right |
| substr(str, pos [, len]) | 返回str中从pos开始,长度为len的子字符串。 |
| substring(str, pos [, len]) | 返回str中从pos开始,长度为len的子字符串。 |
| substring_index(str、delim、count) | 返回 count 出现之前的子字符串delim。 |
| to_char(expr [, fmt]) |
expr转换为字符串。 |
| to_number(expr [, fmt]) | 将字符串 expr 转换为数字。 |
| translate(input, from, to) | 通过将input中的字符替换为from中的相应字符,to进行转换。 |
| trim(str [, trimStr]) | 去除 str 的前导字符和尾随字符。 |
| ucase(str) | 返回 str 将所有字符更改为大写。 |
| upper(str) | 返回 str 将所有字符更改为大写。 |
| url_encode(str) | 将 str 编码以用于 URL 查询参数。 |
其他功能
还支持以下函数:
| 功能 | Description |
|---|---|
| 聚合结果 | 计算时间范围或其他度量值排序集的值。 |
| CASE expr { WHEN opt1 THEN res1 } [ELSE def] END | 返回等于 resN 的第一个 optN 的 expr;如果没有任何匹配项,则返回 def。 |
| CASE { WHEN cond1 THEN res1 } \[ELSE def]结束 | 返回计算结果为 true 的第一个 resN 的 condN;如果找不到任何匹配项,则返回 def。 |
| coalesce(expr1, expr2 [, ...]) | 返回第一个非 NULL 参数。 |
| decode(expr, search, result [, search, result]...[, default]) |
expr与每个搜索值进行比较,并返回相应的结果。 |
| get_json_object(json_txt,路径) | 从 json_txt 指定的 path位置提取 JSON 对象。 |
| greatest(expr,[…]) | 返回所有参数的最大值。 |
| hash(expr1 [, expr2 ...]) | 返回参数的哈希值。 |
| if(condition、true_value、false_value) | 如果true_value为condition,则返回true;否则返回false_value。 |
| iff(条件、true_value、false_value) | 如果true_value为condition,则返回true;否则返回false_value。 |
| ifnull(expr1, expr2) | 如果 expr2 为 expr1,则返回 null;否则返回 expr1。 |
| json_array_length(jsonArray) | 返回最外部 JSON 数组中的元素数。 |
| least(expr [, ...]) | 返回所有参数的最小值。 |
| monotonically_increasing_id() | 返回单调递增的 64 位整数。 |
| nullif(expr1, expr2) | 如果NULL等于expr1,则返回expr2;否则返回expr1。 |
| nvl(expr1,expr2) | 如果 expr2 为 expr1,则返回 NULL;否则返回 expr1。 |
| nvl2(expr1, expr2, expr3) | 如果expr2不是expr1,则返回NULL,否则返回expr3。 |
| schema_of_json(json [, options]) | 以 JSON 字符串的 DDL 格式返回架构。 |