日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/1/8 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL on log : 同比分析各种指标 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

同比環比的需求場景

在業務分析,以及線上監控中,我們常常遇到這些需求:

  • 對比分析今天的uv和昨天的uv,以及增長率。
  • 對比分析今天每個小時的pv,和昨天每個小時的pv,進行對比畫圖。
  • 最近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

    輸出結果:

    tdiff
    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 : 同比分析各种指标的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。