SQL on log : 同比分析各种指标
生活随笔
收集整理的這篇文章主要介紹了
SQL on log : 同比分析各种指标
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
同比環比的需求場景
在業務分析,以及線上監控中,我們常常遇到這些需求:
同比環比函數
同比函數用于把當前區間的計算結果和之前一個指定區間的結果進行比較。
-
函數語法:
- 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秒
返回結果:
如果要把數組展開成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輸出結果:
| 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)結果可以配置成曲線圖,兩條曲線分別代表今天的值,昨天的值:
總結
以上是生活随笔為你收集整理的SQL on log : 同比分析各种指标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行测-判断推理-类比推理-语法关系
- 下一篇: linux cmake编译源码,linu