case

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 pernyataan when sebanyak yang Anda inginkan untuk merepresentasikan setiap kondisi yang ingin Anda berikan labelnya. Pernyataan when dievaluasi secara berurutan dari yang pertama hingga yang terakhir, dan pernyataan when pertama yang dievaluasi sebagai benar akan menetapkan label terkait.
  • sql — Parameter sql menerima kondisi SQL yang dievaluasi ke benar atau salah.
  • label — Jika kondisi SQL benar, ini adalah label yang akan ditetapkan. Label yang ditetapkan memiliki jenis data string. Nilai setiap label dalam pernyataan case harus unik. Jika Anda menggunakan nilai label yang sama untuk beberapa kondisi SQL, hanya kondisi SQL terakhir dalam pernyataan case yang diberi nilai label. 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.