SQL on log : 同比分析各种指标

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
简介: 同比环比函数 同比函数用于把当前区间的计算结果和之前一个指定区间的结果进行比较。 函数 含义 样例 compare(value, time_window) value为double或long类型,time_window为秒。

同比环比的需求场景

在业务分析,以及线上监控中,我们常常遇到这些需求:

  1. 对比分析今天的uv和昨天的uv,以及增长率。
  2. 对比分析今天每个小时的pv,和昨天每个小时的pv,进行对比画图。
  3. 最近15分钟和上一个15分钟对比,如果pv下降,立即短信通知告警。

同比环比函数

同比函数用于把当前区间的计算结果和之前一个指定区间的结果进行比较。

  • 函数语法:

    • compare(value, time_window)
  • value为double或long类型,time_window为秒。比较当前窗口计算出来的value值和 time_window计算出来的结果进行比较,返回值为数组类型,分别是当前值,time_window之前的值,当前相对于之前的增长比例。
  • 样例:

    • * | select compare( pv , 86400) from (select count(1) as pv from log)

1. 计算当前1小时和昨天同一时刻1小时的pv比例

查询的起止时间为: from=2018-7-25 14:00:00 , to=2018-07-25 15:00:00

* | select compare( pv , 86400) from (select count(1)  as pv from log)

参数中86400表示当前窗口减去86400秒
返回结果:

[9.0,19.0,0.47368421052631579]
其中9.0为从`2018-7-25 14:00:00`到`2018-07-25 15:00:00`的pv值。
19.0表示`2018-7-24 14:00:00`到`2018-07-24 15:00:00`的pv值。
0.47368421052631579表示当前窗口相对于之前窗口的比值。

如果要把数组展开成3列数字,需要这样写:

* | select diff[1],diff[2],diff[3] from(select compare( pv , 86400) as diff from (select count(1)  as pv from log))

2. 计算当前1小时,每分钟的pv曲线,和昨天一时刻的pv曲线,

查询的起止时间为:from=2018-7-25 14:00:00 , to=2018-07-25 15:00:00:

*| select t, compare( pv , 86400) as diff  from (select count(1)  as pv, date_format(from_unixtime(__time__), '%H:%i') as t from log group by t) group by t order by t

输出结果:

t diff
14:00 [9520.0,7606.0,1.2516434393899554]
14:01 [8596.0,8553.0,1.0050274757395066]
14:02 [8722.0,8435.0,1.0340248962655603]
14:03 [7499.0,5912.0,1.2684370771312586]

其中diff列的内容是一个数组,分别表示当前窗口的pv值,之前窗口的pv值,当前窗口/之前窗口的比例。

若要展开成曲线,则这样写:

*|select t, diff[1] as current, diff[2] as yestoday, diff[3] as percentage from(select t, compare( pv , 86400) as diff  from (select count(1)  as pv, date_format(from_unixtime(__time__), '%H:%i') as t from log group by t) group by t order by t)

结果可以配置成曲线图,两条曲线分别代表今天的值,昨天的值:

image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1天前
|
SQL 存储 自然语言处理
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
|
2月前
|
机器学习/深度学习 人工智能 运维
智能日志分析:用AI点亮运维的未来
智能日志分析:用AI点亮运维的未来
255 15
|
3天前
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
|
2月前
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
104 7
MySQL事务日志-Undo Log工作原理分析
|
3月前
|
运维 监控 Cloud Native
一行代码都不改,Golang 应用链路指标日志全知道
本文将通过阿里云开源的 Golang Agent,帮助用户实现“一行代码都不改”就能获取到应用产生的各种观测数据,同时提升运维团队和研发团队的幸福感。
239 23
|
3月前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
69 7
|
3月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
3月前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
3月前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
241 3
|
5月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1875 14
MySQL事务日志-Redo Log工作原理分析

相关产品

  • 日志服务