SQL on log : 同比分析各种指标-阿里云开发者社区

开发者社区> 云雷> 正文

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

简介: 同比环比函数 同比函数用于把当前区间的计算结果和之前一个指定区间的结果进行比较。 函数 含义 样例 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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4589 0
交互式分析(Hologres)2020年8月刊
交互式分析(Hologres)2020年8月刊将会为您带来8月产品、技术最新动态。
1992 0
glogin.sql配置不当引起sqlplus hang的假象分析
不久前遇到的一个问题,"故障"现象如下:A主机上跑了两个单实例的数据库testa和testb,对testa实例进行例行重启时先shutdown immediate,然后再通过sqlplus '/as sysdba'连进去尝试重启时发现,sqlplus Ha...
866 0
使用application log 分析navigation target解析错误
Created by Jerry Wang, last modified on Sep 20, 2015
23 0
+关注
云雷
日志计算驱动业务增长 让天下没有难分析的日志
103
文章
2
问答
来源圈子
更多
阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载