函数列表
StarRocks 提供了丰富的函数,方便您在日常数据查询和分析时使用。除了常见的函数分类,StarRocks 也支持 ARRAY、JSON、MAP、STRUCT 等半结构化函数,支持 Lambda 高阶函数。如果以上函数都不符合您的需求,您还可以自行编写 Java UDF 来满足业务需求。StarRocks 还提供 Hive Bitmap UDF 功能,您可以在 Hive 里计算生成 Bitmap 后,再导入 StarRocks;将 StarRocks 里生成的 Bitmap,导出到 Hive,方便其它系统使用。
您可以按照以下分类来查找目标函数。
时间日期函数
函数 | 功能 |
---|---|
add_months | 在给定的日期(DATE、DATETIME)上增加一个整数月。 |
adddate | 向日期添加指定的时间间隔。 |
convert_tz | 将给定的时间转化为另一个时区的时间。 |
current_date,curdate | 获取当前的日期,以 DATE 类型返回。 |
current_time,curtime | 获取当前的时间,以 TIME 类型返回。 |
current_timestamp | 获取当前时间,以 DATETIME 类型返回。 |
date | 从日期或时间日期表达式中截取日期部分。 |
date_add,adddate | 向日期添加指定的时间间隔。 |
date_diff | 根据指定的时间单位返回两个日期的差值。 |
date_format | 按照 format 指定的格式来显示日期/时间数据。 |
date_slice | 根据指定的时间粒度周期,将给定的时间转化到其所在的时间粒度周期的起始或结束时刻。 |
date_sub,subdate | 从日期中减去指定的时间间隔。 |
date_trunc | 根据指定的精度级别,将一个日期时间截断。 |
datediff | 计算两个日期的差值,结果精确到天。 |
day | 返回指定日期中的天信息。 |
dayname | 返回指定日期对应的星期名称。 |
dayofmonth | 返回日期中的天信息,返回值范围 1~31。 |
dayofweek | 返回指定日期的工作日索引值。 |
dayofweek_iso | 根据 ISO 标准,计算某一个日期对应的是一周内的星期几。 |
dayofyear | 计算指定日期为对应年中的哪一天。 |
days_add | 向日期添加指定的天数。 |
days_diff | 计算开始时间和结束时间相差几天。 |
days_sub | 从给定日期或者日期时间中减去指定的天数,获得新的 DATETIME 结果。 |
from_days | 通过计算当前时间距离 0000-01-01 的天数,计算出当前是时间哪一天。 |
from_unixtime | 将 UNIX 时间戳转化为对应的时 间格式。 |
hour | 获得指定日期中的小时信息。 |
hours_add | 给指定的日期时间增加指定的小时数。 |
hours_diff | 计算开始时间和结束时间相差多少个小时。 |
hours_sub | 从指定的日期时间中减少指定的小时数。 |
jodatime_format | 将某一个日期转换成指定的 Joda DateTimeFormat 格式的字符串。 |
last_day | 根据指定的时间单位,返回输入的日期对应的最后一天。 |
makedate | 根据给定的年份和天数值,构造一个日期值。 |
microseconds_add | 向一个日期时间添加指定的时间间隔,单位为微秒。 |
microseconds_sub | 从一个日期时间中减去指定的时间间隔,单位为微秒。 |
milliseconds_diff | 计算开始时间和结束时间相差多少毫秒。 |
minute | 获得日期中的分钟的信息,返回值范围为 0~59。 |
minutes_add | 给指定的日期时间或日期增加指定的分钟数。 |
minutes_diff | 计算开始时间和结束时间相差多少分钟。 |
minutes_sub | 从指定的日期时间或日期中减去指定的分钟数。 |
month | 返回指定日期中的月份。 |
monthname | 返回指定日期对应的月份。 |
months_add | 给日期添加指定的月数。 |
months_diff | 计算开始时间和结束时间相差几个月。 |
months_sub | 从日期中减去指定的月数。 |
next_day | 根据输入的日期值,返回它之后的那个星期几所对应的日期。 |
now | 获取当前的时间,以 DATETIME 类型返回。 |
previous_day | 根据输入的日期值,返回它之前的那个星期几所对应的日期。 |
quarter | 返回给定的日期值对应的季度,范围 1~4。 |
second | 获得日期中的秒的信息,返回值范围 0~59。 |
seconds_add | 向一个日期时间添加指定的时间间隔,单位为秒。 |
seconds_diff | 计算开始时间和结束时间相差多少秒。 |
seconds_sub | 给指定的日期时间或日期减去指定的秒数。 |
str2date | 按照 format 指定的格式将 str 转换为 DATE 类型的值。 |
str_to_date | 按照 format 指定的格式将 str 转换为 DATETIME 类型的值。 |
str_to_jodatime | 将某一个 Joda 格式的字符串转换为指定的 Joda DateTime 格式的 DATETIME 值。 |
time_slice | 根据指定的时间粒度周期,将给定的时间转化为其所在的时间粒度周期的起始或结束时刻。 |
time_to_sec | 将 time 时间值转换为秒数。 |
timediff | 返回两个 DATETIME 类型值之间的差值,返回 TIME 类型。 |
timestamp | 将时间表达式转换为 DATETIME 值。 |
timestampadd | 将整数表达式间隔添加到日期或日期时间表达式中。 |
timestampdiff | 返回两个日期或日期时间表达式的差值。 |
to_date | 返回 DATETIME 类型值中的日期部分。 |
to_days | 返回指定日期距离 0000-01-01 的天数。 |
to_iso8601 | 将某一个日期转换为 ISO 8601 标准格式的字符串。 |
to_tera_date | 将某一个 VARCHAR 类型的值转换成指定格式的日期。 |
to_tera_timestamp | 将某一个 VARCHAR 类型的值按指定的格式转换成 DATETIME 类型的值。 |
unix_timestamp | 将 DATE 或 DATETIME 类型的值转化为 UNIX 时间戳。 |
utc_timestamp | 返回当前 UTC 日期时间。 |
week | 根据指定的周数计算逻辑,计算指定的日期时间属于一年中的 第几周。 |
week_iso | 根据 ISO 标准,计算某一个日期对应的是一年内的第几个周。 |
weekofyear | 计算指定的日期时间属于一年中的第几周。 |
weeks_add | 向原始的日期时间加上指定周数。 |
weeks_diff | 计算开始时间和结束时间相差几周。 |
weeks_sub | 从原始的日期中减去若干周数。 |
year | 返回指定日期时间中的年份。 |
years_add | 向原始的日期时间添加指定的年数。 |
years_diff | 计算开始时间和结束时间相差几年。 |
years_sub | 从指定的日期时间中减去指定年数。 |
字符串函数
函数 | 功能 |
---|---|
append_trailing_char_if_absent | 如果字符串非空并且末尾不包含 trailing_char 字符,则将 trailing_char 字符附加到末尾。 |
ascii | 返回字符串第一个字符对应的 ASCII 码。 |
char | 根据输入的 ASCII 值返回对应的字符。 |
char_length,character_length | 返回字符串的长度。 |
concat | 将多个字符串连接起来。 |
concat_ws | 使用分隔符将两个或以上的字符串拼接成一个新的字符串。 |
ends_with | 如果字符串以指定后缀结尾,返回 true,否则返回 false。 |
find_in_set | 返回指定的字符串在一系列字符串列表中第一次出现的位置。 |
group_concat | 将结果集中的多行结果连接成一个字符串。 |
hex_decode_binary | 将一个十六进制编码的字符串解码为 VARBINARY 类型的值。 |
hex_decode_string | 将输入字符串中每一对十六进制数字解析为一个数字,并将解析得到的数字转换为表示该数字的字节,然后返回一个二进制字符串。 |
hex | 对于输入的数字或字符,返回十六进制的字符串表示形式。 |
instr | 返回子字符串在指定的字符串中第一次出现的位置。 |
left | 从字符串左边部分返回指定长度的字符。 |
length | 返回字符串的字节长度。 |
locate | 从 pos 下标开始的字符串处开始查找子字符串在某个字符串中第一次出现的位置。 |
lower | 将参数中所有的字符串转换成小写。 |
lpad | 根据指定的长度在字符串前面(左侧)追加字符。 |
ltrim | 从字符串的左侧(开始部分)移除连续出现的空格或指定字符。 |
money_format | 将数字按照货币格式输出,整数部分每隔 3 位用逗号分隔,小数部分保留 2 位。 |
null_or_empty | 如果字符串为空字符串或者 NULL 则返回 true,否则返回 false。 |
parse_url | 从目标 URL 中提取一部分信息。 |
repeat | 将字符串重复 count 次输出,count 小于 1 时返回空字符串。 |
replace | 将字符串中符合指定模式的字符全部替换成其他字符。 |
reverse | 将字符串或数组反转,返回的字符串或数组的顺序和源字符串或数组的顺序相反。 |
right | 从字符串右边部分返回指定长度的字符。 |
rpad | 根据指定的长度在字符串后面(右侧)追加字符。 |
rtrim | 从字符串的右侧(结尾部分)移除连续出现的空格或指定字符。 |
space | 返回由指定数量的空格组成的字符串。 |
split | 根据分隔符拆分字符串,将拆分后的所有字符串以 ARRAY 的格式返回。 |
split_part | 根据分割符拆分字符串,返回指定的分割部分。 |
starts_with | 如果字符串以指定前缀开头返回 1,否则返回 0。 |
str_to_map | 将给定的字符串分割成键值对 (Key-Value pair),返回包含这些键值对的 Map。 |
strleft | 从字符串左边部分返回指定长度的字符。 |
strright | 从字符串右边部分返回指定长度的字符。 |
substr, substring | 返回字符串中从位置 pos 开始的指定长度的子字符串。 |
substring_index | 从给定字符串中截取第 count 个分隔符之前或之后的字符串。 |
translate | 将给定字符串 source 中出现在 from_string 中的字符替换为对应位置的 to_string 中的字符。 |
trim | 从字符串的左侧和右侧移除连续出现的空格或指定的字符。 |
ucase | 该函数与 upper 一致,将字符串转换为大写形式。 |
unhex | 将输入的字符串中的两个字符为一组转化为 16 进制的字符,然后拼接成字符串输出。 |
upper | 将字符串转换为大写形式。 |
url_decode | 将字符串从 application/x-www-form-urlencoded 格式转换回来。 |
url_encode | 将字符串根据 application/x-www-form-urlencoded 格式进行编码。 |
url_extract_parameter | 从一个 URL 的 query 部分,获取指定参数(name )的取值。 |
聚合函数
函数 | 功能 |
---|---|
any_value | 在包含 GROUP BY 的聚合查询中,该函数用于从每个聚合分组中随机选择一行返回。 |
approx_count_distinct | 返回类似于 COUNT(DISTINCT col) 结果的近似值。 |
approx_top_k | 返回表达式 expr 中最常出现的 k 个项目以及每个项目出现的近似次数。 |
array_agg | 将一列中的值(包括空值 null)串联成一个数组(多行转一行)。 |
avg | 用于返回选中字段的平均值。 |
bitmap | 通过 bitmap 函数实现聚合。 |
bitmap_agg | 将一列中的多行非 NULL 数值合并成一行 BITMAP 值,即多行转一行。 |
corr | 返回两个随机变量的皮尔逊相关系数. |
covar_pop | 返回两个随机变量的总体协方差。 |
covar_samp | 返回两个随机变量的样本协方差。 |
count | 计算总行数。 |
count_if | 计算满足指定条件的记录数。 |
group_concat | 将结果集中的多行结果连接成一个字符串。 |
grouping | 判断一个列是否为聚合列,如果是聚合列则返回 0,否则返回 1。 |
grouping_id | 用于区分相同分组标准的分组统计结果。 |
hll_raw_agg | 用于聚合 HLL 类型的字段,返回 HLL 类型。 |
hll_union | 返回一组 HLL 值的并集。 |
hll_union_agg | 将多个 HLL 类型数据合并成一个 HLL。 |
max | 返回表达式中的最大值。 |
max_by | 返回与 y 的最大值相关联的 x 值。 |
min | 返回表达式中的最小值。 |
min_by | 返回与 y 的最小值关联的 x 值。 |
multi_distinct_count | 返回表达式去除重复值后的行数,功能等同于 COUNT(DISTINCT expr)。 |
multi_distinct_sum | 返回表达式去除重复值后的总和,功能等同于 sum(distinct expr)。 |
percentile_approx | 返回第 p 个百分位点的近似值。 |
percentile_cont | 计算精确百分位数。 |
percentile_disc | 计算百分位数。 |
retention | 用于计算一段时间内的用户留存情况。 |
sum | 返回指定列所有值的总和。 |
std | 返回 指定列的标准差。 |
stddev,stddev_pop | 返回表达式的总体标准差。 |
stddev_samp | 返回表达式的样本标准差。 |
variance, variance_pop, var_pop | 返回表达式的方差。 |
var_samp | 返回表达式的样本方差。 |
window_funnel | 搜索滑动时间窗口内的事件列表,计算条件匹配的事件链里的最大连续事件数。 |
数学函数
函数 | 功能 |
---|---|
abs | 计算绝对值。 |
acos | 计算反余弦值(单位为弧度)。 |
asin | 计算反正弦值(单位为弧度)。 |
atan | 计算反正切值(单位为弧度)。 |
atan2 | 通过使用两个参数的符号确定象限,计算 x/y 的反正切的主值,返回值在 [-π, π] 范围内。 |
bin | 将输入的参数转成二进制。 |
ceil, dceil | 返回大于或等于 x 的最小整数。 |
ceiling | 返回大于或等于 x 的最小整数。 |
conv | 对输入的参数进行进制转换。 |
cos | 计算余弦值。 |
cosh | 计算输入数值的双曲余弦值。 |
cosine_similarity | 计算两个向量的余弦夹角来评估向量之间的相似度。 |
cosine_similarity_norm | 计算两个归一化向量的余弦夹角来评估向量之间的相似度。 |
cot | 计算余切值(单位为弧度)。 |
degrees | 将参数 x 转成角度,x 是弧度。 |
divide | 除法函数,返回 x 除以 y 的结果, |
e | 返回自然对数函数的底数。 |
exp, dexp | 返回 e 的 x 次幂。 |
floor, dfloor | 返回不大于 x 的最大整数值。 |
fmod | 取模函数,返回两个数相除之后的浮点余数。 |
greatest | 返回多个输入参数中的最大值。 |
least | 返回多个输入参数中的最小值。 |
ln, dlog1, log | 返回参数 x 的自然对数,以 e 为底数。 |
log | 返回以 base 为底数的 x 的对数。如果未指定 base,则该函数等同于 ln()。 |
log2 | 返回以 2 为底数的 x 的对数。 |
log10, dlog10 | 返回以 10 为底数的 x 的对数。 |
mod | 取模函数,返回两个数相除之后的余数。 |
multiply | 计算两个参数的乘积。 |
negative | 返回参数的负数。 |
pi | 返回圆周率。 |
pmod | 取模函数,返回两个数相除之后的正余数。 |
positive | 返回表达式的结果。 |
pow, power, dpow, fpow | 返回参数 x 的 y 次方。 |
radians | 将参数 x 转为弧度,x 是角度。 |
rand, random | 返回一个 0 (包含) 到 1(不包含)之间的随机浮点数。 |
round, dround | 按照指定的小数位数对数值进行四舍五入。 |
sign | 返回参数 x 的符号。 |
sin | 计算参数 x 的正弦,x 为弧度值。 |
sinh | 计算输入数值的双曲正弦值。 |
sqrt, dsqrt | 计算参数的平方根。 |
square | 计算参数的平方。 |
tan | 计算参数 x 的正切,x 为弧度值。 |
tanh | 计算输入数值的双曲正切值。 |
truncate | 返回数值 x 保留到小数点后 y 位的值。 |
Array 函数
函数 | 功能 |
---|---|
all_match | 判断数组中的所有元素是否都匹配谓词中指定的条件。 |
any_match | 判断数组中是否有元素匹配谓词中指定的条件。 |
array_agg | 将一列中的值(包括空值 null)串联成一个数组(多行转一行)。 |
array_append | 在数组末尾添加一个新的元素。 |
array_avg | 求取一个 ARRAY 中的所有数据的平均数。 |
array_concat | 将多个数组拼接成一个数组。 |
array_contains | 检查数组中是否包含某个元素,是的话返回 1,否则返回 0。 |
array_contains_all | 检查数组 arr1 是否包含数组 arr2 中的所有元素。 |
array_cum_sum | 对数组中的元素进行向前累加。 |
array_difference | 对于数值型数组,返回相邻两个元素的差(从后者中减去前者)构成的数组。 |
array_distinct | 数组元素去重。 |
array_filter | 根据设定的过滤条件返回数组中匹配的元素。 |
array_generate | 生成一个包含数值元素的数组,数值范围在 start 和 end 之间,步长为 step。 |
array_intersect | 对于多个同类型数组,返回交集。 |
array_join | 将数组中的所有元素连接生成一个字符串。 |
array_length | 计算数组中的元素个数。 |
array_map | 用于将输入的 arr1,arr2 等数组按照 lambda_function 进行转换,输出一个新的数组。 |
array_max | 求取一个ARRAY中的所有数据中的最大值。 |
array_min | 求取一个ARRAY中的所有数据中的最小值。 |
arrays_overlap | 判断两个相同类型的数组中是否包含相同的元素。 |
array_position | 获取数组中某个元素位置,是的话返回位置,否则返回 0. |
array_remove | 从数组中移除指定元素。 |
array_slice | 返回数组的一个数组片段。 |
array_sort | 对数组中的元素进行升序排列。 |
array_sortby | 对数组中的元素根据另外一个键值数组元素或者 Lambda 函数生成的键值数组元素进行升序排列。 |
array_sum | 对数组中的所有元素求和。 |
array_to_bitmap | 将 array 类型转化为 bitmap 类型。 |
array_unique_agg | 将一列中的 distinct 值(包括空值 null)串联成一个数组(多行转一行)。 |
cardinality | 计算数组中的元素个数, |
element_at | 获取 Array 数组中指定位置的元素。 |
reverse | 将字符串或数组反转,返回的字符串或数组的顺序和源字符串或数组的顺序相反。 |
unnest | 表函数,用于将一个数组展开成多行。 |