Dokumen ini menjelaskan sintaks dari ekspresi kondisional serta memberikan contoh penggunaannya.
Tabel berikut menjelaskan ekspresi kondisional 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.
Ekspresi | Sintaks | Deskripsi | Didukung di SQL | Didukung di SPL |
CASE WHEN kondisi1 THEN hasil1 [WHEN kondisi2 THEN hasil2] [ELSE hasil3] END | Mengklasifikasikan data berdasarkan kondisi tertentu. | √ | √ | |
IF(kondisi, hasil1) | Jika kondisi bernilai benar, hasil1 dikembalikan. Jika tidak, null dikembalikan. | √ | √ | |
IF(kondisi, hasil1, hasil2) | Jika kondisi bernilai benar, hasil1 dikembalikan. Jika tidak, hasil2 dikembalikan. | √ | √ | |
COALESCE(ekspresi1, ekspresi2, ekspresi3...) | Mengembalikan nilai non-null pertama dari beberapa ekspresi. | √ | √ | |
NULLIF(ekspresi1, ekspresi2) | Evaluasi apakah nilai dua ekspresi sama. Jika nilainya sama, null dikembalikan. Jika tidak, nilai dari ekspresi pertama dikembalikan. | √ | × | |
TRY(ekspresi) | Menangkap kesalahan yang terjadi selama pemanggilan ekspresi dan memastikan bahwa Simple Log Service dapat terus melakukan query dan menganalisis data meskipun terjadi kesalahan. | √ | √ |
CASE WHEN expression
Ekspresi CASE WHEN digunakan untuk mengklasifikasikan data.
Sintaks
CASE WHEN kondisi1 THEN hasil1
[WHEN kondisi2 THEN hasil2]
[ELSE hasil3]
ENDParameter
Parameter | Deskripsi |
kondisi | Nilai parameter ini adalah ekspresi kondisional. |
hasil1 | Hasil yang dikembalikan. |
Contoh
Contoh 1: Ekstrak informasi browser dari nilai bidang http_user_agent. Kemudian, klasifikasikan informasi tersebut ke dalam Chrome, Safari, dan jenis tidak dikenal, lalu hitung jumlah tampilan halaman (PV) untuk ketiga jenis tersebut.
Pernyataan Kueri
* | SELECT CASE WHEN http_user_agent like '%Chrome%' then 'Chrome' WHEN http_user_agent like '%Safari%' then 'Safari' ELSE 'unknown' END AS http_user_agent, count(*) AS pv GROUP BY http_user_agentHasil Kueri dan Analisis

Contoh 2: Kueri distribusi permintaan yang dikirim pada titik waktu yang berbeda.
Pernyataan Kueri
* | SELECT CASE WHEN request_time < 10 then 't10' WHEN request_time < 100 then 't100' WHEN request_time < 1000 then 't1000' WHEN request_time < 10000 then 't10000' ELSE 'large' END AS request_time, count(*) AS pv GROUP BY request_timeHasil Kueri dan Analisis

IF expression
Ekspresi IF digunakan untuk mengklasifikasikan data dan bekerja mirip dengan ekspresi CASE WHEN.
Sintaks
Jika kondisi bernilai benar, hasil1 dikembalikan. Jika tidak, null dikembalikan.
IF(kondisi, hasil1)Jika kondisi bernilai benar, hasil1 dikembalikan. Jika tidak, hasil2 dikembalikan.
IF(kondisi, hasil1, hasil2)
Parameter
Parameter | Deskripsi |
kondisi | Nilai parameter ini adalah ekspresi kondisional. |
hasil | Hasil yang dikembalikan. |
Contoh
Hitung proporsi permintaan dengan kode status 200 terhadap semua permintaan.
Pernyataan Kueri
* | SELECT sum(IF(status = 200, 1, 0)) * 1.0 / count(*) AS status_200_percentagHasil Kueri dan Analisis

COALESCE expression
Ekspresi COALESCE mengembalikan nilai non-null pertama dari beberapa ekspresi.
Sintaks
COALESCE(ekspresi1, ekspresi2, ekspresi3...)Parameter
Parameter | Deskripsi |
ekspresi | Nilai parameter ini adalah ekspresi dari tipe sembarang. |
Contoh
Hitung rasio pengeluaran hari sebelumnya terhadap pengeluaran hari yang sama di bulan sebelumnya.
Pernyataan Kueri
* | SELECT compare("Pengeluaran hari sebelumnya", 604800) AS diff FROM ( SELECT COALESCE(sum(PretaxAmount), 0) AS "Pengeluaran hari sebelumnya" FROM log )Hasil Kueri dan Analisis

Nilai 6.514.393.413,0 menunjukkan pengeluaran hari sebelumnya.
Nilai 19.578.267.596,0 menunjukkan pengeluaran hari yang sama di bulan sebelumnya.
Nilai 0,33273594719539659 menunjukkan rasio pengeluaran hari sebelumnya terhadap pengeluaran hari yang sama di bulan sebelumnya.
NULLIF expression
Ekspresi NULLIF mengevaluasi apakah nilai dua ekspresi sama. Jika nilainya sama, null dikembalikan. Jika tidak, nilai dari ekspresi pertama dikembalikan.
Sintaks
NULLIF(ekspresi1, ekspresi2)Parameter
Parameter | Deskripsi |
ekspresi | Nilai parameter ini adalah ekspresi skalar yang valid. |
Contoh
Evaluasi apakah nilai bidang client_ip dan host sama. Jika nilainya berbeda, nilai bidang client_ip dikembalikan.
Pernyataan Kueri
* | SELECT NULLIF(client_ip,host)Hasil Kueri dan Analisis

TRY expression
Ekspresi TRY menangkap kesalahan yang terjadi selama pemanggilan ekspresi dan memastikan bahwa Simple Log Service dapat terus melakukan query dan menganalisis data meskipun terjadi kesalahan.
Sintaks
TRY(ekspresi)Parameter
Parameter | Deskripsi |
ekspresi | Nilai parameter ini adalah ekspresi dari tipe sembarang. |
Contoh
Jika terjadi kesalahan saat pemanggilan ekspresi regexp_extract, ekspresi TRY menangkap kesalahan dan Simple Log Service terus melakukan query dan menganalisis data. Hasil kueri dan analisis dikembalikan.
Pernyataan Kueri
* | SELECT TRY(regexp_extract(request_uri, '.*\/(file.*)', 1)) AS file, count(*) AS count GROUP BY fileHasil Kueri dan Analisis
