日志服务常用函数及使用场景

本文是向大家介绍日志服务一些常用函数,大家在实际工作中可以参考使用。

1、arbitrary函数

arbitrary函数用于返回x中任意一个非空的值。

语法

arbitrary(x)

参数说明

参数说明

x参数值为任意数据类型。

返回值类型

与参数值的数据类型一致。

示例:查询某个场景任意一个tarceid

分析语句:content.business: 查询首页轮播 | SELECT arbitrary("content.trace_id")

2、count函数

count函数用于计数。

语法

·        统计所有的日志条数。

count(*)

·        统计所有的日志条数。等同于count(*)。

count(1)

·        统计x中值不为NULL的日志条数。

count(x)

参数说明

参数说明

x参数值为任意数据类型。

返回值类型

integer类型。

示例:查询某业务一段时间pv总量

分析语句: * | select count(*) as pv

3、split_part函数

split_part函数通过指定的分隔符拆分字符串,并返回指定位置的内容。

语法

split_part(x, delimeter, part)

参数说明

参数说明

x参数值为varchar类型。

delimeter分隔符。

part大于0的整数。

返回值类型

varchar类型。

示例:获取某日志中uid

分析语句:*|SELECT  '北京分省订购',split_part(split_part(split_part("content.inParams",'uid',2 ),',',1),'"',3) from log where "content.business"='分省订购-北京订购接口' and "content.consumer" = 'mfbizcore'

4、substr函数

substr函数用于返回字符串中指定位置的子串。

语法

·        返回字符串中指定位置的子串。

substr(x, start)

·        返回字符串中指定位置的子串,并指定子串长度。

substr(x,start,length)

参数说明

参数说明

x参数值为varchar类型。

start开始提取子串的位置,从1开始。

length子串的长度。

返回值类型

varchar类型。

示例:统计小米手机一段时间总量

分析语句:* and content.mobile: xiaomi | select lower(substr(“content.mobile”,1,6)) as mobile,count(*) group by mobile

5、time_series函数

time_series函数用于补全您查询时间窗口内缺失的数据。

注意 time_series函数必须搭配GROUP BY语法和ORDER BY语法使用,且ORDER BY语法不支持DESC排序方式。

语法

time_series(x, window_time, format, padding_data)

参数说明

参数说明

x时间列,例如__time__。时间列的值为long类型或timestamp类型。

window_time窗口大小,单位为s(秒)、m(分)、h(小时)、d(天)。例如2h、5m、3d。

format返回结果的时间格式。

padding_data补全的内容。包括:

·        0:将缺失的值设置为0。

·        null:将缺失的值设置为null。

·        last:将缺失的值设置了上一个时间点对应的值。

·        next:将缺失的值设置了下一个时间点对应的值。

·        avg:将缺失的值设置为前后两个时间点的平均值。

返回值类型

varchar类型。

示例:统计每小时pv

分析语句:* | select time_series(__time__, '1h', '%Y-%m-%d %H:%i:%s', '0')  as time, count(*) as pv from log group by time order by time

6、compare函数

compare函数用于对比当前时间周期内的计算结果与n秒之前时间周期内的计算结果。

语法

·        对比当前时间周期内的计算结果与n秒之前时间周期内的计算结果。

compare(x, n)

·        对比当前时间周期内的计算结果与n1、n2、n3秒之前时间周期内的计算结果。

compare(x, n1, n2, n3...)

参数说明

参数说明

x参数值为double类型或long类型。

n时间窗口,单位为秒。例如3600(1小时)、86400(1天)、604800(1周)、31622400(1年)。

返回值类型

JSON数组。格式为[当前计算结果, n秒前的计算结果, 当前计算结果与n秒前计算结果的比值, n秒前的UNIX时间戳]。

示例:统计某时间段与昨天同时段的域名访问量比值

分析语句:* and request_uri: "qcj/api/activity/show" and http_user_agent: AliApp  and http_user_agent: "MiniProgram APXWebView"  | SELECT yuming,diff [1] AS today,diff [2] AS yesterday,round((1-diff [3])*100) AS ratio FROM  (SELECT yuming,compare(PV, 86400) AS diff FROM      ( select count(*) as pv,split_part(http_referer, '/', 3) as yuming from log GROUP by yuming  )GROUP by yuming)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容