本页提供 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为expr0,则返回 ;否则返回expr。 | 
| pi() | 返回 pi 的值。 | 
| pmod(expr1, expr2) | 返回 expr1modexpr2的正值。 | 
| 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 格式返回架构。 |