函数概览

最近更新时间:2024-10-24 20:59:22

我的收藏
本文列举 CLS 支持的各类 SQL 函数、运算符及表达式。

通用聚合函数

函数名称
说明
随机返回目标列中一个非 NULL 的值。
avg(KEY)
计算 KEY 的算数平均值。
返回目标列汇所有值按位与运算(AND)的结果。
返回目标列汇所有值按位或运算(OR)的结果。
是否所有的日志都满足指定的条件,如果是则返回 TRUE ,否则返回 FALSE。
是否有任意一条日志满足指定的条件,如果是则返回 TRUE ,否则返回 FALSE。
计算目标列的校验和值,返回结果为二进制字符串。
count(*)
统计所有行的行数。
count(1)
COUNT(1) 等同于 COUNT(*),表示所有的行数。
统计 KEY 列非 NULL 的行数。
统计满足指定条件的行数。
是否所有的日志都满足指定的条件,如果是则返回 TRUE ,否则返回 FALSE。
计算 KEY 的几何平均数,KEY 不允许包含负数,否则结果为 NaN。
max(KEY)
查询 KEY 中最大值。
返回 y 为最大值时对应的 x 值。
返回最大的 n 个 y 值对应的 x 值,返回结果为 JSON 数组。
min(KEY)
查询 KEY 中最小值。
返回 y 为最小值时对应的 x 值。
返回最小的 n 个 y 值对应的 x 值。返回结果为 JSON 数组。
sum(KEY)
计算 KEY 的总和。

逻辑运算符

函数名称
说明
AND
只有左右运算数都是 TRUE 时,结果才为 TRUE。
OR
左右运算数任一个为 TRUE 时,结果为 TRUE。
NOT
右侧运算数为 FALSE 时,结果才为 TRUE。

算数及比较运算符

函数名称
说明
+
加法:运算符两边的值相加。
-
减法:运算符左边减去运算符右边。
*
乘法 - 把运算符两边的值相乘。
/
除法 - 运算符左边除以运算符右边。
%
取模 - 运算符左边除以运算符右边后得到的余数。
=
判断运算符两边的值是否相等,如果相等则条件为真。
!=
判断运算符两边的值是否相等,如果不相等则条件为真。
<>
判断运算符两边的值是否相等,如果不相等则条件为真。
>
判断运算符左边的值是否大于运算符右边的值,如果是则条件为真。
<
判断运算符左边的值是否小于运算符右边的值,如果是则条件为真。
>=
判断运算符左边的值是否大于等于运算符右边的值,如果是则条件为真。
<=
判断运算符左边的值是否小于等于运算符右边的值,如果是则条件为真。
IN
IN 运算符用于把某个值与一系列指定列表的值进行比较。
NOT IN
IN 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。
BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值。
LIKE
LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。%代表零个、一个或者多个字;_代表单个数字或者字符。
IS NULL
NULL 运算符用于把某个值与 NULL 值进行比较,为空为真。
NULL 运算符用于把某个值与 NULL 值进行比较,不为空为真。
DISTINCT
对比 x 和 y 是否相等。
LEAST
返回 x,y...中的最小值。
GREATEST
返回 x,y...中的最大值。
ALL
x 满足所有条件时,返回 true。
x 满足任意一个条件时,返回 true。

估算函数

函数名称
说明
估算 KEY 列的唯一值的个数,估算结果标准误差为2.3%。
对于 KEY 列进行正序排序,返回大约处于 percentage 位置的值。KEY 需为数值类型字段,percentage 取值范围为[0,1]。

同环比函数

函数名称
说明
对比当前时间周期内 x 的值与 n 秒之前时间周期内的值。
对比当前时间周期内 x 的值与 n1 秒、n2 秒、n3 秒之前时间周期内的值。
对比当前时间周期内 x 随时间的变化趋势与 n 秒之前时间周期内的变化趋势,time 为 x 变化趋势对应的时间列。
对比当前时间周期内 x 随时间的变化趋势与 n1 秒、n2 秒、n3 秒之前时间周期内的变化趋势,time 为 x 变化趋势对应的时间列。

字符串函数

函数名称
说明
返回与输入参数指定的 ASCII 码位值匹配的字符。
把 ASCII 码形式的字段值转换为 BigInt 类型。
将多个字符串 KEY1,KEY2,KEY3,...,KEYN 拼接成一个字符串,与||连接符连接效果一致。
注意:任意字符串为 null 时,返回结果为 null,如需跳过 null,可使用 concat_ws。
以 split_string 作为分隔符连接字符串 KEY1,KEY2,KEY3,...,KEYN,会跳过 KEY1,...,KEYN 中的 null 值。
以 split_string 作为分隔符将数组内的元素连接为一个字符串。如果 split_string 为 null,则结果为 null,且会跳过数组中的 null 值。返回结果为 varchar 类型。 注意:此函数中 array(varchar)参数为一个数组,不是字符串。
使用格式 format 对参数 args 进行格式化输出。
将二进制字符串转为 UTF-8格式的字符串。非法的 UTF-8字符会被替换为 U+FFFD。
将二进制字符串转为 UTF-8格式的字符串。非法的 UTF-8字符会被替换为 replace。
返回 KEY1字符串与 KEY2字符串的汉明距离。注意两个字符串长度必须一致。
计算字符串 KEY 的长度。
返回 KEY1字符串与 KEY2字符串的编辑距离。
将字符串 KEY 转换为小写形式。
使用 padstring 对字符串KEY进行向左补全到size大小。如果 size 小于 KEY 的长度,则对字符串进行截断到 size 大小。size 必须为非负数,padstring 必须非空。
移除字符串 KEY 左侧的空白字符。
转化 string 为 NFC 标准格式。
转化 string 为 form 格式。该函数 form 参数需要使用关键字(NFD,NFC,NFKD,NFKC),而非字符串。
返回 substring 在字符串 KEY 中的位置,从1开始。如果没找到,则返回0。
从字符串 KEY 中移除所有 substring 字符串
将字符串 KEY 中所有 substring 替换为 replace。
翻转字符串 KEY。
使用 padstring 对字符串 KEY 进行向右补全到 size 大小。如果 size 小于 KEY 的长度,则对字符串进行截断到 size 大小。size 必须为非负数,padstring 必须非空。
移除字符串 KEY 右侧的空白字符。
使用指定的分隔符 delimiter 对字符串 KEY 进行分割,返回数组。
使用指定的分隔符 delimiter 对字符串 KEY 进行分割,返回数组,数组长度最多为 limit。数组中最后一个元素始终为 key 中剩余的所有部分,limit 必须为正数。
使用指定的分隔符 delimiter 对字符串 KEY 进行分割,返回数组中 index 位置的字符串。index 从1开始,如果 index 大于数组长度则返回 null。
返回 substring 在字符串 KEY 中的位置,从1开始。如果没找到,则返回0。
返回字符串 KEY 经 substring 分割后的第 instance 个实例在 string 中的位置。如果 instance 是负数,则从尾到头数。位置结果从1开始,如果没找到,则返回0。
返回字符串中从 start 位置开始的剩余所有字符,位置从1开始算。如果 start 为负数,则是相对于尾部开始算。
返回字符串从 start 开始的最多 length 长度的子串,位置从1开始算。如果 start 为负数,则是相对于尾部开始算。
将 string 转化为 UTF-8格式的二进制字符串 varbinary。
将 KEY 中出现在 from 中的字符全部替换为 to 中对应位置的字符。如果 from 包含重复字符,则只算第一个字符。如果 KEY 中没出现 from 中的字符,则 KEY 直接复制。如果 from 长度超过 to 的长度,则对应字符会被删除。
trim(KEY)
删除字符串中前后的空白字符。
将字符串 KEY 转换为大写形式。
返回 word 的英语词根。
返回 word 的 lang 语言词根。

日期和时间函数

函数名称
说明
返回当前日期,例如2022-12-28。
返回当前时间,例如17:08:18。
返回当前时间的时间戳(非 Unix 格式),例如2022-12-28T17:09:05.655+08:00[Asia/Shanghai]。
返回当前时区,例如 Asia/Shanghai。
在 timestamp 上加上 value 个时间单位(unit)。value为负数则为减法。unit 支持 millisecond,second,minute,hour,day,week,month,quarter,year。
返回两个 timestamp 之间的时间差值。unit 支持 millisecond,second,minute,hour,day,week,month,quarter,year。
把 TIMESTAMP 类型的日期时间转化为 format 格式的字符串,format 说明参见函数详细说明。
把 format 格式的日期时间字符串 string 转化为 TIMESTAMP 类型,format 说明参见函数详细说明。
将 timestamp 截断至 unit 单位,该函数常用于需要按照时间进行统计分析的场景。unit 支持unit,second,minute,hour,day,week,month,quarter,year。
从 timestamp 中提取指定的时间部分(field),field 支持如下取值:year、quarter、month、week、day、day_of_month、day_of_week、dow、day_of_year、doy、year_of_week、yow、hour、minute、second。
把 ISO8601格式的日期字符串转化为 DATE 类型的日期表达式。
把 ISO8601格式的日期时间字符串转化为具有时区的 Timestamp 类型的日期时间表达式。
把 Unix 时间戳转化为 TIMESTAMP 类型的日期时间表达式。
把 Unix 时间戳转化为具有时区的 TIMESTAMP 类型的日期时间表达式。
对时间列 time_column 按时间间隔 interval 分为多个组,并按该组对日志进行统计。time_column必须为毫秒的 LONG 类型 UNIX 时间戳或 TIMESTAMP 类型的日期时间表达式,interval支持单位为 SECOND(秒)、MINUTE(分)、HOUR(小时)、DAY(天)。
将秒转换为易读的时间间隔字符串,例如1 minute, 36 seconds。
返回 timestamp 所属月份最后一天。
localtime
返回本地时间。
返回本地的日期和时间。
now()
返回当前时间时间戳(非Unix格式)与 current_timestamp 函数同等用法,例如2022-12-28T17:09:05.655+08:00[Asia/Shanghai]。
将字符串 string 转换为时间段表达式。
对时间列 time_column 按时间间隔 interval 分为多个组,并按该组对日志进行统计,支持补全查询时间窗口内缺失的数据。time_column 必须为毫秒的 LONG 类型 UNIX 时间戳或 TIMESTAMP 类型的日期时间表达式,interval 支持单位为s(秒)、m(分)、h(小时)、d(天),format 为时间格式,推荐使用'%Y-%m-%dT%H:%i:%s+08:00',padding 为数据补全方式,详见函数详细说明。
返回 TIMESTAMP 所属时区的小时偏移量。
返回 TIMESTAMP 所属时区的分钟偏移量。
将 DATE 类型或 TIMESTAMP 类型的日期和时间表达式转换为 ISO8601格式的日期和时间字符串。
以毫秒为单位返回间隔的时间值。
把 TIMESTAMP 类型的日期时间表达式转化为 Unix 时间戳。

IP 函数

函数名称
说明
获取目标 IP 地址的前缀。返回结果为子网掩码格式 IP 地址。
获取 IP 网段中的最大 IP 地址。返回结果为 IP 地址。
获取 IP 网段中的最小 IP 地址。返回结果为 IP 地址。
获取 IP 网段范围。返回结果为 Array 类型的 IP 地址。
分析目标 IP 地址所属城市。
分析目标 IP 地址所属城市的代码。返回结果为城市的行政区规划代码,暂不支持中国台湾及国外城市。
分析目标 IP 地址所属城市的经纬度。返回结果为城市的经纬度,暂不支持中国台湾及国外城市。
分析目标 IP 地址所属国家或地区。
分析目标 IP 地址所属国家或地区的代码。
分析目标 IP 地址所属国家或地区的经纬度。
判断目标 IP 地址是内网地址还是外网地址。内网则返回 intranet,外网则返回 internet,非法 IP 地址则返回 invalid。
分析目标 IP 地址对应的网络运营商。
分析目标 IP 地址所属省份。
分析目标 IP 地址所属省份的代码。
分析目标 IP 地址所属省份的经纬度。
判断目标网段是否为某网段的子网。
判断目标 IP 地址是否在某网段内。

URL 函数

函数名称
说明
对 URL 进行解码。
对 KEY 进行 URL 转义编码。
提取出 URL 中的 fragment。
提取出 URL 中的 host。
提取出 URL 中的 query 对应的参数值。
提取出 URL 中的 path。
提取出 URL 中的端口。
提取出 URL 中的协议。
提取出 URL 中的 query。

JSON 函数

函数名称
说明
判断 JSON 数组中是否包含某个值。
获取 JSON 数组中某个下标对应的元素。
计算 JSON 数组中元素的数量。x 不是 JSON 数组时,返回 null。
使用 json_path 从 JSON 对象或 JSON 数组中提取一组 JSON 值(数组或对象),不支持需要遍历数组元素的 json_path 语法,例如 $.store.book[*].author。
使用 json_path 从JSON 对象或 JSON 数组中提取一组标量值(字符串、整数或布尔值),不支持需要遍历数组元素的 json_path 语法,例如 $.store.book[*].author。
将 JSON 类型转化成字符串类型。
将字符串类型转化成 JSON 类型,判断是否符合 JSON 格式。
计算 JSON 对象或 JSON 数组中元素的数量。

正则式函数

函数名称
说明
提取并返回目标字符串 KEY 中符合正则表达式的第一个子串。
提取目标字符串 KEY 中符合正则表达式的子串,然后返回与目标捕获组匹配的第一个子串。n 代表第 n 个捕获组,n 为从1开始的整数。
提取目标字符串 KEY 中符合正则表达式的子串,并返回所有子串的合集。
提取目标字符串 KEY 中符合正则表达式的子串,并返回与目标捕获组匹配的子串合集。n 代表第 n 个捕获组,n 为从1开始的整数。
判断目标字符串 KEY 是否符合正则表达式。
替换目标字符串 KEY 中符合正则表达式的子串,返回被替换后的字符串。
删除目标字符串 KEY 中符合正则表达式的子串。
使用正则表达式分割目标字符串,返回被分割后的子串合集。

数组函数

函数名称
说明
以数组形式返回 KEY 中的所有值。
删除数组中重复的元素,仅保留唯一值。
计算两个数组的差集。
计算两个数组的交集。
使用指定的连接符 delimiter 将数组中的元素拼接为一个字符串。如果数组中包含 null 元素,则 null 元素将被忽略。
使用指定的连接符将数组中的元素拼接为一个字符串。如果数组中包含 null 元素,则 null 元素将被替换为 null_replacement。
获取数组中的最大值。
获取数组中的最小值。
获取指定元素的下标,下标从1开始。如果指定元素不存在,则返回0。
删除数组中指定的元素。
对数组元素进行升序排序。
计算两个数组的并集。
计算数组中元素的个数。
判断数组中是否包含指定元素。如果包含,则返回 true。
返回数组中的第 y 个元素,y 从1开始。
和 Lambda 表达式结合,用于过滤数组中的元素。只返回满足 Lambda 表达式的元素。
将二维数组转换为一维数组。
根据 Lambda 表达式中的定义,对数组中的各个元素进行相加计算,然后返回计算结果。
通过指定的起始值x返回一个数组,其元素为x~y内一组连续且递增的值。
通过指定的起始值x返回一个数组,其元素为x~y内一组连续且递增的值(间隔为step)。
对数组元素进行随机排列。
返回数组x的子集,start指定索引开始的位置,length指定子集中元素的个数。
将 Lambda 表达式应用到数组的每个元素中。
zip(x, y)
将多个数组合并为一个二维数组,且各个数组中下标相同的元素组成一个新的数组。
根据 Lambda 表达式中的定义将两个数组合并为一个数组。

类型转换函数

函数名称
说明
转换字段 KEY 的数据类型,如果某个值转换失败,将终止整个查询,如需跳过失败请使用 try_cast。type 可选值为 bigint、varchar、double、boolean、timestamp、decimal、array 或 map。
转换字段 KEY 的数据类型,如果某个值转换失败,该值返回null,并跳过该值继续处理 type 可选值为 bigint、varchar、double、boolean、timestamp、decimal、array 或 map。
typeof(x)
返回 x 的数据类型。

条件表达式

函数名称
说明
通过条件判断,对数据进行归类。
获取多个表达式中的第一个非 NULL 值。
如果 condition 为 true,则返回 result1,否则返回 null。
如果 condition 为 true,则返回 result1,否则返回 result2。
比较两个表达式的值是否相等。如果相等,则返回 null,否则返回第一个表达式的值。
捕获异常信息,使得系统继续执行查询和分析操作。

数学计算函数

函数名称
说明
计算数字的绝对值。
计算数字的反余弦。
计算数字的反正弦。
计算数字的反正切。
计算两个数字相除的结果的反正切。
计算数字的立方根。
向上取整数。
计算数字的余弦。
计算数字的双曲余弦。
计算向量 x 和 y 之间的余弦相似度。
将弧度转换为度。
e(number)
计算数字的自然对数。
返回自然对数的指数。
向下取整数。
根据 BASE 编码将字符串string转为radix进制的数字。
返回正无穷的数值。
判断目标值 KEY是否为 NaN(Not a Number)。
计算数字的自然对数。
计算以 b 为底的对数。
计算以10为底的对数。
计算以2为底的对数。
用于计算 x 与 y 相除的余数。
nan()
返回一个 NaN 值(Not a Number)。
pi()
返回包含14个小数位的 π 值。
计算数字的 b 次幂。
将度转换为弧度。
rand()
返回随机数。
返回[0,n)之间的随机数。
返回 double 四舍五入后的整数。
保留 double 的 n 位小数。
返回number的符号,通过1、0、-1表示。
计算数字的正弦。
计算数字的平方根。
计算数字的正切。
计算数字的双曲正切。
根据 BASE 编码将x转为radix进制的字符串。
截断数字的小数部分。
使用数组(bins)指定 Bucket 的范围,返回 number 所属的 Bucket。
将一段数值(bound1 - bound2)划分成大小相同的 n 个 Bucket,返回 number 所属的 Bucket。

数学统计函数

函数名称
说明
计算两列的相关度。计算结果范围为[0,1]。
计算两列的总体协方差。
计算两列的样本协方差。
返回输入值的线性回归截距。key1 是依赖值,key2 是独立值。
返回输入值的线性回归斜率。key1 是依赖值,key2 是独立值。
计算 key 列的样本标准差。与 stddev_samp 函数同义。
返回 key 列的总体标准差。
计算 key 列的样本标准差。
计算 key 列的总体方差。
计算 key 列的样本方差。
计算 key 列的样本方差,与 var_samp 函数同义。

二进制字符串函数

函数名称
说明
把 base64 转换成二进制字符串。
从 URL 安全的 base64 转化成二进制字符串。
把大端表示的二进制字符串转化成数字。
从十六进制转化成二进制。
计算二进制字符串的 md5。
计算二进制字符串的 sha1。
计算二进制字符串的 sha256 hash。
计算二进制字符串的 sha512 hash。
把二进制字符串转换成 base64。
把二进制字符串转化成 URL 安全的 base64。
把数字转化成大端表示的二进制。
把二进制字符串转化成十六进制表示。
计算二进制字符串的 xxhash64。

位运算函数

函数名称
说明
统计 x 的二进制表示中1的个数。
以二进制的形式对 x,y 进行与运算。
以二进制的形式对 x 的所有位进行取反运算。
以二进制形式对 x,y 进行或运算。
以二进制形式对 x,y 进行异或运算。

Lambda 函数

Lambda 表达式需与函数一起使用,例如 filter 函数reduce 函数transform 函数zip_with 函数,说明相见 Lambda 函数

窗口函数

窗口函数用于对指定的多行数据进行计算并返回计算的结果,与 GROUP BY 的区别在于其仅会将计算结果附加到每一行数据上,而不会对行本身进行合并。函数说明详见 窗口函数

空间几何函数

空间几何函数用于在几何空间中构造空间实体并对空间关系进行判断、操作及计算,函数说明详见 空间几何函数