filters

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 parametro explore_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

view: view_name {
measure: field_name {
filtri: [dimension_name: "filterexpression", dimension_name: "filterexpression", ... ]
}
}
Gerarchia
filters
Tipi di campi possibili
Misura

Accetta
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:

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"]
}