filter (untuk kolom)

Halaman ini mengacu pada parameter filters yang merupakan bagian dari pengukuran.

filters juga dapat digunakan sebagai bagian dari tabel turunan native, yang dijelaskan di halaman dokumentasi parameter explore_source.

filters juga dapat digunakan sebagai bagian dari dasbor, yang dijelaskan di halaman dokumentasi Parameter dasbor.

filters juga dapat digunakan sebagai bagian dari elemen dasbor. Contoh representatif penggunaannya disediakan di halaman dokumentasi untuk elemen diagram batang.

Penggunaan

view: view_name {
  measure: field_name {
    filters: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
  }
}
Hierarki
filters
Jenis Kolom yang Mungkin
Ukur

Menerima
Kumpulan nama dimensi dan ekspresi filter Looker yang sesuai

Definisi

filters adalah daftar opsional ekspresi filter yang diterapkan ke penghitungan ukuran. Fungsi ini hanya berfungsi dengan jenis ukuran berikut yang melakukan agregasi:

  • type: count
  • type: count_distinct
  • type: sum
  • type: average

Sintaksis untuk filter adalah:

filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]

Lihat Notasi filter Looker untuk mengetahui detail cara menulis ekspresi filter yang valid. Tempatkan seluruh ekspresi filter dalam tanda petik, seperti yang ditunjukkan dalam contoh berikut.

Anda juga dapat menggunakan filters dengan parameter Liquid dan filter ber-template untuk membuat ukuran yang difilter secara dinamis dengan nilai filter yang dapat berubah secara dinamis berdasarkan input pengguna di dasbor atau Look. Pendekatan ini memungkinkan pengguna memilih nilai filter yang hanya berlaku untuk ukuran tertentu, tanpa memfilter seluruh kueri dalam klausa WHERE global. Lihat bagian Membuat ukuran yang difilter dinamis di halaman ini untuk referensi.

Contoh

Ada banyak cara untuk menggunakan filters sebagai ukuran. Contoh berikut menguraikan beberapa solusi untuk kasus penggunaan umum.

Memfilter di beberapa kolom

Dalam contoh ini, ukuran akan menghitung ID unik yang dibuat dalam tujuh hari terakhir dan bukan dari pengguna dengan akun yang dinonaktifkan. Contoh ini juga menggambarkan cara menambahkan beberapa filter ke kolom. Setiap ekspresi filter memerlukan parameter filters lengkapnya sendiri:

measure: this_week_count {
  type: count_distinct
  sql: ${TABLE}.id ;;
  filters: [created_date: "7 days", user.status: "-disabled"]
  # Reference fields from other joined views with view_name.field_name syntax
  # Minus sign means "not" in this case, but check notation docs for details
}

Memfilter dimensi yesno

Sebagai contoh lain, pertimbangkan data yang mencakup satu baris per orang, yang merupakan karyawan tetap atau kontraktor. Ada kolom, is_contractor, berjenis yesno, yang berisi yes jika orang tersebut adalah kontraktor. Ukuran ini hanya akan menghitung baris untuk kontraktor:

measure: contractor_count {
  type: count
  filters: [is_contractor: "yes"]
}

Menambahkan beberapa nilai filter

Dalam contoh berikutnya ini, ekspresi filters berisi beberapa nilai. Ukuran ini akan menghitung semua baris yang cocok dengan salah satu dari empat nilai di kolom state:

measure: customers_by_state {
  type: count
  filters: [state: "California, Nevada, Washington, Oregon"]
}

Memfilter nilai NULL

Dalam contoh ini, ukuran akan menghitung ID unik yang dibuat dalam tujuh hari terakhir dan menyertakan nilai di kolom user.email_address yang bukan NULL:

measure: this_week_count_with_email {
  type: count_distinct
  sql: ${TABLE}.id ;;
  filters: [created_date: "7 days", user.email_address: "-NULL"]
}

Karena kolom user.email_address berjenis string, sintaksis "-NULL" digunakan. Lihat halaman dokumentasi Ekspresi filter Looker untuk mengetahui informasi selengkapnya.

Menambahkan kondisi filter numerik

Dalam contoh ini, filter diberi nilai numerik. Pengukuran ini hanya akan menambahkan pesanan yang memiliki price lebih dari 100:

measure: total_amt_large_orders {
  type: sum
  filters: [orders.price: ">100"]
  sql: ${orders.price} ;;
}

Menggunakan AND untuk menggabungkan kondisi

Dalam contoh ini, ukuran menggunakan ekspresi filter dengan operator AND untuk menghitung total pesanan dari pelanggan dalam kelompok usia 18-25 tahun:

measure: sales_18_to_25 {
  type: sum
  filters: [customers.age: ">=18 AND <=25"]
  sql: ${orders.price} ;;
}

Menggunakan koma untuk menggabungkan kondisi

Dalam contoh ini, ukuran menggunakan ekspresi filter dengan operator , untuk menghitung total pesanan dari pelanggan yang berusia di bawah 25 tahun atau di atas 65 tahun:

measure: sales_less_25_or_greater_65 {
  type: sum
  filters: [customers.age: "<25, >65"]
  sql: ${orders.price} ;;
}

Membuat ukuran yang difilter dinamis

Dalam contoh ini, filter memberi pengguna opsi untuk melihat jumlah pesanan — yang difilter menurut status yang dipilih pengguna — pada filter Look atau dasbor:

Pertama, buat kolom hanya filter yang memungkinkan pengguna memilih nilai:

  filter: status_filter {
    type: string
    suggest_dimension: status
  }

Selanjutnya, buat dimensi tersembunyi yang memanfaatkan filter ber-template untuk merekam pilihan pengguna dari kolom hanya filter sebelumnya. Dimensi ini akan menampilkan ya setiap kali nilai dipilih di kolom filter:

  dimension: status_satisfies_filter {
    type: yesno
    hidden: yes
    sql: {% condition status_filter %} ${status} {% endcondition %} ;;
  }

Terakhir, buat ukuran yang memfilter dimensi type: yesno:

  measure: count_dynamic_status {
    type: count
    filters: [status_satisfies_filter: "yes"]
  }

Jika pengguna memilih untuk tidak memilih nilai untuk kolom hanya filter, SQL akan menggunakan nilai default 1=1, yang tidak akan memengaruhi nilai ukuran.

Tantangan umum

Jangan gunakan filters dengan ukuran type: number

Banyak pengguna mencoba menggunakan filters dengan ukuran type: number, yang tidak berfungsi:

# Will NOT work
measure: total_food_profit {
  type: number
  sql: ${total_revenue} - ${total_cost} ;;
  filters: [segment: "food"]
}
measure: total_revenue {
  type: sum
  sql: ${revenue} ;;
}
measure: total_cost {
  type: sum
  sql: ${cost} ;;
}

Sebagai gantinya, terapkan parameter filters ke salah satu pengukuran individual yang membentuk pengukuran type: number, sebagai berikut:

# Will work
measure: total_food_profit {
  type: number
  sql: ${total_food_revenue} - ${total_food_cost} ;;
}
measure: total_food_revenue {
  type: sum
  sql: ${revenue} ;;
  filters: [segment: "food"]
}
measure: total_food_cost {
  type: sum
  sql: ${cost} ;;
  filters: [segment: "food"]
}