このトピックでは、比較期間関数の構文について説明します。 このトピックでは、関数の使用方法の例も示します。
次の表に、Simple Log Serviceでサポートされている期間比較機能を示します。
分析ステートメントで文字列を使用する場合は、文字列を単一引用符 ('') で囲む必要があります。 囲まれていない文字列または二重引用符 ("") で囲まれている文字列は、フィールド名または列名を示します。 たとえば、'status' はステータス文字列を示し、statusまたは "status" はステータスログフィールドを示します。
関数 | 構文 | 説明 | SQLでサポート | SPLでサポート |
compare( x, n) | 現在の時間帯の計算結果とn秒前の時間帯の計算結果を比較します。 | √ | × | |
compare( x、n1、n2、n3 ...) | 現在の時間帯の計算結果を、n1、n2、n3秒前の複数の時間帯の計算結果と比較します。 | √ | × | |
ts_compare( x, n) | 現在の時間帯の計算結果とn秒前の時間帯の計算結果を比較します。 | √ | × | |
ts_compare( x、n1、n2、n3 ...) | 現在の時間帯の計算結果を、n1、n2、n3秒前の複数の時間帯の計算結果と比較します。 | √ | × |
compare関数を使用する場合、データの比較に基づく時間は同じでなければなりません。
たとえば、比較機能を使用して、現在の時間のデータと前日の同じ期間のデータを比較できます。 ただし、比較機能を使用して、現在の時間のデータと前の時間のデータを比較することはできません。
ts_compare関数のクエリおよび分析結果は、GROUP by句を使用して時間列ごとにグループ化する必要があります。
比較関数
比較機能は、現在の時間帯の計算結果とn秒前の時間帯の計算結果とを比較する。
構文
現在の期間の計算結果とn秒前の期間の計算結果を比較するには、次の構文を使用します。
compare(x, n)
現在の期間の計算結果を、n1、n2、n3秒前の複数の期間の計算結果と比較するには、次の構文を使用します。
compare(x, n1, n2, n3...)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、double型またはlong型です。 |
n | タイムウィンドウ。 単位は秒です。 例: 3600、86400、604800、および31622400。 値は、1時間、1日、1週間、および1年を示す。 |
戻り値のデータ型
配列型。 戻り値の形式は、[現在の時間帯の計算結果、n秒前の時間帯の計算結果、n秒前の時間帯の計算結果に対する現在の時間帯の計算結果の比率] です。
例
例1: 現在の時間のページビュー (PV) と前日の同じ期間のPVの比率を計算します。
時間範囲を1時間 (時間枠) に設定し、次のクエリ文を実行します。 86400は、現在の時刻から86,400秒を引いたものを指定します。これは1日に相当します。 logは、使用するLogstoreの名前を指定します。
クエリおよび分析結果を配列に表示するには、次のクエリ文を実行します。
クエリ文 (デバッグ)
* | SELECT compare(PV, 86400) FROM ( SELECT count(*) AS PV FROM log )
クエリと分析結果
3337.0は現在の時間のPVを示します。 例: 2020年12月25日の14:00:00から15:00:00までのPV。
3522.0は、前日の同じ期間のPVを示します。 例: 2020年12月24日の14:00:00から15:00:00までのPV。
0.947473026689381は、前日の同じ期間のPVに対する現在の時間のPVの比率を示します。
クエリと分析の結果を複数の列に表示するには、次のクエリ文を実行します。
クエリ文 (デバッグ)
* | SELECT diff [1] AS today, diff [2] AS yesterday, diff [3] AS ratio FROM ( SELECT compare(PV, 86400) AS diff FROM ( SELECT count(*) AS PV FROM log ) )
compare関数の結果は配列です。 上記のクエリステートメントでは、diffは結果のエイリアスを指定し、diff [1] は配列の最初の値を指定します。
クエリと分析結果
3337.0は現在の時間のPVを示します。 例: 2020年12月25日の14:00:00から15:00:00までのPV。
3522.0は、前日の同じ期間のPVを示します。 例: 2020年12月24日の14:00:00から15:00:00までのPV。
0.947473026689381は、前日の同じ期間のPVに対する現在の時間のPVの比率を示します。
例2: 現在の時間のリクエストステータスでリクエストメソッドの数を照会し、現在の時間の数を前日の同じ期間の数と比較します。
時間範囲を1時間 (時間枠) に設定し、次のクエリ文を実行します。 3600は、現在の時刻から3,600秒を引いたものを指定します。これは1時間に相当します。 logは、使用するLogstoreの名前を指定します。
クエリ文 (デバッグ)
* | SELECT status, request_method, compare(PV, 3600) FROM ( SELECT status, request_method, count(*) AS PV FROM log GROUP BY status, request_method ) GROUP BY status, request_method
クエリと分析結果
ts_compare関数
ts_compare関数は、現在の時間帯の計算結果とn秒前の時間帯の計算結果とを比較する。
ts_compare関数のクエリおよび分析結果は、GROUP by句を使用して時間列ごとにグループ化する必要があります。
構文
現在の期間の計算結果とn秒前の期間の計算結果を比較するには、次の構文を使用します。
ts_compare(x, n)
現在の期間の計算結果を、n1、n2、n3秒前の複数の期間の計算結果と比較するには、次の構文を使用します。
ts_compare(x, n1, n2, n3 ..)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、double型またはlong型です。 |
n | タイムウィンドウ。 単位は秒です。 例: 3600、86400、604800、および31622400。 値は、1時間、1日、1週間、および1年を示す。 |
戻り値のデータ型
配列型。 戻り値は次の形式です。[現在の時間帯の計算結果、n秒前の時間帯の計算結果、現在の時間帯の計算結果とn秒前の時間帯の計算結果の比率、n秒前の時間帯のUNIXタイムスタンプ] 。
例
例1: 前日と2日前の同じ期間のPVに対する、今日の1時間ごとのPVの比率を計算します。
時間範囲を [今日 (時間枠)] に設定し、次のクエリ文を実行します。 86400は、現在の時刻から86,400秒を引いたものを指定します。これは1日に相当します。 172800は、現在時刻から172,800秒を引いた値を指定します。これは2日に相当します。 logは、使用するLogstoreの名前を指定します。 date_trunc('hour' ,__ time__ ) は、戻り値が時間で切り捨てられることを指定します。
クエリおよび分析結果を配列に表示するには、次のクエリ文を実行します。
クエリ文 (デバッグ)
* | SELECT time, ts_compare(PV, 86400, 172800) as diff FROM ( SELECT count(*) as PV, date_trunc('hour', __time__) AS time FROM log GROUP BY time ) GROUP BY time ORDER BY time
クエリと分析結果
1174.0は、現在の期間のPVを示します。 例: 2022年9月22日の00:00から01:00までのPV。
1191.0は、前日の同じ期間のPVを示します。 例: 2022年9月21日の00:00から01:00までのPV。
1253.0は、2日前の同じ期間のPVを示します。 例: 2022年9月20日の00:00から01:00までのPV。
0.9857262804366079は、前日の同じ期間のPVに対する現在の期間のPVの比率を示します。
0.936951316839585は、2日前の同じ期間のPVに対する現在の期間のPVの比率を示します。
1663689600.0は、2022年9月21日の00:00のUNIXタイムスタンプを示します。
1663603200.0は、2022年9月20日の00:00のUNIXタイムスタンプを示します。
説明クエリおよび分析結果で返される時間は、実際のシナリオによって異なります。
クエリと分析の結果を複数の列に表示するには、次のクエリ文を実行します。
クエリ文 (デバッグ)
* | SELECT time, diff [1] AS day1, diff [2] AS day2, diff [3] AS day3, diff [4] AS ratio1, diff [5] AS ratio2 FROM ( SELECT time, ts_compare(PV, 86400, 172800) AS diff FROM ( SELECT count(*) as PV, date_trunc('hour', __time__) AS time FROM log GROUP BY time ) GROUP BY time ORDER BY time )
クエリと分析結果
例2: 1時間ごとのPVと当日の前の1時間のPVとの比を計算する。
時間範囲を [今日 (相対)] に設定し、次のクエリ文を実行します。 3600は、現在の時刻から3,600秒を引いたものを指定します。これは1時間に相当します。 logは、使用するLogstoreの名前を指定します。 date_trunc('hour' ,__ time__ ) は、date_trunc関数を使用して時間値を時間で切り捨てることを指定します。
クエリ文 (デバッグ)
* | SELECT time, ts_compare(PV, 3600) AS data FROM( SELECT date_trunc('hour', __time__) AS time, count(*) AS PV FROM log GROUP BY time ORDER BY time ) GROUP BY time
クエリと分析結果
説明クエリおよび分析結果で返される時間は、実際のシナリオによって異なります。