最近更新时间:2024.04.19 13:54:16
首次发布时间:2024.01.22 17:18:37
本文档罗列了日志服务所支持的 SQL 函数。
注意
日志服务产品架构升级,支持更丰富的检索分析功能。
关于 1.0 架构与 2.0 架构的具体说明,请参考日志服务架构升级通知。
函数名称 | 函数语法 | 说明 |
---|---|---|
ARBITRARY(KEY) | 返回一组值中任意一个非空的值。 | |
AVG(KEY) | 计算一组值的算数平均值。 | |
BITWISE_AND_AGG(KEY) | 计算一组值中所有值按位与运算(AND)的结果。 | |
BITWISE_OR_AGG(KEY) | 计算一组值中所有值按位或运算(OR)的结果。 | |
BOOL_ADD(boolean_expression) | 判断是否所有值都满足指定的布尔表达式。 | |
BOOL_OR(boolean_expression) | 判断是否存在值满足指定的布尔表达式。 | |
CHECKSUM(KEY) | 计算一组值的校验和。 | |
COUNT(*) | 计算一组值的总数量。 | |
COUNT(1) | 计算一组值的数量,等同于 COUNT(*)。 | |
COUNT(KEY) | 计算一组值中不为 NULL 的值的数量。 | |
COUNT_IF (Boolean Expression) | 计算一组值中满足指定条件的值的数量。 | |
EVERY(boolean_expression) | 判断是否所有值都满足指定的布尔表达式。 | |
GEOMETRIC_MEAN(KEY) | 计算一组值的几何平均数。 | |
KURTOSIS(KEY) | 计算一组值的峰值。 | |
MAX(KEY) | 查询一组值中的最大值。 | |
MIN(KEY) | 查询一组值中的最小值。 | |
SUM(KEY) | 计算一组值的总和。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
CURRENT_DATE | 查询当前日期。 | |
CURRENT_TIME | 查询当前时间和时区。 | |
CURRENT_TIMESTAMP | 查询当前日期、时间和时区。 | |
CURRENT_TIMEZONE() | 查询当前时区。 | |
DATE(KEY) | 提取日期和时间中的日期部分。 | |
DATE_FORMAT(KEY, format) | 将 Timestamp 类型的日期或时间转化为其他指定格式。 | |
DATE_PARSE(KEY, format) | 将日期和时间字符串转换为其他指定格式。 | |
FROM_ISO8601_DATE(KEY) | 将 ISO8601 格式的日期转化为 Date 类型的日期。 | |
FROM_ISO8601_TIMESTAMP(KEY) | 将 ISO8601 格式的日期和时间转化为 Timestamp 类型的日期和时间。 | |
FROM_UNIXTIME(KEY) | 将 UNIX 时间戳转化为无时区的 Timestamp 类型的日期和时间。 | |
FROM_UNIXTIME(KEY, time zone) | 将 UNIX 时间戳转化为带时区的 Timestamp 类型的日期和时间。 | |
FROM_UNIXTIME(KEY, hours, minutes) | 将 UNIX 时间戳转化为带时区的 Timestamp 类型的日期和时间,且支持设置时区偏移量。 | |
LOCALTIME | 查询当前的本地时间。 | |
LOCALTIMESTAMP | 查询当前的本地日期和时间。 | |
NOW() | 查询当前日期和时间。 | |
TO_ISO8601(KEY) | 将 Date 类型或 Timestamp 类型的日期和时间转换为 ISO8601 格式的日期和时间。 | |
TO_UNIXTIME(KEY) | 将 Timestamp 类型的日期和时间转化成 UNIX 时间戳。 | |
DAY(KEY) | 提取日期和时间中的天数,以月为周期。 | |
DAY_OF_MONTH(KEY) | 提取日期和时间中的天数,以月为周期。 | |
DAY_OF_WEEK(KEY) | 提取日期和时间中的天数,以星期为周期。 | |
DAY_OF_YEAR(KEY) | 提取日期和时间中的天数,以年为周期。 | |
DOW(KEY) | 提取日期和时间中的天数,以星期为周期。 | |
DOY(KEY) | 提取日期和时间中的天数,以年为周期。 | |
EXTRACT(field from KEY) | 通过指定的 field,提取日期和时间中的日期或时间部分。 | |
HOUR(KEY) | 提取日期和时间中的小时数, 24 小时制。 | |
MINUTE(KEY) | 提取日期和时间中的分钟数。 | |
MONTH(KEY) | 提取日期和时间中的月份。 | |
QUARTER(KEY) | 返回日期所在季度。 | |
SECOND(KEY) | 提取日期和时间中的秒数。 | |
TIMEZONE_HOUR(KEY) | 计算时区的小时偏移量。 | |
TIMEZONE_MINUTE(KEY) | 计算时区的分钟偏移量。 | |
WEEK(KEY) | 计算目标日期是在一年中的第几周。 | |
WEEK_OF_YEAR(KEY) | 计算目标日期是在一年中的第几周。 | |
YEAR(KEY) | 提取日期和时间中的年份。 | |
YEAR_OF_WEEK(KEY) | 提取目标日期在 ISO 周日历中的年份。 | |
YOW(KEY) | 提取目标日期在 ISO 周日历中的年份。 | |
DATE_ADD(unit, N, KEY) | 在日期和时间中增加或减去指定的时间间隔。 | |
DATE_DIFF(unit, KEY1, KEY2) | 计算两个日期或时间点之间的差值。 | |
DATE_TRUNC(unit, KEY) | 根据您指定的时间单位截断日期或时间,并按照毫秒、秒、分钟、小时、日、月或年对齐。 | |
TIME_SERIES(KEY, window_time, format, padding_data) | 补全查询时间窗口内缺失的数据。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
CHR(KEY) | 将 ASCII 码转换为 ASCII 码的显示字符。 | |
CODEPOINT (KEY) | 将 ASCII 码的显示字符转换为 ASCII 码。 | |
CONCAT(KEY1, KEY2...) | 拼接多个字符串为一个字符串。 | |
FROM_UTF8(KEY) | 将二进制字符串解码为 UTF-8 字符,且使用默认字符 U+FFFD 替换无效字符。 | |
FROM_UTF8(KEY, replace_string) | 将二进制字符串解码为 UTF-8 字符,且使用自定义字符串替换无效字符。 | |
LENGTH(KEY) | 计算字符串的长度。 | |
LEVENSHTEIN_DISTANCE(KEY1, KEY2) | 计算两个字符串的最小编辑距离。 | |
LOWER(KEY) | 将字符串转换为小写形式。 | |
LPAD(KEY, length, lpad_string) | 在指定字符串的开头填充字符,填充到指定长度后返回结果字符串。 | |
LTRIM(KEY) | 删除字符串开头的空格。 | |
NORMALIZE(KEY) | 将字符串格式化为 NFC 格式。 | |
POSITION(sub_string in KEY) | 返回指定的子字符串在字符串中的位置。 | |
REPLACE(KEY, sub_string) | 删除指定的子字符串。 | |
REPLACE (KEY, sub_string, replace_string) | 将指定的子字符串替换为其他字符串。 | |
REVERSE(KEY) | 按照反向顺序返回字符串。 | |
RPAD(KEY, length, lpad_string) | 在指定字符串的结尾填充字符,填充到指定长度后返回结果字符串。 | |
RTRIM(KEY) | 删除字符串结尾的空格。 | |
SPLIT(KEY, delimeter) | 使用指定的分隔符对字符串进行拆分,并返回拆分后的子字符串合集。 | |
SPLIT(KEY, delimeter, limit) | 使用指定的分隔符对字符串进行拆分并使用 limit 参数限制拆分的个数,然后返回拆分后的子字符串集合。 | |
SPLIT_PART(KEY,delimeter,index) | 使用指定的分隔符对字符串进行拆分,并返回 index 位置的子字符串。 | |
SPLIT_TO_MAP(KEY, delimiter01, delimiter02) | 使用指定的第一个分隔符拆分字符串,再使用指定的第二个分隔符将第一次拆分结果中的字符串拆分为键值对模式。 | |
STRPOS(KEY, sub_string) | 用于查找子字符串在指定字符串中第一次出现的位置,从 1 开始计数。 | |
SUBSTR(KEY, start) | 提取从指定位置到字符串结尾的子字符串。 | |
SUBSTR(KEY, start, length) | 从指定位置开始提取子字符串,提取的长度为 | |
TO_UTF8(KEY) | 将字符串转换为 UTF-8 格式。 | |
TRIM(KEY) | 删除字符中开头和结尾的空格。 | |
UPPER(KEY) | 将字符串转化为大写形式。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
REGEXP_EXTRACT_ALL(KEY, regular_expression) | 提取与指定正则表达式匹配的子字符串,并返回所有子字符串的合集。 | |
REGEXP_EXTRACT_ALL(KEY, regular_expression, n) | 提取与指定正则表达式匹配的子字符串,并返回与目标捕获组匹配的子字符串合集。 | |
REGEXP_EXTRACT(KEY, regular_expression) | 提取与指定的正则表达式匹配的第一个子字符串。 | |
REGEXP_EXTRACT(KEY, regular_expression, n) | 提取与指定的正则表达式匹配的子字符串,然后返回与目标捕获组匹配的第一个子字符串。 | |
REGEXP_LIKE(KEY, regular_expression) | 判断字段值是否与指定的正则表达式匹配。 | |
REGEXP_REPLACE(KEY, regular_expression) | 删除与指定正则表达式匹配的子字符串,然后返回未被删除的字符串。 | |
REGEXP_REPLACE(KEY, regular_expression, replace_string) | 将与指定正则表达式匹配的子字符串替换为其他字符串,然后返回替换后的字符串。 | |
REGEXP_SPLIT(KEY, regular_expression) | 拆分目标字符串,返回拆分后的子字符串集合。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
COMPARE(KEY, n) | 对比当前时间范围内的计算结果与 n 秒之前时间范围内的计算结果。 | |
COMPARE(KEY, n1, n2, n3...) | 对比当前时间范围内的计算结果与 n1、 n2、n3 秒之前时间范围内的计算结果。 | |
TS_COMPARE(KEY, n) | 对比当前时间范围内的计算结果与 n 秒之前时间范围内的计算结果。 | |
TS_COMPARE(KEY, n1, n2, n3...) | 对比当前时间范围内的计算结果与 n1、 n2、n3 秒之前时间范围内的计算结果。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
ABS(KEY) | 计算目标值的绝对值。 | |
FLOOR(KEY) | 对目标值进行向下取整数。 | |
LOG(KEY) | 计算目标值的自然对数。 | |
LOG10(KEY) | 计算目标值以 10 为底的对数。 | |
POWER(KEY, y) | 计算目标值的 y 次幂。 | |
RAND() | 返回一个随机数。 | |
RANDOM() | 返回 [0,1) 之间的随机数。 | |
RANDOM(0, KEY) | 返回 [0,KEY) 之间的随机数。 | |
ROUND(KEY) | 对目标值进行四舍五入取整数。 | |
ROUND(KEY,n) | 对目标值进行四舍五入,并保留 n 位小数。 | |
SQRT(KEY) | 计算目标值的平方根。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
INVERSE_NORMAL_CDF(x, y, p) | 计算正态分布的逆累积分布函数。即求 v 的值,使得累积分布函数 |
函数名称 | 函数语法 | 说明 |
---|---|---|
ARRAY_AGG(KEY) | 聚合目标字段或表达式的值,并以数组形式返回。 | |
ARRAY_DISTINCT(KEY) | 删除数组中重复的元素。 | |
ARRAY_EXCEPT(KEY1, KEY2) | 剔除两个数组中的重复元素,并返回被剔除重复元素后的第一个数组。 | |
ARRAY_INTERSECT(KEY1, KEY2) | 返回两个数组的交集。 | |
ARRAY_JOIN(KEY, delimiter) | 使用指定的连接符将数组中的元素拼接为一个字符串。如果数组中包含 NULL 元素,则忽略 NULL 元素。 | |
ARRAY_JOIN(KEY, delimiter, null_replacement) | 使用指定的连接符将数组中的元素拼接为一个字符串。如果数组中包含 NULL 元素,则指定其他字符串代替 NULL 元素。 | |
ARRAY_MAX(KEY) | 计算数组元素中的最大值。 | |
ARRAY_MIN(KEY) | 计算数组元素中的最小值。 | |
ARRAY_REMOVE(KEY, element) | 删除数组中的某个元素。 | |
ARRAY_SORT(KEY) | 对数组中的元素进行升序排序。如果存在 NULL 元素,则将 NULL 元素排在最后。 | |
ARRAY_UNION(KEY1, KEY2) | 返回两个数组的并集。 | |
CARDINALITY(KEY) | 统计数组中元素的个数。 | |
CONCAT(KEY1, KEY2…) | 拼接多个数组为一个数组。 | |
CONTAINS(KEY, element) | 判断数组中是否包含某个元素。 | |
FILTER(KEY, lambda_expression) | 结合 FILTER 函数和 Lambda 表达式,用于过滤数组中的元素。 | |
REVERSE(KEY) | 对数组中的元素进行反向排列。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
JSON_ARRAY_CONTAINS(KEY, value) | 判断 JSON 数组中是否存在特定的元素。 | |
JSON_ARRAY_GET(KEY, index) | 根据指定的 JSON 下标提取对应的 JSON 元素。 | |
JSON_ARRAY_LENGTH(KEY) | 计算 JSON 数组长度,即 JSON 元素数量。 | |
json_EXTRACT(KEY, json_path) | 从 JSON 对象或 JSON 数组中提取一组 JSON 值(数组或对象)。 | |
JSON_EXTRACT_SCALAR(KEY, json_path) | 从 JSON 形式的字符串中提取一组标量值(字符串、整数或布尔值)。 | |
JSON_FORMAT(KEY) | 将 JSON 类型转化成字符串类型。 | |
JSON_PARSE(KEY) | 将 JSON 格式的字符串转化成 JSON 类型。 | |
JSON_SIZE(KEY, json_path) | 计算 JSON 对象或 JSON 数组中元素的数量。 |
函数名称 | 语法 | 说明 |
---|---|---|
IP_TO_CITY(KEY) | 分析目标 IPv4 地址所属城市,并返回城市的中文名称。 | |
IP_TO_CITY(KEY, 'en') | 分析目标 IPv4 地址所属城市,并返回城市的行政区划代码。 | |
IP_TO_CITY_GEO(KEY) | 分析目标 IPv4 地址所属城市的经纬度,每个城市只有一个经纬度。 | |
IP_TO_COUNTRY(KEY) | 分析目标 IPv4 地址所属国家或地区,并返回国家或地区的中文名称。 | |
IP_TO_COUNTRY(KEY, 'en') | 分析目标 IPv4 地址所属国家或地区,并返回国家或地区的代码。 | |
IP_TO_DOMAIN(KEY) | 判断目标 IPv4 地址是内网地址还是外网地址。 | |
IP_TO_GEO(KEY) | 分析目标 IPv4 地址所在位置的经纬度。 | |
IP_TO_PROVIDER(KEY) | 分析目标 IPv4 地址所对应的网络运营商。 | |
IP_TO_PROVINCE(KEY) | 分析目标 IPv4 地址所属省份,并返回省份的中文名称。 | |
IP_TO_PROVINCE(KEY, 'en') | 分析目标 IPv4 地址所属省份,并返回省份的行政区划代码。 | |
IS_PREFIX_SUBNET_OF(x, KEY) | 判断目标 IPv4 网段是否为某网段的子网。 | |
IS_SUBNET_OF(x, KEY) | 判断目标 IPv4 地址是否在某网段内。 | |
IP_SUBNET_RANGE(KEY) | 获取 IPv4 网段范围。 | |
IPV6_TO_CITY(KEY) | 分析目标 IPv6 地址所属城市的名称。 | |
IPV6_TO_CITY_GEO(KEY) | 分析目标 IPv6 地址所属城市的经纬度。 | |
IPV6_TO_COUNTRY(KEY) | 分析目标 IPv6 地址所属国家或地区。 | |
IPV6_TO_DOMAIN(KEY) | 判断目标 IPv6 地址是内网地址还是外网地址。 | |
IPV6_TO_PROVIDER(KEY) | 分析目标 IPv6 地址所对应的网络运营商。 | |
IPV6_TO_PROVINCE(x)) | 分析目标 IPv6 地址所属省份。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
URL_ENCODE(KEY) | 对 URL 进行编码。 | |
URL_DECODE(KEY) | 对 URL 进行解码。 | |
URL_EXTRACT_FRAGMENT(KEY) | 从 URL 中提取 Fragment 信息。 | |
URL_EXTRACT_HOST(KEY) | 从 URL 中提取 Host 信息。 | |
URL_EXTRACT_PARAMETER(KEY, parameter name) | 从 URL 的 Query 部分提取指定参数的值。 | |
URL_EXTRACT_PATH(KEY) | 从 URL 中提取访问路径信息。 | |
URL_EXTRACT_PORT(KEY) | 从 URL 中提取端口信息。 | |
URL_EXTRACT_PROTOCOL(KEY) | 从 URL 中提取协议信息。 | |
URL_EXTRACT_QUERY(KEY) | 从 URL 中提取完整的 Query 部分。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
approx_percentile(KEY, percentage) | 对一组值进行正序排列,返回大约处于某百分位的 KEY 值。 | |
approx_percentile(KEY, array[percentage01, percentage02...]) | 对一组值进行正序排列,返回大约处于百分位 1、百分位 2 的 KEY 值。 | |
approx_percentile(KEY, weight, percentage) | 对一组值和权重的乘积结果进行正序排列,返回大约处于某百分位的 KEY 值。 | |
approx_percentile(KEY, weight, array[percentage01, percentage02...]) | 对一组值和权重的乘积结果进行正序排列,返回大约处于百分位 1、百分位 2 的 KEY 值。 | |
approx_percentile(KEY, weight, percentage, accuracy) | 对一组值和权重的乘积结果进行正序排列,返回大约处于某百分位的值。支持设置准确度。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
FROM_BASE64(KEY) | 将 BASE64 编码的字符串解码为二进制类型。 | |
FROM_BASE64URL(KEY) | 使用 URL 安全字符将 BASE64 编码的字符串解码为二进制类型。 | |
FROM_HEX(KEY) | 将十六进制类型转化成二进制类型。 | |
LENGTH(KEY) | 计算二进制类型字符串的长度。 | |
MD5(KEY) | 对二进制类型字符串进行 MD5 编码。 | |
TO_BASE64(KEY) | 对二进制类型字符串进行 BASE64 编码。 | |
TO_BASE64URL(KEY) | 使用 URL 安全字符将二进制类型字符串进行 BASE64 编码。 | |
TO_HEX(KEY) | 将二进制类型转化成十六进制类型。 | |
SHA1(KEY) | 对二进制类型字符串进行 SHA1 加密。 | |
SHA256(KEY) | 对二进制类型字符串进行 SHA256 加密。 | |
SHA512() | 对二进制类型字符串进行 SHA512 加密。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
BITWISE_AND(x, y) | 对 x 和 y 进行与运算。 | |
BITWISE_NOT(x) | 对 x 的所有位进行取反运算。 | |
BITWISE_OR(x, y) | 对 x 和 y 进行或运算。 | |
BITWISE_XOR(x, y) | 对 x 和 y 进行异或运算。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
GEOHASH(KEY) | 对纬度和经度进行 GEOHASH 编码。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
BAR(x, width) | 绘制一条起始颜色为红色,结束颜色为绿色的 ANSI 条形图,其中 width 定义了整条 ANSI 条形图的宽度,然后通过 x 截取并返还其中一段条形图。 | |
BAR(x, width, low_color, high_color) | 绘制一条起始颜色和结束颜色为自定义颜色的 ANSI 条形图,其中 width 定义了整条 ANSI 条形图的宽度,然后通过 x 截取并返还其中一段条形图。 | |
COLOR(string) | 将表示颜色的字符串转换为 Color 类型。 | |
COLOR(x, low, high, low_color, high_color) | 通过判断 x 在 low 和 high 之间的占比来指定 low_color 和 high_color 的份量,然后返回一个混合后颜色。 | |
COLOR(y, low_color, high_color) | 通过 y 指定 low_color 和 high_color 的份量,然后返回一个混合后的颜色。 | |
RENDER(boolean expression) | 使用默认颜色渲染返回结果。布尔表达式为真时,返回绿色勾;否则返回红色叉。 | |
RENDER(x, color) | 使用自定义的颜色渲染返回结果。 | |
RGB(red, green, blue) | 通过指定的 RGB 值返回一个颜色值。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
MOBILE_CARRIER(KEY) | 查询电话号码所属的运营商。 | |
MOBILE_CITY(KEY) | 查询电话号码所属的城市。 | |
MOBILE_PROVINCE(KEY) | 查询电话号码所属待省份。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
CONVERT_DATA_SIZE(KEY) | 系统自动判断最优的换算单位,换算数据量的单位。 | |
CONVERT_DATA_SIZE(KEY, unit) | 使用指定的换算单位,换算数据量的单位。 | |
FORMAT_DATA_SIZE(KEY, unit) | 使用指定单位换算 Byte 单位的数据量。 | |
PARSE_DATA_SIZE(KEY) | 将数据量的单位换算为 Byte。 | |
TO_DATA_SIZE_B(KEY) | 将数据量的单位换算为 Byte。返回类型为 double。 | |
TO_DATA_SIZE_KB(KEY) | 将数据量的单位换算为 KB。 | |
TO_DATA_SIZE_MB(KEY) | 将数据量的单位换算为 MB。 | |
TO_DATA_SIZE_GB(KEY) | 将数据量的单位换算为 GB。 | |
TO_DATA_SIZE_TB(KEY) | 将数据量的单位换算为 TB。 | |
TO_DATA_SIZE_PB(KEY) | 将数据量的单位换算为 PB。 | |
FORMAT_DURATION(KEY) | 将以秒为单位的时间间隔格式化为 | |
PARSE_DURATION(KEY) | 将时间间隔格式化为 | |
TO_DAYS(KEY) | 将时间间隔的单位换算为天。 | |
TO_MILLISECONDS(KEY) | 将时间间隔的单位换算为毫秒。 | |
TO_MINUTES(KEY) | 将时间间隔的单位换算为分钟。 | |
TO_MOST_SUCCINCT_TIME_UNIT(KEY) | 使用系统自动判断的最优换算单位对时间间隔进行换算。 | |
TO_SECONDS(KEY) | 将时间间隔单位转换为秒。 | |
TO_NANOSECONDS(KEY) | 将时间间隔单位转换为纳秒。 | |
TO_MICROSECONDS(KEY) | 将时间间隔单位转换为微秒。 | |
TO_HOURS(KEY) | 将时间间隔单位转换为小时。 |
函数名称 | 语法 | 说明 |
---|---|---|
WINDOW_FUNNEL(sliding_window, | 在滑动的时间窗口中搜索事件链并计算事件链中发生的最大连续的事件数。 | |
WINDOW_FUNNEL(sliding_window, | 在滑动的时间窗口中搜索事件链并计算事件链中发生的最大连续的事件数。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
LAG(KEY, offset, default_value) | 查询分区内位于当前行上方第 offset 行的值。 | |
LEAD(KEY, offset, default_value) | 查询分区内位于当前行下方第 offset 行的值。 |
函数名称 | 函数语法 | 说明 |
---|---|---|
TYPEOF(KEY) | 查询 KEY 的数据类型。 |