Appearance
函数总览
数学函数
函数名 | 返回值类型 | 函数解释 | 平台示例 | 用例输出结果 |
---|---|---|---|---|
abs | float64 | 绝对值函数 | SELECT abs(-1) | 1 |
exp | float64 | 返回 e 的 x 次方 | SELECT exp(2) | 7.389056099 |
log | float64 | 返回自然对数 (以 e 为底的对数) | SELECT log(10) | 2.302585093 |
log2 | float64 | 返回以 2 为底的对数 | SELECT log2(65536) | 16 |
log10 | float64 | 返回以 10 为底的对数 | SELECT log10(100) | 2 |
pow/power | float64 | 返回 x 的 y 次方 | SELECT pow(2, 2)/SELECT power(2, 2) | 4 |
sqrt | float64 | 返回 x 的平方根 | SELECT sqrt(16) | 4 |
cos | float64 | 求余弦值 | SELECT cos(45) | 0.525321989 |
sin | float64 | 求正弦值 | SELECT sin(45) | 0.850903525 |
tan | float64 | 求正切值 | SELECT tan(45) | 1.619775191 |
acos | float64 | 求 x 的反余弦值 | SELECT acos(0.75) | 0.722734248 |
asin | float64 | 求反正弦值 | SELECT asin(0.2) | 0.201357921 |
atan | float64 | 求反正切值 | SELECT atan(0.75) | 0.643501109 |
atan2 | float64 | 求反正切值 | SELECT atan2(0.75, 1) | 0.643501109 |
ceil | float64 | 向上取整 | SELECT ceil(1.2) | 2 |
floor | float64 | 向下取整 | SELECT floor(1.2) | 1 |
round | float64 | 返回最接近 x 的整数 | SELECT round(1.2) | 1 |
sign | Int64 | 返回 x 的符号 | SELECT sign(1) | 1 |
pi | float64 | 返回圆周率 | SELECT pi() | 3.141592654 |
plot | 绘图值 |
字符串函数
函数名 | 返回值类型 | 函数解释 | 平台示例 | 用例输出结果 |
---|---|---|---|---|
ascii | Int64 | 对输入参数 s 求 ASCII 值 | SELECT ascii("A") | 65 |
bin | String | 将输入参数 n 转为二进制格式 | SELECT bin(127) | 1111111 |
concat | String | 将参数 str... 进行连接 | SELECT concat("A", "B") | AB |
concat_ws | String | 将参数使用 sep 进行连接 | SELECT concat_ws(",", "A", "B") | A,B |
elt | String | 从第二个参数以后得参数列表中取 nth 个值 | SELECT elt(1, "A", "B") | A |
field | Int64 | 获取 target 在第二个参数以后得参数列表中的位置 | SELECT field("A", "B", "A") | 2 |
lcase/lower | String | 将参数 s 转为小写 | SELECT lower/lcase("A") | a |
left | String | 返回第一个参数 s 最左边的 N 个字符 | SELECT left("ABCD", 2) | AB |
right | String | 返回第一个参数 s 最右边的 N 个字符 | SELECT right("ABCD", 2) | CD |
length/strlen | Int64 | 返回传入参数 s 的字节长度 | SELECT length/strlen("麦杰科技") | 12 |
locate | Int64 | 从第二个参数 str 中获取第一个参数 substr 的开始的位置 | SELECT locate("bar", "foobarbar")/locate("bar", "foobarbar", 5) | 4/7 |
lpad | String | 在第一个参数 str 的左边填充第三个参数 padstr ,使第一个参数 str 的长度达到第二个参数 len | SELECT lpad("hi", 4, "?")/lpad("hi", 1, "?") | ??hi/h |
ltrim | String | 去除参数 str 左边的空格 | SELECT ltrim(" foobar") | foobar |
mid | String | 从字符串 str 的 pos 位置截取长度为 len 的子字符串 | SELECT mid("foobar", 2, 3) | oob |
oct | String | 当 N 为 Number 时,返回 N 的八进制字符串 | SELECT oct(100) | 144 |
repeat | String | 将字符串 s 重复 N 次 | SELECT repeat("AB", 2) | ABAB |
replace | String | 将字符串 s2 替代字符串 s 中的字符串 s1 | SELECT replace("magus", "a", "8") | m8gus |
reverse | String | 将字符串 s 的顺序翻转 | SELECT reverse("magus") | sugam |
rtrim | String | 去除字符串 s 尾部的空格 | SELECT rtrim("magus ") | magus |
space | String | 返回 N 个空格 | SELECT space(3) | |
strcmp | Int64 | 比较字符串 s1 和 s2 | SELECT strcmp("magus", "magus") | 0 |
substr/substring | String | 从字符串 s 的 start 位置截取长度为 length 的子字符串 | SELECT substr/substring("magus", 2, 3) | agu |
substring_index | String | 返回从字符串 s 的第 count 个出现的分隔符 delimiter 之后的子串 | SELECT substring_index("magus", "a", 1)/substring_index("magus", "a", -1) | m/gus |
trim | String | 去掉字符串 s 开始和结尾处的空格 | SELECT trim(" magus ") | magus |
upper/ucase | String | 将字符串 s 转为大写 | SELECT upper/ucase("magus") | MAGUS |
hex | String | 将字符串或数字转为 16 进制 | SELECT hex("abc") /hex(321) | 616263/141 |
unhex | String | 将参数中的每对十六进制数字解释为一个数字,并将其转换为该数字表示的字符 | SELECT unhex("616263") | abc |
rpad | String | 在第一个参数 str 的右边填充第三个参数 padstr ,使第一个参数 str 的长度达到第二个参数 len | SELECT rpad("hi", 4, "?")/rpad("hi", 1, "?") | hi??/h |
bit_length | String | 返回 str 的字节长度,类型为 Int64 | SELECT bit_length("text") | 32 |
char_length/character_length | Int64 | 返回 str 的字符长度 | SELECT char_length("magus")/char_length("麦杰科技") | 5/4 |
find_in_set | Int64 | 找到 str 在 strList 中的位置,strList 需为以 , 分割的字符串 | SELECT find_in_set("a", "m,a,g,u,s") | 2 |
to_string/tostring | String | 将 any 参数转为 String,如果未传入 sep 参数,则分隔符默认为 , | SELECT to_string/tostring(now()) | 2024-03-09 18:06:58.6259823+08:00 |
聚合函数
函数名 | 返回值类型 | 函数解释 |
---|---|---|
count | Int64 | 统计行数或非空值的数量 |
sum | float64 | 求和 |
avg | float64 | 平均值 |
min/max | 与 expr 相同 | 最小值/最大值 |
first/last | 与 expr 相同 | 第一个/最后一个 |
first_row/last_row | 与 expr 相同 | 返回第一行或最后一行,按主时间列排序 |
std/stddev/stddev_pop | float64 | 用于计算一组数值的总体标准差 |
stddev_samp | float64 | 用于计算一组数值的样本标准差 |
[variance/var_pop](4.聚合函数.md#variancevar_pop- 总体标准方差) | float64 | 方差 计算 Σ((x - x̅)^2) / n,其中 n 是样本大小,x̅ 是 x 的平均值 |
var_samp | float64 | 方差 计算 Σ((x - x̅)^2) / n,其中 n 是样本大小,x̅ 是 x 的平均值 |
窗口函数
函数签名
参数
参数名 | 参数解释 |
---|---|
time_column | 用于窗口切分的时间列 |
every | duration 表示每个窗口的长度,格式为 <int><unit> |
ignore_fractions | 指定划分时间槽的方式,默认为 true |
create_empty | 是否为空的时间槽返回数据,默认为 true |
查询规则
规则 | 规则解释 |
---|---|
时间对齐 | 对于大于小时的时间单位,窗口将对齐到查询时区的一天的开始。查询的时区由开始时间确定 |
时间包含/排除 | 全局窗口的开始和结束时间由 WHERE 子句确定 |
示例用法
时间函数
函数名 | 返回值类型 | 函数解释 | 平台示例 | 用例输出结果 |
---|---|---|---|---|
datediff | Int64 | 计算日期 startTime 到 endTime 之间相差的天数 | SELECT datediff("2021-01-01", "2021-01-02") | -1 |
time_like | Int64 | 时间 like | SELECT time_like("2021-11-01", "%11-0%") | 1 |
time_equal | Int64 | 判断 timestr1 和 timestr2 是否相等 | SELECT time_equal("2021-11-01", "2021-11-02") | 0 |
time_not_equal | Int64 | 判断 timestr1 和 timestr2 是否不相等 | SELECT time_not_equal("2021-11-01", "2021-11-02") | 1 |
time_greater | Int64 | 判断 timestr1 是否大于 timestr2 | SELECT time_greater("2021-11-01", "2021-11-02") | 0 |
time_greater_equal | Int64 | 判断 timestr1 是否大于等于 timestr2 | SELECT time_greater("2021-11-01", "2021-11-02") | 0 |
time_less | Int64 | 判断 timestr1 是否小于 timestr2 | SELECT time_less("2021-11-01", "2021-11-02") | 1 |
time_less_equal | Int64 | 判断 timestr1 是否小于等于 timestr2 | SELECT time_less_equal("2021-11-01", "2021-11-02") | 1 |
time_between | Int64 | 判断 timestr1 是否在 timestr2 和 timestr3 之间 | SELECT time_between("2021-11-01", "2021-10-01", "2021-12-01") | 1 |
time_between_equal | Int64 | 判断 timestr1 是否在 timestr2 和 timestr3 之间或相等 | SELECT time_between_equal("2021-11-01", "2021-10-01", "2021-12-01") | 1 |
time_add | String | 返回 t1 加上 t2 之后的时间 | SELECT time_add("2021-10-01T00:00:00Z", "10m") | 2021-10-01T00:10:00Z |
time_minus | String | 返回 t1 减去 t2 之后的时间 | SELECT time_minus("2021-10-01T00:00:00Z", "10m") | 2021-09-30T00:50:00Z |
curdate/current_date | String | 返回当前时间的日期部分 | SELECT curdate() | 2021-10-01 |
current_time/curtime | String | 返回当前时间的时间部分 | SELECT current_time() | 15:01:02 |
current_timestamp | DateTime | 返回当前时间 | SELECT current_timestamp() | 2021-01-01T00:00:00.742Z |
to_unixtime | Int64 | 将t 转为 unix timestamp | SELECT to_unixtime("1970-01-01T08:00:01Z") | 28801 |
date | String | 获取t 的日期部分 | SELECT date("2021-10-01T00:00:00Z") | 2021-10-01 |
year | Int64 | 获取t 的年份 | SELECT year("2021-10-01T00:00:00Z") | 2021 |
month | Int64 | 获取t 的月份 | SELECT month("2021-10-01T00:00:00Z") | 10 |
day/dayofmonth | Int64 | 获取t 在日期部分 | SELECT day("2021-10-23T00:00:00Z") | 23 |
hour | Int64 | 获取t 的小时部分 | SELECT hour("2021-10-01T10:00:00Z") | 10 |
minute | Int64 | 获取t 的分钟部分 | SELECT minute("2021-10-01T00:20:00Z") | 20 |
second | Int64 | 获取t 的秒 | SELECT second("2021-10-01T00:20:30Z") | 30 |
dayname | String | 返回t 是星期几 | SELECT dayname("2021-10-01T00:00:00Z") | Friday |
dayofweek | Int64 | 获取t 是一周的第几天 | SELECT dayofweek("2021-06-10T00:00:00Z") | 5 |
dayofyear | Int64 | 获取t 是一年中的第几天 | SELECT dayofyear("2020-02-29T00:00:00Z") | 60 |
from_days | String | 将数值 d 转为日期 | SELECT from_days(36500) | 0099-12-07 |
to_days | Int64 | 获取t 距离 0000-00-00 的天数 | SELECT to_days("2007-10-07T00:00:00Z") | 733321 |
from_unixtime | DateTime | 将ts unix 时间戳转为时间 | SELECT from_unixtime(1623226634) | 2021-06-09T16:17:14Z |
now/localtime/localtimestamp/sysdate | DateTime | 返回当前时间 | SELECT now() | 2021-10-01T15:04:05Z |
makedate/make_date | String | 根据小时h ,分钟m 和秒值s 创建并返回时间值 | SELECT maketime(16, 20, 59) | 16:20:59 |
monthname | String | 返回t 的月份的英文名 | SELECT monthname("2021-01-01T00:00:00Z") | January |
sec_to_time | String | 根据秒数s 返回时间部分 | SELECT sec_to_time(1234) | 00:20:34 |
time | String | 获取t 的时间部分 | SELECT time("2021-10-01T15:04:05Z") | 15:04:05 |
time_to_sec | Int64 | 将t 的时间部分转为秒 | SELECT time_to_sec("10:20:30") | 37230 |
timediff | String | 返回 t1 和 t2 的差异部分 | SELECT timediff("2000-01-01T00:00:00Z", "2021-06-09T00:00:00Z") | -187920:00:00 |
utc_date | String | 获取当前 UTC 时间的日期部分 | SELECT utc_date() | 2021-10-01 |
utc_time | String | 获取当前 UTC 时间的时间部分 | SELECT utc_time() | 15:04:05 |
utc_timestamp | DateTime | 获取当前 UTC 时间 | SELECT utc_timestamp() | 2021-10-01T15:04:05Z |
week | Int64 | 返回t 的在一年中周数 | SELECT week("2021-02-20T00:00:00Z") | 7 |
yearweek | Int64 | 返回t 的年份及周数 | SELECT yearweek("2021-10-01T00:00:00Z") | 202139 |
quarter | Int64 | 返回t 是第几季度 | SELECT quarter("2021-10-01T00:00:00Z") | 4 |
unix_timestamp | Int64 | 返回 unix 时间戳 | SELECT unix_timestamp()/unix_timestamp("1970-01-01T00:00:01Z") | 1603041230/1 |
strftime | String | 将时间tm 转为 layout 格式的字符串 | SELECT strftime("2021-10-11T15:04:05Z", "YYYY") | 2021 |
strptime | DateTime | 将 layout 格式的字符串 v 转为时间 | SELECT strptime("2021-11-01", "YYYY-MM-dd")/strptime("15:04:05", "HH:mm:ss") | 2021-11-01T00:00:00Z/0000-01-01T15:04:05Z |
f32_to_f64 | Float64 | 将参数 f 转为 Float64 | SELECT f32_to_f64(10) | 10 |
isnull | Int8 | 返回 e 是否为 NULL | SELECT isnull("")/isnull(null) | 0/1 |
gap_fill | any | 按时间序列插值 | select gap_fill(col, method("prev")) from ... |
转换函数
to_int(8|16|32|64)
转换一个输入值为[Int]
函数 | 返回类型 | 示列 | 结果 |
---|---|---|---|
to_int8 | 结果为Int8 数据类型 | SELECT to_int8(8.8) | 8 |
to_int16 | 结果为Int16 数据类型 | SELECT to_int16('16') | 16 |
to_int32 | 结果为Int32 数据类型 | SELECT to_int32(32) | 32 |
to_int64 | 结果为Int64 数据类型 | SELECT to_int64("nan") | -9223372036854775808 |
to_int(8|16|32|64)_or_zero
函数需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64)
,如果转换失败直接返回 0
函数 | 返回类型 | 示列 | 结果 |
---|---|---|---|
to_int8_or_zero | 结果为Int8 数据类型 | SELECT to_int8_or_zero('123qwe123') | 0 |
to_int64_or_zero | 结果为Int64 数据类型 | SELECT to_int64_or_zero('123123') | 123123 |
to_int(8|16|32|64)_or_null
这个函数需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64)
,如果转换失败直接返回NULL
函数 | 返回类型 | 示列 | 结果 |
---|---|---|---|
to_int8_or_null | 结果为Int8 数据类型 | SELECT to_int8_or_null('123qwe123') | NULL |
to_int64_or_null | 结果为Int64 数据类型 | SELECT to_int64_or_null('123123') | 123123 |
随机函数
函数名 | 返回值类型 | 函数解释 | 平台示例 | 用例输出结果 |
---|---|---|---|---|
rand | Float64 | 返回 0 到 1 的随机数 (随机数小于 1,大于等于 0) | SELECT rand() | 0.619775191 |
rand_i32 | Int32 | 返回 -2,147,483,648 到 2,147,483,647 的随机数 (随机数小于 2,147,483,647 大于等于 -2,147,483,648) | SELECT rand_i32() | 1813461669 |
rand_i32n | Int32 | 返回 -2,147,483,648 到 2,147,483,647 的随机数 (随机数小于 2,147,483,647,大于等于 -2,147,483,648,随机数小于n ) | SELECT rand_i32N(500) | 479 |
rand_i32_range | Int32 | 返回 -2,147,483,648 到 2,147,483,647 的随机数 (随机数小于2,147,483,647 ,大于等于-2,147,483,648 ,随机数大于等于n ,小于s ) | SELECT rand_i32_range(100,800) | 243 |
rand_i64 | Int64 | 返回 -9223372036854775808 到 9223372036854775808 的随机数 (随机数小于9223372036854775808 大于等于-9223372036854775808 ) | SELECT rand_i64() | 7103967124180070000 |
rand_i64n | Int64 | 返回 -9223372036854775808 到 9223372036854775808 的随机数 (随机数小于9223372036854775808 大于等于-9223372036854775808 ,随机数小于n ) | SELECT rand_i64n(80000) | 7084 |
rand_i64_range | Int64 | 返回 -9223372036854775808 到 9223372036854775808 的随机数 (随机数小于9223372036854775808 大于等于-9223372036854775808 ,随机数大于等于n ,小于s ) | SELECT rand_i64_range(50000,800000000) | 278901588 |
rand_f32 | Float32 | 返回 0~1 Float32 类型随机数 | SELECT rand_f32() | 0.3273061 |
rand_f64 | Float64 | 返回 0~1 的 Float64 类型随机数 | SELECT rand_f64() | 0.896645947 |
UUID 函数
函数名 | 返回值类型 | 函数解释 | 平台示例 | 用例输出结果 |
---|---|---|---|---|
uuid4 | String | 生成一个 UUID Version4 规范的字符串 | SELECT uuid4() | 086407643-5a4b-4421-be15-546b871600ae |
uuid6 | String | 生成一个 UUID Version6 规范的字符串 | SELECT uuid6() | 01eee122-e974-62e1-85e3-047c160bfb4c |
uuid7 | String | 生成一个 UUID Version7 规范的字符串 | SELECT uuid7() | 018e3751-d30a-7381-9901-b3d3082f4fc3 |
to_uuid | UUID | 把一个满足 UUID 规范的字符串格式化为 UUID 对象 | select to_uuid("4d07781e-f771-4257-a622-9ac003bf88e1") | 4d07781e-f771-4257-a622-9ac003bf88e1 |