Questa pagina si riferisce al parametro
filters, che fa parte di una misura.
filterspuò essere utilizzato anche nell'ambito di una tabella derivata nativa, come descritto nella pagina della documentazione dedicata al parametroexplore_source.
filterspuò essere utilizzato anche nell'ambito di una dashboard, come descritto nella pagina della documentazione Parametri della dashboard.
filterspuò essere utilizzato anche come parte di un elemento del dashboard. Un esempio rappresentativo del suo utilizzo è riportato nella pagina della documentazione relativa agli elementi del grafico a colonne.
Utilizzo
view: view_name {
measure: field_name {
filters: [dimension_name: "filter expression", dimension_name: "filter expression", ... ]
}
}
|
Gerarchia
filters |
Tipi di campi possibili
Misura
Accetta
Un insieme di nomi di dimensioni e le espressioni di filtro di Looker corrispondenti
|
Definizione
filters è un elenco facoltativo di espressioni di filtro che vengono applicate al calcolo di una metrica. Funziona solo con i seguenti tipi di misure che eseguono l'aggregazione:
type: counttype: count_distincttype: sumtype: average
La sintassi per i filtri è:
filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]
Consulta la notazione dei filtri di Looker per informazioni dettagliate su come scrivere espressioni di filtro valide. Inserisci l'intera espressione di filtro tra virgolette, come mostrato negli esempi seguenti.
Puoi anche utilizzare filters con i parametri Liquid e i filtri basati su modelli per creare misure filtrate dinamiche con un valore di filtro che può cambiare dinamicamente in base all'input utente in una dashboard o in un Look. Questo approccio consente agli utenti di selezionare valori di filtro che si applicano solo a una metrica specifica, senza filtrare l'intera query in una clausola WHERE globale. Per riferimento, consulta la sezione Creare una misura filtrata dinamica più avanti in questa pagina.
Esempi
Esistono molti modi per utilizzare filters per le metriche. Gli esempi riportati di seguito illustrano alcune soluzioni per casi d'uso comuni.
Filtrare in base a più campi
In questo esempio, la metrica conteggerà gli ID univoci creati negli ultimi sette giorni e non provenienti da utenti con account disabilitati. Questo esempio mostra anche come aggiungere più filtri a un campo. Ogni espressione di filtro richiede il proprio parametro filters completo:
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
}
Filtro in base a una dimensione yesno
Come altro esempio, considera i dati che includono una riga per persona, che sia un dipendente regolare o un collaboratore. Esiste un campo, is_contractor, di tipo yesno, che contiene yes se la persona è un collaboratore. Questa misura conteggerà solo le righe relative ai collaboratori:
measure: contractor_count {
type: count
filters: [is_contractor: "yes"]
}
Aggiungere più valori di filtro
Nel seguente esempio, l'espressione filters contiene più valori. La misura conterà tutte le righe che corrispondono a uno dei quattro valori nel campo state:
measure: customers_by_state {
type: count
filters: [state: "California, Nevada, Washington, Oregon"]
}
Filtro dei valori NULL
In questo esempio, la metrica conteggerà gli ID univoci creati negli ultimi sette giorni e includerà un valore nel campo user.email_address che non sia NULL:
measure: this_week_count_with_email {
type: count_distinct
sql: ${TABLE}.id ;;
filters: [created_date: "7 days", user.email_address: "-NULL"]
}
Poiché il campo user.email_address è di tipo string, viene utilizzata la sintassi "-NULL". Per ulteriori informazioni, consulta la pagina della documentazione relativa alle espressioni di filtro di Looker.
Aggiungere condizioni di filtro numeriche
In questo esempio, al filtro viene assegnato un valore numerico. La misura aggiungerà solo gli ordini con un price superiore a 100:
measure: total_amt_large_orders {
type: sum
filters: [orders.price: ">100"]
sql: ${orders.price} ;;
}
Utilizzare AND per combinare le condizioni
In questo esempio, la misura utilizza un'espressione di filtro con l'operatore AND per calcolare il totale degli ordini dei clienti nella fascia d'età 18-25 anni:
measure: sales_18_to_25 {
type: sum
filters: [customers.age: ">=18 AND <=25"]
sql: ${orders.price} ;;
}
Utilizzare le virgole per combinare le condizioni
In questo esempio, la misura utilizza un'espressione di filtro con l'operatore , per calcolare il totale degli ordini dei clienti di età inferiore a 25 anni o superiore a 65 anni:
measure: sales_less_25_or_greater_65 {
type: sum
filters: [customers.age: "<25, >65"]
sql: ${orders.price} ;;
}
Creare una misura filtrata dinamica
In questo esempio, un filtro offre a un utente la possibilità di visualizzare un conteggio degli ordini, filtrati in base allo stato scelto dall'utente, in un filtro di Look o della dashboard:
Innanzitutto, crea un campo solo con filtri che consenta all'utente di selezionare un valore:
filter: status_filter {
type: string
suggest_dimension: status
}
Successivamente, crea una dimensione nascosta che sfrutti i filtri basati su modelli per acquisire la selezione dell'utente dal campo solo con filtri precedente. Questa dimensione restituirà yes ogni volta che viene selezionato un valore nel campo del filtro:
dimension: status_satisfies_filter {
type: yesno
hidden: yes
sql: {% condition status_filter %} ${status} {% endcondition %} ;;
}
Infine, crea una misura che filtri in base alla dimensione type: yesno:
measure: count_dynamic_status {
type: count
filters: [status_satisfies_filter: "yes"]
}
Se un utente sceglie di non selezionare un valore per il campo solo filtro, il valore predefinito di SQL sarà 1=1, il che non influirà sui valori della misura.
Sfide comuni
Non utilizzare filters con misure di type: number
Molti utenti tentano di utilizzare filters con misure di type: number, il che non funziona:
# 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} ;;
}
Applica invece un parametro filters a una delle singole misure che compongono la misura di type: number, nel seguente modo:
# 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"]
}