filtri (per i campi)

Questa pagina si riferisce al parametro filters, che fa parte di una misura.

filters può essere utilizzato anche nell'ambito di una tabella derivata nativa, come descritto nella pagina della documentazione dedicata al parametro explore_source.

filters può essere utilizzato anche nell'ambito di una dashboard, come descritto nella pagina della documentazione Parametri della dashboard.

filters può 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: count
  • type: count_distinct
  • type: sum
  • type: 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"]
}