区間値比較および周期性値比較関数は、現在期間の計算結果と指定された前期間の計算結果を比較するために使用されます。

関数 説明
compare(value, time_window) この関数は、現在の期間において計算された値と time_window によって計算された値を比較します。

値のデータ型は double または long です。 time_window の単位は秒です。 戻り値は配列形式です。

可能な戻り値には、現在の値、time_window 前の値、および time_window 前の値に対する現在の値の比率が含まれます。 

*|select compare( pv , 86400) from (select count(1) as pv from log)
compare(value, time_window1, time_window2) この関数は、現在の値を time_window1 と time_window2 の前の期間の値と比較します。 比較結果は JSON 配列形式であり、値は次の順序で配置する必要があります。[current value, value before time_window1, value before time_window2, current value/value before time_window1, current value/value before time_window2]. * | select compare(pv, 86400, 172800) from ( select count(1) as pv from log)
compare(value, time_window1, time_window2, time_window3) この関数は、現在の値を time_window1、time_window2、および time_window3 より前の期間の値と比較します。 比較結果は JSON 配列形式であり。値は次の順序で配置する必要があります。[current value, value before time_window1, value before time_window2, value before time_window3, current value/Value before time_window1, current value/value before time_window2, current value/value before time_window3]。 * | select compare(pv, 86400, 172800,604800) from ( select count(1) as pv from log)
compare_result(value,time_window) この関数は compare(value,time_window)と同様に機能します。 ただし、戻り値は "Current value(Increased percentage%)"の形式の文字列型の値です。 増加したパーセント値は、デフォルトで小数点以下 2 桁に丸められます。 * | select compare_result(pv, 86400) from ( select count(1) as pv from log)
compare_result(value,time_window1, time_window2) この関数は compare(value,time_window1, time_window2)と同様に機能します。 ただし、戻り値は "Current value(Increased percentage compared with the first period%) (Increased percentage compared with the second period)"という形式の文字列型の値です。 増加したパーセント値は、デフォルトで小数点以下 2 桁に丸められます。 * | select compare_result(pv, 86400,172800) from ( select count(1) as pv from log)
ts_compare(value, time_window) この関数は、現在の値を time_window1time_window2 より前の期間の値と比較します。 比較結果はJSON配列形式であり、値は次の順序で配置する必要があります。[current value, value before time_window1, current value/value before time_window1, unix timestamp at the start time of the previous period]。

この関数は時系列関数を比較するために使用されます。 これには、GROUP BY 操作を time 列の SQL ステートメントに含める必要があります。

例: * | select t, ts_compare(pv, 86400 ) as d from(select date_trunc('minute',__time__ ) as t, count(1) as pv from log group by t order by t ) group by t は、現在の期間の 1 分ごとの計算結果と最後の期間の 1 分ごとの計算結果を比較することを示します。

比較結果:d:[1251.0,1264.0, 0.9897151898734177, 1539843780.0,1539757380.0]t:2018-10-19 14:23:00.000

  • 昨日と同じ期間に対する現在の時間の PV の比率を計算します。

    開始時間: 2018-07-25 14:00:00、終了時間: 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-07-25 14:00:00 から 2018-07-25 15:00:00 までの PV 値です。
    • 19.0 は、2018-07-24 14:00:00 から 2018-07-24 15:00:00 までの PV 値です。
    • 0.47368421052631579 は、前期間の PV 値に対する現在期間の PV 値の比率です。
    配列を 3 列の数値に展開するには、分析ステートメントは次のようになります:
    * | select diff[1],diff[2],diff[3] from(select compare( pv , 86400) as diff from (select count(1) as pv from log))
  • 現在の 1 時間ごとの PV と昨日と同じ期間の PV の比率を計算し、その結果を折れ線グラフで表示します。
    1. 昨日と同じ期間に対する現在の時間の毎分の PV の比率を計算します。 開始時間: 2018-07-25 14:00:00、終了時間: 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]
      そのうち、t は Hour:Minute の形式で時刻を示します。 diff 列の内容は、次のものを含む配列です。
      • 当期間の PV 値。
      • 前期間の PV 値。
      • 前期間の PV 値に対する当期間の PV 値の比率。
    2. クエリ結果を折れ線グラフで表示するには、次のステートメントを使用します。
      *|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)

      2 本の線は、今日と昨日の PV 値を示しています。

      図 1. 折れ線グラフ