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 | 将tsunix 时间戳转为时间 | 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 |
帮助中心