自定义计算函数参考

本页提供 AI/BI 仪表板中自定义计算的所有受支持函数的完整参考。 有关如何使用自定义计算的信息,请参阅 什么是自定义计算?

聚合函数

必须聚合所有计算度量值。 支持以下聚合操作:

注释

在聚合函数中使用DISTINCT 关键字,只包含聚合中的唯一值。 此外, FILTER(WHERE condition) 可以将子句追加到任何聚合函数,以限制计算中包含的值。

功能 Description
any(expr) 返回true,如果expr组中的至少有一个值是true
any_value(expr) 返回 expr 的一组行的一些值。
approx_count_distinct(expr,[relativeSD]) 返回expr中不重复值的估计数目。
approx_percentile ([ALL |DISTINCT] expr, percentile [, accuracy]) 返回指定百分位处的近似百分位值 expr
avg(expr) 返回列或表达式中的计算平均值。
bool_or(expr) 如果true的至少一个值为expr,则返回true
corr(expr1, expr2) 返回 expr1expr2 之间的皮尔逊相关系数。
count(*) 返回组中的行数。
count(DISTINCT expr) 返回组中的唯一行数。
count_if(expr) 返回满足给定条件的行数。
first(expr [, ignoreNull]) 返回组的第一个值 expr
first_value(expr [, ignoreNull]) 返回组的第一个值 expr
last(expr [, ignoreNull]) 返回组的最后一个值 expr
last_value(expr [, ignoreNull]) 返回组的最后一个值 expr
listagg(expr [, delimiter]) 返回组中非 null 值的串联。
max(expr) 返回列或表达式中的最大值。
max_by(expr1,expr2) 返回与 expr1 的最大值相关联的 expr2 值。
mean(expr) 返回列或表达式中的计算平均值。
median(expr) 返回一组值的中值。
min(expr) 返回列或表达式中的最小值。
min_by(expr1,expr2) 返回与expr1的最小值相关的expr2的值。
mode(expr [, deterministic ]) 返回最频繁的值 expr
percentile(expr,percentage[, frequency]) 返回组中指定百分位处的确切百分位值 expr
percentile_approx(expr,percentage [,accuracy]) 返回指定百分位处的近似百分位值 expr
regr_slope(y,x) 返回组中非 null 对的线性回归线的斜率。
some(expr) 返回true,如果expr组中的至少有一个值是true
std(expr) 返回一组值的标准偏差。
stddev(expr) 返回一组值的标准偏差。
stddev_pop(expr) 返回一组值的总体标准偏差。
stddev_samp(expr) 返回一组值的示例标准偏差。
string_agg(expr [, 分隔符]) 返回组中非 null 字符串值的串联。
sum(expr) 返回列或表达式中的值总数。
方差(expr) 返回一组值的方差。

算术运算

可以将表达式与以下算术运算组合在一起:

操作 Description
expr1 % expr2 返回expr1除以expr2的余数。
multiplier * multiplicand 返回两个表达式的乘积。
expr1 + expr2 返回 expr1expr2 的和。
+ 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) 如果 NULLexpr 0,则返回 ;否则返回 expr
pi() 返回 pi 的值。
pmod(expr1, expr2) 返回 expr1 mod expr2 的正值。
pow(expr1, expr2) 或 power(expr1, expr2) 返回 expr1expr2 次幂结果。
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) 如果 exprNULL,则返回 0,否则返回 expr

布尔函数和运算符

自定义计算支持基本比较和布尔运算符。 支持以下运算符和函数:

操作 Description
expr1 != expr2 如果 true 不等于 expr1,则返回 expr2
!expr 逻辑不是。
expr1 和 expr2 expr1expr2 按位与返回。
expr1 && expr2 返回true,如果expr1expr2均为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 返回 expr1expr2 的按位排他或结果。
expr1 |expr2 返回 expr1expr2 的按位或。
expr1 ||expr2 如果 trueexpr1 中至少有一个等于 expr2,则返回 true
~expr 返回按位 NOT 的 expr
expr1 和 expr2 返回true,如果expr1expr2均为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) 如果 trueexpr,则返回 NULL
字符串类似模式 返回true,如果str匹配pattern。 还可以用作 like(str, pattern [, escapeChar]).
非表达式 逻辑非(前缀运算符)。 还可以用作 not(expr).
expr1 或 expr2 如果 trueexpr1 中至少有一个等于 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 和刻度 ps
double(expr) 将值 expr 强制转换为 DOUBLE
float(expr) 将值 expr 强制转换为 FLOAT
int(expr) 将值 expr 强制转换为 INT
string(expr) 将值 expr 强制转换为 STRING
timestamp(expr) 将值 expr 强制转换为 TIMESTAMP
to_date(expr [, fmt]) exprfmt 转换为日期。
to_timestamp(expr [, fmt]) 使用exprfmt转换为时间戳。
try_cast(expr AS type) 将值 expr 安全地转换为 type 类型的目标数据。
try_to_timestamp(expr [, fmt]) exprfmt安全地解析为时间戳。

日期、时间戳和时间间隔函数

使用以下函数处理日期、时间戳和间隔:

功能 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) 返回从 startDateendDate 的天数。
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) 返回从 startDateendDate 的天数。
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]) 返回timestamp1timestamp2之间的月份数。
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]) exprfmt 转换为日期。
to_timestamp(expr [, fmt]) 使用exprfmt转换为时间戳。
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位置之后strpos第一次出现的位置。
concat(expr1, expr2 [, ...]) 返回参数的拼接结果。
concat_ws(sep [, expr1 [, ...]]) 返回由sep分隔的字符串的串联。
contains(左、右) 返回true,如果在right找到left
convert_timezone(sourceTz、targetTz、sourceTs) 将时间戳 sourceTssourceTz 时区转换为 targetTz 时区。
decode(expr, charSet) 使用字符集编码expr将二进制文件charSet转换为字符串。
endswith(左、右) 如果 trueleft 结尾,则返回 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位置之后strpos第一次出现的位置。
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位置之后strpos第一次出现的位置。
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的所有出现项替换为replacestr中。
reverse(str) 返回 str 的字符顺序被反转。
right(str, len) 从字符串len中返回最str右边的字符。
rtrim([trimStr,] str) 返回已删除尾随字符的str
sha2(expr, bitLength) 返回 SHA-2 系列哈希函数。
split_part(str,分隔符,partNum) 按照 strdelimiter 进行拆分,并返回指定部分。
startswith(左、右) 如果trueleft开头,则返回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 的第一个 optNexpr;如果没有任何匹配项,则返回 def
CASE { WHEN cond1 THEN res1 } \[ELSE def]结束 返回计算结果为 true 的第一个 resNcondN;如果找不到任何匹配项,则返回 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_valuecondition,则返回true;否则返回false_value
iff(条件、true_value、false_value) 如果true_valuecondition,则返回true;否则返回false_value
ifnull(expr1, expr2) 如果 expr2expr1,则返回 null;否则返回 expr1
json_array_length(jsonArray) 返回最外部 JSON 数组中的元素数。
least(expr [, ...]) 返回所有参数的最小值。
monotonically_increasing_id() 返回单调递增的 64 位整数。
nullif(expr1, expr2) 如果NULL等于expr1,则返回expr2;否则返回expr1
nvl(expr1,expr2) 如果 expr2expr1,则返回 NULL;否则返回 expr1
nvl2(expr1, expr2, expr3) 如果expr2不是expr1,则返回NULL,否则返回expr3
schema_of_json(json [, options]) 以 JSON 字符串的 DDL 格式返回架构。