CASE (Searched)
Pernyataan CASE mengevaluasi satu atau beberapa kondisi dan menampilkan hasil saat kondisi pertama terpenuhi, atau hasil default jika tidak ada kondisi yang terpenuhi.
Lihat juga: IF.
Contoh penggunaan
Penggunaan umum CASE adalah untuk 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
Sintaks
CASE
WHEN condition THEN result
[WHEN condition THEN result]
[...]
[ELSE else_result]
END
Parameter
condition- Kolom atau ekspresi logis. KlausaWHENmengevaluasiconditiondan menampilkan benar jika kondisi yang ditentukan terpenuhi, atau salah jika kondisi tidak terpenuhi.result- Kolom atau ekspresi dari jenis apa pun. Setiap klausaWHENharus memiliki klausaTHENyang cocok, yang menentukan hasil jikaWHEN conditiontersebut benar. Jika ada beberapa klausaWHEN, pernyataanCASEakan menampilkanresultuntukconditionbenar yang pertama.else_result(opsional) - Kolom atau ekspresi dari jenis apa pun. KlausaELSEelse_resultmenentukan hasil default untuk pernyataanCASE. Klausa ini ditampilkan jika tidak ada klausaWHENyang benar. Jika pernyataanCASEtidak memiliki klausaELSE, dan tidak ada klausaWHENyang benar, pernyataanCASEakan menampilkanNULL.
Pernyataan CASE hanya dapat memiliki satu klausa ELSE.
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 klausaWHENdalam satu pernyataanCASE.THEN: Hasil yang akan ditampilkan jika kondisi klausaWHENbenar. Anda harus memiliki satu klausaTHENuntuk setiap klausaWHENdalam pernyataanCASE.ELSE: Opsional. Jika tidak ada kondisi klausaWHENyang benar,CASEakan menampilkan nilai dalam klausaELSE, atauNULLjika tidak ada klausaELSEyang ditentukan.
CASE mengevaluasi setiap klausa WHEN yang berurutan dan menampilkan hasil pertama yang kondisinya benar. 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, 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
Mengklasifikasikan nilai dimensi tanggal ke dalam bucket terpisah
Misalnya, Anda dapat memisahkan tahun menjadi semester berdasarkan tanggal tertentu:
CASE
WHEN Date >= DATE(2018, 9, 23) and Date < DATE(2018, 12, 13) THEN "Fall Semester 2018"
WHEN Date >= DATE(2018, 1, 3) and Date < DATE(2019, 3, 21) THEN "Winter Semester 2019"
WHEN Date >= DATE(2019, 3, 27) and Date < DATE(2019, 6, 12) THEN "Spring Semester 2019"
ELSE "Uncategorized"
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
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
Pernyataan CASE bertingkat
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