Pernyataan CASE
mengevaluasi satu atau beberapa kondisi dan menampilkan hasil saat kondisi pertama terpenuhi, atau hasil default jika tidak ada kondisi yang terpenuhi.
Catatan: ada dua bentuk pernyataan CASE
: CASE
yang ditelusuri dan CASE
sederhana. Pernyataan CASE
yang ditelusuri memungkinkan Anda menggunakan logika yang lebih canggih, sedangkan pernyataan CASE
sederhana lebih mudah dibuat.
Lihat juga: IF.
Contoh penggunaan
Penggunaan umum dari CASE
adalah membuat kategori atau pengelompokan data baru. Misalnya, untuk mengelompokkan nilai negara tertentu ke dalam dimensi Wilayah Penjualan, Anda dapat membuat pernyataan CASE
seperti ini:
CASE WHEN Country IN ("USA,"Canada",Mexico")THEN "North America" WHEN Country IN ("England,"France")THEN "Europe" ELSE "Other" END
Sintaksis
CASE WHEN condition THEN result [WHEN condition THEN result] [...] [ELSE else_result] END
Parameter
-
condition
- Kolom atau ekspresi logis. KlausaWHEN
mengevaluasicondition
dan menampilkan benar jika kondisi yang ditentukan terpenuhi, atau salah jika kondisi tidak terpenuhi. -
result
- Kolom atau ekspresi dari jenis apa pun. Setiap klausaWHEN
harus memiliki klausaTHEN
yang sesuai, yang menentukan hasil jikacondition WHEN
tersebut benar. Jika ada beberapa klausaWHEN
, pernyataanCASE
akan menampilkanresult
untukcondition
benar yang pertama. else_result
(opsional) - Kolom atau ekspresi dari jenis apa pun. KlausaELSE
else_result
menentukan hasil default untuk pernyataanCASE
. Klausa ini ditampilkan jika tidak ada klausaWHEN
yang benar. Jika pernyataanCASE
tidak memiliki klausaELSE
, dan tidak ada klausaWHEN
yang benar, pernyataanCASE
akan menampilkanNULL
.
Pernyataan CASE
hanya dapat memiliki satu klausa ELSE
.
Catatan: Semua klausa THEN
dalam pernyataan CASE
harus menampilkan jenis data yang sama. Misalnya, jika klausa THEN
pertama menampilkan jenis data Teks, klausa THEN
lainnya juga harus menampilkan jenis data Teks.
Cara kerja CASE
yang ditelusuri
Pernyataan CASE
yang ditelusuri dimulai dengan kata kunci CASE
dan diakhiri dengan kata kunci END
. Di antara keduanya, Anda akan memiliki beberapa bagian atau klausa:
WHEN
: Kondisi yang ingin dievaluasi. Anda dapat memiliki beberapa klausaWHEN
dalam satu pernyataanCASE
.THEN
: Hasil yang ditampilkan jika kondisi klausaWHEN
benar. Anda harus memiliki satu klausaTHEN
untuk setiap klausaWHEN
dalam pernyataanCASE
.ELSE:
Opsional. Jika tidak ada kondisi klausaWHEN
yang benar,CASE
akan menampilkan nilai dalam klausaELSE
, atauNULL
jika tidak ada klausaELSE
yang ditentukan.
CASE
mengevaluasi setiap klausa WHEN
yang berurutan dan menampilkan hasil pertama yang kondisinya benar. Semua klausa WHEN
yang tersisa dan hasil ELSE
tidak dievaluasi. Jika semua kondisi WHEN
salah atau NULL
, CASE
akan menampilkan hasil ELSE
, atau jika tidak ada klausa ELSE
yang muncul, NULL
akan ditampilkan.
Contoh
Periksa ketidaksetaraan
CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END
Mengklasifikasikan nilai dimensi numerik ke dalam bucket terpisah
Misalnya, Anda dapat memisahkan pesanan menjadi "Kecil", "Sedang", atau "Besar" berdasarkan jumlah pesanan:
CASE WHEN Amount < 20 THEN "Small" WHEN Amount >= 20 and Amount < 100 THEN "Medium" WHEN Amount >= 100 THEN "Large" END
Mengevaluasi kondisi logis AND
CASE WHEN Country ISO Code = "US" AND Medium = "cpc" THEN "US - Paid" ELSE "other" END
Mengevaluasi kondisi logis AND/OR
CASE WHEN REGEXP_MATCH(Video Title, ".*Google Analytics*") AND is_livestream = TRUE OR Video Length > 600 THEN "GA Livestream or long video" END
Menampilkan kolom atau nilai yang berbeda bergantung pada nilai parameter
Contoh 1: Menampilkan dimensi berdasarkan nilai parameter yang dipilih. Anda dapat menggunakan teknik ini untuk memungkinkan pengguna mengubah dimensi perincian yang digunakan oleh diagram.
CASE WHEN Breakdown = "Product Category" THEN Product Category WHEN Breakdown = "Store" THEN Store END
Perhatikan bahwa Anda juga dapat menulisnya menggunakan sintaksis CASE sederhana:
CASE Breakdown WHEN "Product Category" THEN Product Category WHEN "Store" THEN Store END
Contoh 2: Menampilkan metrik yang berbeda berdasarkan nilai parameter.
CASE WHEN Show Adjusted Cost = TRUE THEN Cost + Adjustments ELSE Cost END
Penyusunan bertingkat untuk pernyataan CASE
Anda dapat melakukan penyusunan bertingkat untuk pernyataan CASE
guna membuat logika percabangan yang lebih kompleks:
CASE WHEN REGEXP_CONTAINS(SKU, "Hats") THEN CASE WHEN Color = "blue" THEN "BLUE HAT" ELSE "JUST A HAT" END ELSE "NOT A HAT" END