Halaman ini mengacu pada parameter
filtersyang merupakan bagian dari pengukuran.
filtersjuga dapat digunakan sebagai bagian dari tabel turunan native, yang dijelaskan di halaman dokumentasi parameterexplore_source.
filtersjuga dapat digunakan sebagai bagian dari dasbor, yang dijelaskan di halaman dokumentasi Parameter dasbor.
filtersjuga 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: counttype: count_distincttype: sumtype: 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"]
}