SQL on log : 同比分析各种指标
生活随笔
收集整理的這篇文章主要介紹了
SQL on log : 同比分析各种指标
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
同比環(huán)比的需求場景
在業(yè)務(wù)分析,以及線上監(jiān)控中,我們常常遇到這些需求:
同比環(huán)比函數(shù)
同比函數(shù)用于把當(dāng)前區(qū)間的計(jì)算結(jié)果和之前一個(gè)指定區(qū)間的結(jié)果進(jìn)行比較。
-
函數(shù)語法:
- compare(value, time_window)
- value為double或long類型,time_window為秒。比較當(dāng)前窗口計(jì)算出來的value值和 time_window計(jì)算出來的結(jié)果進(jìn)行比較,返回值為數(shù)組類型,分別是當(dāng)前值,time_window之前的值,當(dāng)前相對于之前的增長比例。
-
樣例:
- * | select compare( pv , 86400) from (select count(1) as pv from log)
1. 計(jì)算當(dāng)前1小時(shí)和昨天同一時(shí)刻1小時(shí)的pv比例
查詢的起止時(shí)間為: 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)參數(shù)中86400表示當(dāng)前窗口減去86400秒
返回結(jié)果:
如果要把數(shù)組展開成3列數(shù)字,需要這樣寫:
* | select diff[1],diff[2],diff[3] from(select compare( pv , 86400) as diff from (select count(1) as pv from log))2. 計(jì)算當(dāng)前1小時(shí),每分鐘的pv曲線,和昨天一時(shí)刻的pv曲線,
查詢的起止時(shí)間為: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輸出結(jié)果:
| 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列的內(nèi)容是一個(gè)數(shù)組,分別表示當(dāng)前窗口的pv值,之前窗口的pv值,當(dāng)前窗口/之前窗口的比例。
若要展開成曲線,則這樣寫:
*|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)結(jié)果可以配置成曲線圖,兩條曲線分別代表今天的值,昨天的值:
總結(jié)
以上是生活随笔為你收集整理的SQL on log : 同比分析各种指标的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行测-判断推理-类比推理-语法关系
- 下一篇: 加油站都需要什么手续_开一个加油站需要什