Topik ini menjelaskan sintaks fungsi periode komparatif dan memberikan contoh penggunaannya.
Log Service mendukung fungsi periode komparatif berikut.
Jika Anda ingin menggunakan string dalam pernyataan analitik, bungkus string tersebut dengan tanda petik tunggal (''). String yang tidak dibungkus atau dibungkus dengan tanda petik ganda ("") menunjukkan nama field atau nama kolom. Misalnya, 'status' menunjukkan string status, sedangkan status atau "status" menunjukkan field log status.
|
Function |
Syntax |
Description |
SQL |
SPL |
|
compare(x, n) |
Membandingkan hasil pada periode waktu saat ini dengan hasil dari periode n detik sebelumnya. |
√ |
× |
|
|
compare(x, n1, n2, n3...) |
Membandingkan hasil pada periode waktu saat ini dengan hasil dari periode n1, n2, n3... detik sebelumnya. |
√ |
× |
|
|
ts_compare(x, n) |
Membandingkan hasil untuk waktu yang disejajarkan (misalnya, per jam) pada periode waktu saat ini dengan hasil pada waktu yang sesuai dari periode n detik sebelumnya. |
√ |
× |
|
|
ts_compare(x, n1, n2, n3...) |
Membandingkan hasil untuk waktu yang disejajarkan (misalnya, per jam) pada periode waktu saat ini dengan hasil pada waktu yang sesuai dari periode n1, n2, n3... detik sebelumnya. |
√ |
× |
-
Fungsi
ts_comparememerlukan klausaGROUP BYdengan satu kolom waktu. -
Fungsi
comparedants_comparetidak dapat disarangkan.
compare function
Fungsi compare membandingkan hasil periode waktu saat ini dengan hasil dari satu atau beberapa periode sebelumnya.
Sintaks
-
Membandingkan hasil saat ini dengan hasil dari satu periode waktu sebelumnya.
compare(x, n) -
Membandingkan hasil saat ini dengan hasil dari beberapa periode waktu sebelumnya.
compare(x, n1, n2, n3...)
Parameter
|
Parameter |
Description |
|
x |
Nilai yang akan dibandingkan, yang harus bertipe |
|
n |
Jendela waktu dalam satuan detik. Contohnya: 3600 (1 jam), 86400 (1 hari), 604800 (1 minggu), atau 31622400 (1 tahun). |
Nilai kembalian
Mengembalikan sebuah array. Untuk offset waktu tunggal n, formatnya adalah [current_result, previous_result, ratio]. Ketika beberapa offset waktu (n1, n2, ...) ditentukan, formatnya adalah [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ...].
Contoh
-
Contoh 1: Hitung rasio jumlah tampilan halaman (PVs) antara jam saat ini dan jam yang sama pada hari sebelumnya.
Tetapkan rentang waktu untuk kueri dan analisis ke 1 Hour (aligned) dan jalankan pernyataan kueri berikut. Dalam pernyataan tersebut,
86400menentukan offset waktu sebesar 86.400 detik (1 hari), danlogadalah nama penyimpanan log.-
Tampilkan hasil dalam bentuk array
-
Pernyataan kueri (Debug)
* | SELECT compare(PV, 86400) FROM ( SELECT count(*) AS PV FROM log ) -
Hasil kueri dan analisis

-
3337.0: Jumlah PV untuk jam saat ini, misalnya dari pukul 14:00:00 hingga 15:00:00 pada tanggal 2020-12-25.
-
3522.0: Jumlah PV untuk jam yang sama pada hari sebelumnya, misalnya dari pukul 14:00:00 hingga 15:00:00 pada tanggal 2020-12-24.
-
0.947473026689381: Rasio jumlah PV antara jam saat ini dan jam yang sama pada hari sebelumnya.
-
-
-
Tampilkan hasil dalam kolom terpisah
-
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 ) )Fungsi
comparemengembalikan sebuah array. Dalam kueri ini,diffadalah alias untuk array hasil, dandiff[1]mengekstraksi elemen pertama dari array tersebut. -
Hasil kueri dan analisis

-
3337.0: Jumlah PV untuk jam saat ini, misalnya dari pukul 14:00:00 hingga 15:00:00 pada tanggal 2020-12-25.
-
3522.0: Jumlah PV untuk jam yang sama pada hari sebelumnya, misalnya dari pukul 14:00:00 hingga 15:00:00 pada tanggal 2020-12-24.
-
0.947473026689381: Rasio jumlah PV antara jam saat ini dan jam yang sama pada hari sebelumnya.
-
-
-
-
Contoh 2: Hitung jumlah permintaan berdasarkan status dan metode untuk jam saat ini, lalu bandingkan jumlah tersebut dengan jumlah dari jam sebelumnya.
Tetapkan rentang waktu untuk kueri dan analisis ke 1 Hour (aligned) dan jalankan pernyataan kueri berikut. Dalam pernyataan tersebut,
3600menentukan offset waktu sebesar 3.600 detik (1 jam), danlogadalah nama penyimpanan log.-
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_method -
Hasil kueri dan analisis

-
ts_compare function
Fungsi ts_compare membandingkan hasil untuk waktu yang disejajarkan (misalnya, per jam) pada periode saat ini dengan hasil pada waktu yang sesuai dari satu atau beberapa periode sebelumnya.
Fungsi ts_compare memerlukan klausa GROUP BY dengan satu kolom waktu.
Sintaks
-
Membandingkan hasil untuk waktu yang disejajarkan dengan hasil pada waktu yang sesuai dari satu periode waktu sebelumnya.
ts_compare(x, n) -
Membandingkan hasil untuk waktu yang disejajarkan dengan hasil pada waktu yang sesuai dari beberapa periode waktu sebelumnya.
ts_compare(x, n1, n2, n3...)
Parameter
|
Parameter |
Description |
|
x |
Nilai yang akan dibandingkan, yang harus bertipe |
|
n |
Jendela waktu dalam satuan detik. Contohnya: 3600 (1 jam), 86400 (1 hari), 604800 (1 minggu), atau 31622400 (1 tahun). |
Nilai kembalian
Mengembalikan sebuah array. Untuk offset waktu tunggal n, formatnya adalah [current_result, previous_result, ratio, previous_UNIX_timestamp]. Ketika beberapa offset waktu (n1, n2, ...) ditentukan, formatnya adalah [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ..., previous_UNIX_timestamp_1, previous_UNIX_timestamp_2, ...].
Contoh
-
Contoh 1: Bandingkan jumlah tampilan halaman (PVs) per jam hari ini dengan jumlah pada jam yang sama selama dua hari sebelumnya.
Tetapkan rentang waktu untuk kueri dan analisis ke Today (aligned) dan jalankan pernyataan kueri berikut. Dalam pernyataan tersebut,
86400menentukan offset satu hari,172800menentukan offset dua hari,logadalah nama penyimpanan log, dandate_trunc('hour',__time__)menyejajarkan stempel waktu ke tingkat jam.-
Tampilkan hasil dalam bentuk array
-
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 time -
Hasil kueri dan analisis

-
1174.0: Jumlah PV untuk periode waktu saat ini, misalnya pukul 00:00 hingga 01:00 pada tanggal 2022-09-22.
-
1191.0: Jumlah PV untuk periode waktu yang sama pada hari sebelumnya, misalnya pukul 00:00 hingga 01:00 pada tanggal 2022-09-21.
-
1253.0: Jumlah PV untuk periode waktu yang sama dua hari sebelumnya, misalnya pukul 00:00 hingga 01:00 pada tanggal 2022-09-20.
-
0.9857262804366079: Rasio jumlah PV antara jam saat ini dan jam yang sama pada hari sebelumnya.
-
0.936951316839585: Rasio jumlah PV antara jam saat ini dan jam yang sama dua hari sebelumnya.
-
1663689600.0: Stempel waktu UNIX untuk pukul 00:00 pada tanggal 2022-09-21.
-
1663603200.0: Stempel waktu UNIX untuk pukul 00:00 pada tanggal 2022-09-20.
CatatanStempel waktu dalam hasil dapat berbeda tergantung pada kapan Anda menjalankan kueri.
-
-
-
Tampilkan hasil dalam kolom terpisah
-
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 perubahan jumlah tampilan halaman dari jam ke jam untuk hari ini.
Tetapkan rentang waktu untuk kueri dan analisis ke Today (Relative) dan jalankan pernyataan kueri berikut. Dalam pernyataan tersebut,
3600menentukan offset 3.600 detik (1 jam),logadalah nama penyimpanan log, dandate_trunc('hour',__time__ )menyejajarkan stempel waktu ke tingkat 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 time -
Hasil kueri dan analisis
CatatanStempel waktu dalam hasil dapat berbeda tergantung pada kapan Anda menjalankan kueri.
-