Penggunaan
view: view_name {
dimension: field_name {
case: {
when: {
sql: SQL condition ;;
label: "value"
}
# Possibly more when statements
else: "value"
}
alpha_sort: yes
}
}
|
Hierarki
case |
Jenis Kolom yang Mungkin
Dimensi
Menerima
Kondisi SQL dan string
Aturan Khusus
Gunakan parameter alpha_sort jika Anda ingin nilai diurutkan berdasarkan abjad
|
Definisi
case memungkinkan Anda mengelompokkan hasil dengan logika kasus. Meskipun Anda dapat menulis pernyataan SQL mentah CASE, penggunaan case akan membuat menu drop-down untuk pengguna di UI Looker. Pernyataan SQL CASE tidak akan membuat menu tersebut.
Bentuk umum case adalah:
dimension: status {
case: {
when: {
sql: condition ;;
label: "Label of Condition"
}
# possibly more when statements
else: "Label If No Condition Met"
}
}
Parameter ini berfungsi sebagai berikut:
when— Anda dapat menggunakan pernyataanwhensebanyak yang Anda inginkan untuk merepresentasikan setiap kondisi yang ingin Anda berikan labelnya. Pernyataanwhendievaluasi secara berurutan dari yang pertama hingga yang terakhir, dan pernyataanwhenpertama yang dievaluasi sebagai benar akan menetapkan label terkait.sql— Parametersqlmenerima kondisi SQL yang dievaluasi ke benar atau salah.label— Jika kondisi SQL benar, ini adalah label yang akan ditetapkan. Label yang ditetapkan memiliki jenis datastring. Nilai setiaplabeldalam pernyataancaseharus unik. Jika Anda menggunakan nilailabelyang sama untuk beberapa kondisi SQL, hanya kondisi SQL terakhir dalam pernyataancaseyang diberi nilailabel. Lihat Contoh di halaman ini.else— Jika tidak ada kondisi yang terpenuhi, label ini akan digunakan.
Memilih urutan pengurutan label dengan alpha_sort
Biasanya, nilai case muncul dalam urutan yang Anda tulis. Jika lebih suka pengurutan berdasarkan abjad, Anda dapat menggunakan alpha_sort: yes seperti ini:
dimension: status {
alpha_sort: yes
case: { ... }
}
Contoh
Tetapkan beberapa label yang mudah dibaca manusia ke nomor status yang berbeda:
dimension: status {
case: {
when: {
sql: ${TABLE}.status = 0 ;;
label: "pending"
}
when: {
sql: ${TABLE}.status = 1 ;;
label: "complete"
}
when: {
sql: ${TABLE}.status = 2 ;;
label: "returned"
}
else: "unknown"
}
}
Jika kondisi yang sama diulang dan dievaluasi ke label yang berbeda, LookML akan menggunakan kondisi pertama yang dievaluasi ke benar (true). Dalam contoh berikut, ${TABLE}.status = 0 dievaluasi menjadi pending, bukan returned, karena kondisi pending dievaluasi terlebih dahulu.
dimension: status {
case: {
when: {
sql: ${TABLE}.status = 0 ;;
label: "pending"
}
when: {
sql: ${TABLE}.status = 1 ;;
label: "complete"
}
when: {
sql: ${TABLE}.status = 0 ;;
label: "returned"
}
else: "unknown"
}
}
Jika beberapa kondisi dievaluasi ke label yang sama, LookML hanya menggunakan kondisi pertama. Dalam contoh berikut, Looker akan menggunakan ${TABLE}.status = 0, bukan ${TABLE}.status = 2, untuk menghasilkan pernyataan SQL CASE yang dievaluasi menjadi pending. Jika ${TABLE}.status = 2, pernyataan CASE akan bernilai unknown.
view: orders
dimension: status {
case: {
when: {
sql: ${TABLE}.status = 0 ;;
label: "pending"
}
when: {
sql: ${TABLE}.status = 1 ;;
label: "complete"
}
when: {
sql: ${TABLE}.status = 2 ;;
label: "pending"
}
else: "unknown"
}
}
Yang perlu diketahui
Jika dimensi berisi parameter case yang mereferensikan kolom lain, kolom tambahan tersebut dapat ditambahkan ke SQL pokok kueri yang menggunakan dimensi tersebut. Jika kolom yang dirujuk tidak ada dalam visualisasi kueri, dan visualisasi adalah diagram tabel dengan kolom yang disusun ulang secara manual, urutan kolom dalam beberapa format yang didownload dapat terpengaruh.