Topik ini menjelaskan sintaksis fungsi periode perbandingan dan memberikan contoh penggunaannya.
Tabel berikut menjelaskan fungsi periode perbandingan yang didukung oleh Simple Log Service.
Jika Anda ingin menggunakan string dalam pernyataan analitik, apit string tersebut dengan tanda kutip tunggal (''). String yang tidak diapit atau diapit dengan tanda kutip ganda ("") menunjukkan nama bidang atau kolom. Sebagai contoh, 'status' menunjukkan string status, sedangkan status atau "status" menunjukkan bidang log status.
Fungsi | Sintaksis | Deskripsi | Didukung di SQL | Didukung di SPL |
compare(x, n) | Membandingkan hasil perhitungan periode waktu saat ini dengan hasil perhitungan periode waktu n detik sebelumnya. | √ | × | |
compare(x, n1, n2, n3...) | Membandingkan hasil perhitungan periode waktu saat ini dengan hasil perhitungan beberapa periode waktu n1, n2, dan n3 detik sebelumnya. | √ | × | |
ts_compare(x, n) | Membandingkan hasil perhitungan periode waktu saat ini dengan hasil perhitungan periode waktu n detik sebelumnya. | √ | × | |
ts_compare(x, n1, n2, n3...) | Membandingkan hasil perhitungan periode waktu saat ini dengan hasil perhitungan beberapa periode waktu n1, n2, dan n3 detik sebelumnya. | √ | × |
Saat menggunakan fungsi compare, waktu yang digunakan sebagai dasar perbandingan data harus sama.
Sebagai contoh, Anda dapat menggunakan fungsi compare untuk membandingkan data jam saat ini dengan data periode waktu yang sama pada hari sebelumnya. Namun, Anda tidak dapat menggunakan fungsi compare untuk membandingkan data jam saat ini dengan data jam sebelumnya.
Hasil kueri dan analisis fungsi ts_compare harus dikelompokkan berdasarkan kolom waktu menggunakan klausa GROUP BY.
Fungsi compare dan ts_compare tidak mendukung penggunaan bersarang.
fungsi compare
Fungsi compare membandingkan hasil perhitungan periode waktu saat ini dengan hasil perhitungan periode waktu n detik sebelumnya.
Sintaksis
Untuk membandingkan hasil perhitungan periode waktu saat ini dengan hasil perhitungan periode waktu n detik sebelumnya, gunakan sintaksis berikut:
compare(x, n)Untuk membandingkan hasil perhitungan periode waktu saat ini dengan hasil perhitungan beberapa periode waktu n1, n2, dan n3 detik sebelumnya, gunakan sintaksis berikut:
compare(x, n1, n2, n3...)
Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah tipe double atau long. |
n | Jendela waktu. Satuan: detik. Contoh: 3600, 86400, 604800, dan 31622400. Nilai-nilai tersebut masing-masing menunjukkan 1 jam, 1 hari, 1 minggu, dan 1 tahun. |
Tipe nilai kembali
Tipe array. Nilai kembali berformat sebagai berikut: [Hasil perhitungan periode waktu saat ini, Hasil perhitungan periode waktu n detik sebelumnya, Rasio hasil perhitungan periode waktu saat ini terhadap hasil perhitungan periode waktu n detik sebelumnya].
Contoh
Contoh 1: Hitung rasio jumlah tampilan halaman (PV) jam saat ini terhadap PV periode waktu yang sama pada hari sebelumnya.
Atur rentang waktu menjadi 1 Hour(Time Frame) dan jalankan pernyataan kueri berikut. 86400 menentukan waktu saat ini dikurangi 86.400 detik, yang setara dengan satu hari. log menentukan nama Logstore yang digunakan.
Untuk menampilkan hasil kueri dan analisis dalam array, jalankan pernyataan kueri berikut:
Pernyataan kueri (Debug)
* | SELECT compare(PV, 86400) FROM ( SELECT count(*) AS PV FROM log )Hasil kueri dan analisis

3337.0 menunjukkan PV jam saat ini. Contoh: PV dari 14:00:00 hingga 15:00:00 pada 25 Desember 2020.
3522.0 menunjukkan PV periode waktu yang sama pada hari sebelumnya. Contoh: PV dari 14:00:00 hingga 15:00:00 pada 24 Desember 2020.
0.947473026689381 menunjukkan rasio PV jam saat ini terhadap PV periode waktu yang sama pada hari sebelumnya.
Untuk menampilkan hasil kueri dan analisis dalam beberapa kolom, jalankan pernyataan kueri berikut:
Pernyataan kueri (Debug)
* | 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 ) )Hasil fungsi compare adalah array. Dalam pernyataan kueri di atas, diff menentukan alias untuk hasil, dan diff [1] menentukan nilai pertama dalam array.
Hasil kueri dan analisis

3337.0 menunjukkan PV jam saat ini. Contoh: PV dari 14:00:00 hingga 15:00:00 pada 25 Desember 2020.
3522.0 menunjukkan PV periode waktu yang sama pada hari sebelumnya. Contoh: PV dari 14:00:00 hingga 15:00:00 pada 24 Desember 2020.
0.947473026689381 menunjukkan rasio PV jam saat ini terhadap PV periode waktu yang sama pada hari sebelumnya.
Contoh 2: Kueri jumlah metode permintaan berdasarkan status permintaan jam saat ini, lalu bandingkan jumlah jam saat ini dengan jumlah periode waktu yang sama pada hari sebelumnya.
Atur rentang waktu menjadi 1 Hour(Time Frame) dan jalankan pernyataan kueri berikut. 3600 menentukan waktu saat ini dikurangi 3.600 detik, yang setara dengan 1 jam. log menentukan nama Logstore yang digunakan.
Pernyataan kueri (Debug)
* | 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_methodHasil kueri dan analisis

fungsi ts_compare
Fungsi ts_compare membandingkan hasil perhitungan periode waktu saat ini dengan hasil perhitungan periode waktu n detik sebelumnya.
Hasil kueri dan analisis fungsi ts_compare harus dikelompokkan berdasarkan kolom waktu menggunakan klausa GROUP BY.
Sintaksis
Untuk membandingkan hasil perhitungan periode waktu saat ini dengan hasil perhitungan periode waktu n detik sebelumnya, gunakan sintaksis berikut:
ts_compare(x, n)Untuk membandingkan hasil perhitungan periode waktu saat ini dengan hasil perhitungan beberapa periode waktu n1, n2, dan n3 detik sebelumnya, gunakan sintaksis berikut:
ts_compare(x, n1, n2, n3...)
Parameter
Parameter | Deskripsi |
x | Nilai parameter ini adalah tipe double atau long. |
n | Jendela waktu. Satuan: detik. Contoh: 3600, 86400, 604800, dan 31622400. Nilai-nilai tersebut masing-masing menunjukkan 1 jam, 1 hari, 1 minggu, dan 1 tahun. |
Tipe nilai kembali
Tipe array. Nilai kembali berformat sebagai berikut: [Hasil perhitungan periode waktu saat ini, Hasil perhitungan periode waktu n detik sebelumnya, Rasio hasil perhitungan periode waktu saat ini terhadap hasil perhitungan periode waktu n detik sebelumnya, Timestamp UNIX periode waktu n detik sebelumnya].
Contoh
Contoh 1: Hitung rasio PV setiap jam hari ini terhadap PV periode waktu yang sama pada hari sebelumnya dan dua hari sebelumnya.
Atur rentang waktu menjadi Today(Time Frame) dan jalankan pernyataan kueri berikut. 86400 menentukan waktu saat ini dikurangi 86.400 detik, yang setara dengan satu hari. 172800 menentukan waktu saat ini dikurangi 172.800 detik, yang setara dengan dua hari. log menentukan nama Logstore yang digunakan. date_trunc('hour',__time__ ) menentukan bahwa nilai kembali dipotong berdasarkan jam.
Untuk menampilkan hasil kueri dan analisis dalam array, jalankan pernyataan kueri berikut:
Pernyataan kueri (Debug)
* | 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 timeHasil kueri dan analisis

1174.0 menunjukkan PV periode waktu saat ini. Contoh: PV dari 00:00 hingga 01:00 pada 22 September 2022.
1191.0 menunjukkan PV periode waktu yang sama pada hari sebelumnya. Contoh: PV dari 00:00 hingga 01:00 pada 21 September 2022.
1253.0 menunjukkan PV periode waktu yang sama dua hari sebelumnya. Contoh: PV dari 00:00 hingga 01:00 pada 20 September 2022.
0.9857262804366079 menunjukkan rasio PV periode waktu saat ini terhadap PV periode waktu yang sama pada hari sebelumnya.
0.936951316839585 menunjukkan rasio PV periode waktu saat ini terhadap PV periode waktu yang sama dua hari sebelumnya.
1663689600.0 menunjukkan timestamp UNIX pada 00:00 tanggal 21 September 2022.
1663603200.0
CatatanWaktu yang ditampilkan dalam hasil kueri dan analisis bervariasi berdasarkan skenario aktual.
Untuk menampilkan hasil kueri dan analisis dalam beberapa kolom, jalankan pernyataan kueri berikut:
Pernyataan kueri (Debug)
* | 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 )Hasil kueri dan analisis

Contoh 2: Hitung rasio PV setiap jam terhadap PV satu jam sebelumnya pada hari saat ini.
Atur rentang waktu menjadi Today(Relative) dan jalankan pernyataan kueri berikut. 3600 menentukan waktu saat ini dikurangi 3.600 detik, yang setara dengan 1 jam. log menentukan nama Logstore yang digunakan. date_trunc('hour',__time__ ) menentukan bahwa fungsi date_trunc digunakan untuk memotong nilai waktu berdasarkan jam.
Pernyataan kueri (Debug)
* | 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 timeHasil kueri dan analisis
CatatanWaktu yang ditampilkan dalam hasil kueri dan analisis bervariasi berdasarkan skenario aktual.