| 函数名称 |
说明 |
| arbitrary(key) |
随机返回目标列中一个非 NULL 的值。 |
| avg(KEY) |
计算 KEY 的算术平均值。 |
| bitwise_and_agg(key) |
返回目标列中所有值按位与运算(AND)的结果。 |
| bitwise_or_agg(key) |
返回目标列中所有值按位或运算(OR)的结果。 |
| bool_and(boolean) |
是否所有的日志都满足指定的条件,如果是则返回 TRUE,否则返回 FALSE。 |
| bool_or(boolean) |
是否有任意一条日志满足指定的条件,如果是则返回 TRUE,否则返回 FALSE。 |
| checksum(key) |
计算目标列的校验和值,返回结果为二进制字符串。 |
| count(*) |
统计所有行的行数。 |
| count(1) |
COUNT(1) 等同于 COUNT(*),表示所有的行数。 |
| count(KEY) |
统计 KEY 列非 NULL 的行数。 |
| count_if(boolean) |
统计满足指定条件的行数。 |
| every(boolean) |
是否所有的日志都满足指定的条件,如果是则返回 TRUE,否则返回 FALSE。 |
| geometric_mean(key) |
计算 KEY 的几何平均数,KEY 不允许包含负数,否则结果为 NaN。 |
| max(KEY) |
查询 KEY 中最大值。 |
| max_by(x,y) |
返回 y 为最大值时对应的 x 值。 |
| max_by(x,y,n) |
返回最大的 n 个 y 值对应的 x 值,返回结果为 JSON 数组。 |
| min(KEY) |
查询 KEY 中最小值。 |
| min_by(x,y) |
返回 y 为最小值时对应的 x 值。 |
| min_by(x,y,n) |
返回最小的 n 个 y 值对应的 x 值。返回结果为 JSON 数组。 |
| sum(KEY) |
计算 KEY 的总和。 |
| histogram(KEY) |
返回一个 map,其中包含每个输入值出现次数的计数。 |
| map_agg(KEY, VALUE) |
返回一个由输入的 key / value 对创建的 map。 |
| map_union(KEY) |
返回所有输入映射的并集。如果某个键在多个输入映射中出现,则结果映射中该键的值来自任意一个输入映射。 |
| multimap_agg(KEY, VALUE) |
返回一个由输入的 key / value 对创建的多重映射。每个键可以与多个值关联。 |
| 函数名称 |
说明 |
| chr(number) |
返回与输入参数指定的 ASCII 码位值匹配的字符。 |
| codepoint(string) |
把 ASCII 码形式的字段值转换为 BigInt 类型。 |
| concat(KEY1,KEY2,KEY3,KEYN) |
将多个字符串 KEY1,KEY2,KEY3,…,KEYN 拼接成一个字符串,与||连接符连接效果一致。注意:任意字符串为 null 时,返回结果为 null,如需跳过 null,可使用 concat_ws。 |
| concat_ws(split_string,KEY1,KEY2,KEY3,KEYN) |
以 split_string 作为分隔符连接字符串 KEY1,KEY2,KEY3,…,KEYN,会跳过 KEY1,…,KEYN 中的 null 值。 |
| concat_ws(split_string, array(varchar)) |
以 split_string 作为分隔符将数组内的元素连接为一个字符串。如果 split_string 为 null,则结果为 null,且会跳过数组中的 null 值。返回结果为 varchar 类型。注意:此函数中 array(varchar) 参数为一个数组,不是字符串。 |
| format(format,args1,args2,args3,argsN) |
使用格式 format 对参数 args 进行格式化输出。 |
| from_utf8(binary) |
将二进制字符串转为 UTF-8格式的字符串。非法的 UTF-8字符会被替换为 U+FFFD。 |
| from_utf8(binary, replace) |
将二进制字符串转为 UTF-8格式的字符串。非法的 UTF-8字符会被替换为 replace。 |
| hamming_distance(KEY1,KEY2) |
返回 KEY1字符串与 KEY2字符串的汉明距离。注意两个字符串长度必须一致。 |
| length(KEY) |
计算字符串 KEY 的长度。 |
| levenshtein_distance(KEY1,KEY2) |
返回 KEY1字符串与 KEY2字符串的编辑距离。 |
| lower(KEY) |
将字符串 KEY 转换为小写形式。 |
| lpad(KEY,size,padstring) |
使用 padstring 对字符串 KEY 进行向左补全到 size 大小。如果 size 小于 KEY 的长度,则对字符串进行截断到 size 大小。size 必须为非负数,padstring 必须非空。 |
| ltrim(KEY) |
移除字符串 KEY 左侧的空白字符。 |
| normalize(string) |
转化 string 为 NFC 标准格式。 |
| normalize(string, form) |
转化 string 为 form 格式。该函数 form 参数需要使用关键字(NFD、NFC、NFKD、NFKC),而非字符串。 |
| position(substring IN KEY) |
返回 substring 在字符串 KEY 中的位置,从1开始。如果没找到,则返回0。 |
| replace(KEY,substring) |
从字符串 KEY 中移除所有 substring 字符串 |
| replace(KEY,substring,replace) |
将字符串 KEY 中所有 substring 替换为 replace。 |
| reverse(KEY) |
翻转字符串 KEY。 |
| rpad(KEY,size,padstring) |
使用 padstring 对字符串 KEY 进行向右补全到 size 大小。如果 size 小于 KEY 的长度,则对字符串进行截断到 size 大小。size 必须为非负数,padstring 必须非空。 |
| rtrim(KEY) |
移除字符串 KEY 右侧的空白字符。 |
| split(KEY,delimiter) |
使用指定的分隔符 delimiter 对字符串 KEY 进行分割,返回数组。 |
| split(KEY,delimiter,limit) |
使用指定的分隔符 delimiter 对字符串 KEY 进行分割,返回数组,数组长度最多为 limit。数组中最后一个元素始终为 key 中剩余的所有部分,limit 必须为正数。 |
| split_part(KEY,delimiter,index) |
使用指定的分隔符 delimiter 对字符串 KEY 进行分割,返回数组中 index 位置的字符串。index 从1开始,如果 index 大于数组长度则返回 null。 |
| strpos(KEY,substring) |
返回 substring 在字符串 KEY 中的位置,从1开始。如果没找到,则返回0。 |
| strpos(KEY,substring,instance) |
返回字符串 KEY 经 substring 分割后的第 instance 个实例在 string 中的位置。如果 instance 是负数,则从尾到头数。位置结果从1开始,如果没找到,则返回0。 |
| substr(KEY,start) |
返回字符串中从 start 位置开始的剩余所有字符,位置从1开始算。如果 start 为负数,则是相对于尾部开始算。 |
| substr(KEY,start,length) |
返回字符串从 start 开始的最多 length 长度的子串,位置从1开始算。如果 start 为负数,则是相对于尾部开始算。 |
| to_utf8(string) |
将 string 转化为 UTF-8格式的二进制字符串 varbinary。 |
| translate(KEY,from,to) |
将 KEY 中出现在 from 中的字符全部替换为 to 中对应位置的字符。如果 from 包含重复字符,则只算第一个字符。如果 KEY 中没出现 from 中的字符,则 KEY 直接复制。如果 from 长度超过 to 的长度,则对应字符会被删除。 |
| trim(KEY) |
删除字符串中前后的空白字符。 |
| upper(KEY) |
将字符串 KEY 转换为大写形式。 |
| word_stem(word) |
返回 word 的英语词根。 |
| word_stem(word,lang) |
返回 word 的 lang 语言词根。 |
| 函数名称 |
说明 |
| current_date |
返回当前日期,例如2022-12-28。 |
| current_time |
返回当前时间,例如17:08:18。 |
| current_timestamp |
返回当前时间的时间戳(非 Unix 格式),例如2022-12-28T17:09:05.655+08:00[Asia/Shanghai]。 |
| current_timezone() |
返回当前时区,例如 Asia/Shanghai。 |
| date_add(unit,value,timestamp) |
在 timestamp 上加上 value 个时间单位(unit)。value为负数则为减法。unit 支持 millisecond、second、minute、hour、day、week、month、quarter、year。 |
| date_diff(unit, timestamp1, timestamp2) |
返回两个 timestamp 之间的时间差值。unit 支持 millisecond、second、minute、hour、day、week、month、quarter、year。 |
| date_format(timestamp,format) |
把 TIMESTAMP 类型的日期时间转化为 format 格式的字符串,format 说明参见函数详细说明。 |
| date_parse(string,format) |
把 format 格式的日期时间字符串 string 转化为 TIMESTAMP 类型,format 说明参见函数详细说明。 |
| date_trunc(unit,timestamp) |
将 timestamp 截断至 unit 单位,该函数常用于需要按照时间进行统计分析的场景。unit 支持unit、second、minute、hour、day、week、month、quarter、year。 |
| extract(field FROM timestamp) |
从 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。 |
| from_iso8601_date(string) |
把 ISO8601格式的日期字符串转化为 DATE 类型的日期表达式。 |
| from_iso8601_timestamp(string) |
把 ISO8601格式的日期时间字符串转化为具有时区的 TIMESTAMP 类型的日期时间表达式。 |
| from_unixtime(unixtime) |
把 Unix 时间戳转化为 TIMESTAMP 类型的日期时间表达式。 |
| from_unixtime(unixtime, zone) |
把 Unix 时间戳转化为具有时区的 TIMESTAMP 类型的日期时间表达式。 |
| histogram(time_column,interval) |
对时间列 time_column 按时间间隔 interval 分为多个组,并按该组对日志进行统计。time_column必须为毫秒的 LONG 类型 UNIX 时间戳或 TIMESTAMP 类型的日期时间表达式,interval 支持单位为 SECOND(秒)、MINUTE(分)、HOUR(小时)、DAY(天)。 |
| human_readable_seconds |
将秒转换为易读的时间间隔字符串,例如1 minute、36 seconds。 |
| last_day_of_month(timestamp) |
返回 timestamp 所属月份最后一天。 |
| localtime |
返回本地时间。 |
| localtimestamp |
返回本地的日期和时间。 |
| now() |
返回当前时间的时间戳(非 Unix 格式)与 current_timestamp 函数同等用法,例如2022-12-28T17:09:05.655+08:00[Asia/Shanghai]。 |
| parse_duration(string) |
将字符串 string 转换为时间段表达式。 |
| time_series(time_column,interval,format,padding) |
对时间列 time_column 按时间间隔 interval 分为多个组,并按该组对日志进行统计,支持补全查询时间窗口内缺失的数据。time_column 必须为毫秒的 LONG 类型 UNIX 时间戳或 TIMESTAMP 类型的日期时间表达式,interval 支持单位为s(秒)、m(分)、h(小时)、d(天),format 为时间格式,推荐使用'%Y-%m-%dT%H:%i:%s+08:00',padding 为数据补全方式,详见函数详细说明。 |
| timezone_hour(timestamp) |
返回 TIMESTAMP 所属时区的小时偏移量。 |
| timezone_minute(timestamp) |
返回 TIMESTAMP 所属时区的分钟偏移量。 |
| to_iso8601(x) |
将 DATE 类型或 TIMESTAMP 类型的日期和时间表达式转换为 ISO8601格式的日期和时间字符串。 |
| to_milliseconds(interval) |
以毫秒为单位返回间隔的时间值。 |
| to_unixtime(timestamp) |
把 TIMESTAMP 类型的日期时间表达式转化为 Unix 时间戳。 |
| 函数名称 |
说明 |
| ip_version(ip) |
获取 IP 地址版本,返回结果为 IPv4或 IPv6。 |
| ip_prefix(ip,prefix_bits) |
获取目标 IP 地址的前缀。返回结果为子网掩码格式 IP 地址。 |
| ip_subnet_max(ip) |
获取 IP 网段中的最大 IP 地址。返回结果为 IP 地址。 |
| ip_subnet_min(ip) |
获取 IP 网段中的最小 IP 地址。返回结果为 IP 地址。 |
| ip_subnet_range(ip) |
获取 IP 网段范围。返回结果为 Array 类型的 IP 地址。 |
| ip_to_city(ip) |
分析目标 IP 地址所属城市。 |
| ip_to_city_code(ip) |
分析目标 IP 地址所属城市的代码。返回结果为城市的行政区规划代码,暂不支持中国台湾及国外城市。 |
| ip_to_city_geo(ip) |
分析目标 IP 地址所属城市的经纬度。返回结果为城市的经纬度,暂不支持中国台湾及国外城市。 |
| ip_to_country(ip) |
分析目标 IP 地址所属国家或地区。 |
| ip_to_country_code(ip) |
分析目标 IP 地址所属国家或地区的代码。 |
| ip_to_country_geo(ip) |
分析目标 IP 地址所属国家或地区的经纬度。 |
| ip_to_domain(ip) |
判断目标 IP 地址是内网地址还是外网地址。内网则返回 intranet,外网则返回 internet,非法 IP 地址则返回 invalid。 |
| ip_to_provider(ip) |
分析目标 IP 地址对应的网络运营商。 |
| ip_to_province(ip) |
分析目标 IP 地址所属省份。 |
| ip_to_province_code(ip) |
分析目标 IP 地址所属省份的代码。 |
| ip_to_province_geo(ip) |
分析目标 IP 地址所属省份的经纬度。 |
| is_prefix_subnet_of(string,string) |
判断目标网段是否为某网段的子网。 |
| is_subnet_of(string,ip) |
判断目标 IP 地址是否在某网段内。 |
| ip_threat(ip) |
根据 腾讯安全威胁情报中心 中的安全情报,判断指定 IP 是否为恶意 IP。 |
| ip_threat_tags(ip) |
可疑及恶意 IP 的 威胁标签,代表该 IP 存在的具体恶意行为,返回结果为数组。 |
| ip_threat_detail(ip) |
IP 威胁检测详情,返回结果为 JSON。 |
| 函数名称 |
说明 |
| json_array_contains(x, value) |
判断 JSON 数组中是否包含某个值。 |
| json_array_get(x, index) |
获取 JSON 数组中某个下标对应的元素。 |
| json_array_length(x) |
计算 JSON 数组中元素的数量。x 不是 JSON 数组时,返回 null。 |
| json_extract(x,json_path) |
使用 json_path 从 JSON 对象或 JSON 数组中提取一组 JSON 值(数组或对象),不支持需要遍历数组元素的 json_path 语法,例如 $.store.book[*].author。 |
| json_extract_scalar(KEY,json_path) |
使用 json_path 从JSON 对象或 JSON 数组中提取一组标量值(字符串、整数或布尔值),不支持需要遍历数组元素的 json_path 语法,例如 $.store.book[*].author。 |
| json_format(x) |
将 JSON 类型转化成字符串类型。 |
| json_parse(x) |
将字符串类型转化成 JSON 类型,判断是否符合 JSON 格式。 |
| json_size(x, json_path) |
计算 JSON 对象或 JSON 数组中元素的数量。 |
| 函数名称 |
说明 |
| regexp_extract(KEY,regular_expression) |
提取并返回目标字符串 KEY 中符合正则表达式的第一个子串。 |
| regexp_extract(KEY,regular_expression,n) |
提取目标字符串 KEY 中符合正则表达式的子串,然后返回与目标捕获组匹配的第一个子串。n 代表第 n 个捕获组,n 为从1开始的整数。 |
| regexp_extract_all(KEY,regular_expression) |
提取目标字符串 KEY 中符合正则表达式的子串,并返回所有子串的合集。 |
| regexp_extract_all(KEY,regular_expression,n) |
提取目标字符串 KEY 中符合正则表达式的子串,并返回与目标捕获组匹配的子串合集。n 代表第 n 个捕获组,n 为从1开始的整数。 |
| regexp_like(KEY,regular_expression) |
判断目标字符串 KEY 是否符合正则表达式。 |
| regexp_replace(KEY, regular_expression, replace_string) |
替换目标字符串 KEY 中符合正则表达式的子串,返回被替换后的字符串。 |
| regexp_replace(KEY,regular_expression) |
删除目标字符串 KEY 中符合正则表达式的子串。 |
| regexp_split(KEY,regular_expression) |
使用正则表达式分割目标字符串,返回被分割后的子串合集。 |
| 函数名称 |
说明 |
| array_agg(KEY) |
以数组形式返回 KEY 中的所有值。 |
| array_distinct(KEY) |
删除数组中重复的元素,仅保留唯一值。 |
| array_except(x, y) |
计算两个数组的差集。 |
| array_intersect(x, y) |
计算两个数组的交集。 |
| array_join(x, delimiter) |
使用指定的连接符 delimiter 将数组中的元素拼接为一个字符串。如果数组中包含 null 元素,则 null 元素将被忽略。 |
| array_join(x, delimiter, null_replacement) |
使用指定的连接符将数组中的元素拼接为一个字符串。如果数组中包含 null 元素,则 null 元素将被替换为 null_replacement。 |
| array_max(x) |
获取数组中的最大值。 |
| array_min(x) |
获取数组中的最小值。 |
| array_position(x, element) |
获取指定元素的下标,下标从1开始。如果指定元素不存在,则返回0。 |
| array_remove(x, element) |
删除数组中指定的元素。 |
| array_sort(x) |
对数组元素进行升序排序。 |
| array_union(x, y) |
计算两个数组的并集。 |
| cardinality(x) |
计算数组中元素的个数。 |
| contains(x, element) |
判断数组中是否包含指定元素。如果包含,则返回 true。 |
| element_at(x, y) |
返回数组中的第 y 个元素,y 从1开始。 |
| filter(x, lambda_expression) |
和 Lambda 表达式结合,用于过滤数组中的元素。只返回满足 Lambda 表达式的元素。 |
| flatten(x) |
将二维数组转换为一维数组。 |
| reduce(x, lambda_expression) |
根据 Lambda 表达式中的定义,对数组中的各个元素进行相加计算,然后返回计算结果。 |
| sequence(x, y) |
通过指定的起始值 x 返回一个数组,其元素为 x~y 内一组连续且递增的值。 |
| sequence(x, y, step) |
通过指定的起始值 x 返回一个数组,其元素为 x~y 内一组连续且递增的值(间隔为 step)。 |
| shuffle(x) |
对数组元素进行随机排列。 |
| slice(x, start, length) |
返回数组 x 的子集,start 指定索引开始的位置,length 指定子集中元素的个数。 |
| transform(x, lambda_expression) |
将 Lambda 表达式应用到数组的每个元素中。 |
| zip(x, y) |
将多个数组合并为一个二维数组,且各个数组中下标相同的元素组成一个新的数组。 |
| zip_with(x, y, lambda_expression) |
根据 Lambda 表达式中的定义将两个数组合并为一个数组。 |
Lambda 表达式需与函数一起使用,例如 filter 函数、reduce 函数、transform 函数、zip_with 函数,说明详见 Lambda 函数。
窗口函数用于对指定的多行数据进行计算并返回计算的结果,与 GROUP BY 的区别在于其仅会将计算结果附加到每一行数据上,而不会对行本身进行合并。函数说明详见 窗口函数。