Questa pagina si riferisce al parametro
filters
che fa parte di una misura.
filters
può essere utilizzato anche come parte di una tabella nativa derivata, descritta nella pagina della documentazione del parametroexplore_source
.
filters
può essere utilizzato anche come parte di una dashboard, descritto nella pagina della documentazione relativa ai parametri della dashboard.
filters
può essere utilizzato anche come parte di un elemento della dashboard. Un esempio rappresentativo del suo utilizzo è fornito nella pagina della documentazione relativa agli elementi del grafico a colonne.
Utilizzo
measure: field_name {
filtri: [dimension_name: "filterexpression", dimension_name: "filterexpression", ... ]
}
}
Gerarchia
filters |
Tipi di campi possibili
MisuraAccetta
Un insieme di nomi di dimensioni e espressioni di filtro corrispondenti |
Definizione
filters
è un elenco facoltativo di espressioni di filtro che vengono applicate al calcolo di una misura. Funziona solo con i seguenti tipi di misurazione che effettuano l'aggregazione:
type: count
type: count_distinct
type: sum
type: average
La sintassi dei filtri è la seguente:
filters: [dimension_name_1: "Looker filter expression", dimension_name_2: "Looker filter expression", ...]
Per informazioni dettagliate su come scrivere espressioni di filtro valide, consulta la notazione del filtro di Looker. 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 misurazioni filtrate dinamiche con un valore del filtro che può cambiare in modo dinamico in base all'input utente su una dashboard o su un look. Questo approccio consente agli utenti di selezionare i valori del filtro che si applicano solo a una misura specifica, senza filtrare l'intera query in una clausola WHERE
globale. Consulta la sezione Creare una misura filtrata dinamica più avanti in questa pagina per riferimento.
Esempi
Esistono molti modi per utilizzare filters
per le misure. Gli esempi riportati di seguito descrivono alcune soluzioni per i casi d'uso comuni:
- Filtri in base a più campi
- Filtrare in base a una dimensione
yesno
- Aggiungere più valori del filtro
- Aggiungere condizioni numeriche dei filtri
- Utilizzare la sintassi dei filtri avanzati
- Creare una misura dinamica filtrata
Filtro in base a più campi
In questo esempio, la misura conteggia gli ID distinti che sono stati creati negli ultimi sette giorni e non provengono da utenti con account disattivati. Questo esempio illustra 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
}
Filtri in base a una dimensione yesno
Per fare un altro esempio, considera i dati che includono una riga per persona, che è un dipendente normale o un appaltatore. Esiste un campo, is_contractor
, di tipo yesno
, che contiene yes
se la persona è un appaltatore. Questa misura conta solo le righe per i contrattisti:
measure: contractor_count {
type: count
filters: [is_contractor: "yes"]
}
Aggiungere più valori del filtro
Nel prossimo esempio, l'espressione filters
contiene più valori. Nella misura verranno conteggiate tutte le righe che corrispondono a uno qualsiasi dei quattro valori nel campo state
:
measure: customers_by_state {
type: count
filters: [state: "California, Nevada, Washington, Oregon"]
}
Aggiungere condizioni numeriche di filtro
In questo esempio, al filtro viene assegnato un valore numerico. Nella misura verranno aggiunti solo gli ordini con un price
superiore a 100:
measure: total_amt_large_orders {
type: sum
filters: [orders.price: ">100"]
sql: ${orders.price} ;;
}
Utilizzo della sintassi di filtro avanzato
In questo esempio, al filtro viene assegnato un intervallo di valori numerici. La misura include gli ordini totali dei clienti della fascia di età 18-25 anni:
measure: sales_18_to_25 {
type: sum
filters: [customers.age: ">=18 AND <=25"]
sql: ${orders.price} ;;
}
Creare una misura filtrata dinamica
In questo esempio, un filtro offre all'utente la possibilità di visualizzare il numero di ordini, filtrati in base allo stato scelto, da un filtro Look o dashboard:
Innanzitutto, crea un campo di solo filtro che consenta all'utente di selezionare un valore:
filter: status_filter {
type: string
suggest_dimension: status
}
A questo punto, crea una dimensione nascosta che utilizza i filtri basati su modelli per acquisire la selezione degli utenti dal precedente campo solo filtro. Questa dimensione restituisce 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 sulla 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 è 1=1, il che non influirà sui valori di misurazione.
Sfide comuni
Non usare filters
con misure di type: number
Molti utenti tentano di utilizzare filters
con misure di type: number
, ma 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 qualsiasi delle singole misure che costituiscono la misura di type: number
, come indicato di seguito:
# 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"]
}