Utilizzo di filtri basati su modelli

Utilizzo

view: view_name {
filtro: filter_name { ... }
}
Gerarchia
filter
Valore predefinito
Nessuna

Accetta
Un identificatore di Looker per assegnare un nome al filtro

Regole speciali
I nomi dei filtri non possono essere condivisi con nessun altro filtro, dimension o measure all'interno dello stesso view

Definizione

Il parametro filter dichiara un campo solo filtro e un nome per il filtro. Un utente può aggiungere campi di solo filtro come filtri durante l'esplorazione, ma non può aggiungerli al set di risultati. Questi campi di solo filtro sono utili tramite i filtri basati su modelli, che sono un argomento LookML avanzato. Puoi anche fare riferimento all'esempio Utilizzo di filter per filtrare in base a un campo nascosto.

Il nome del filtro deve:

  • Devono essere univoci all'interno di una determinata vista
  • Sono composti da caratteri da a a z (senza lettere maiuscole), da 0 a 9 o _.
  • Inizia con una lettera

Esistono molti tipi di campi di filtro, come approfondito nella pagina della documentazione Dimensioni, filtri e tipi di parametri.

Esempi

Ecco alcuni esempi per l'utilizzo del parametro filter.

Creazione di un filtro specificato dall'utente

Crea un filtro che consenta all'utente di specificare order_region:

filter: order_region {
  type: string
}

Definizione di una tabella derivata dinamica con un filtro basato su modello

Come illustrato nella pagina della documentazione Filtri basati su modelli e parametri Liquid, definisci una tabella derivata per calcolare la spesa complessiva dei clienti in una regione specificata dall'utente. In questo esempio viene utilizzato il filter creato nell'esempio precedente come parte di un filtro basato su modello. L'input filter viene utilizzato nella clausola WHERE con le variabili Liquid:

view: customer_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        SUM(sale_price) AS lifetime_spend
      FROM
        order
      WHERE
        {% condition order_region %} order.region {% endcondition %}
      GROUP BY 1
    ;;
  }

  filter: order_region {
    type: string
  }
}

In base al parametro sql con filter

Puoi anche utilizzare il parametro sql con filter, che si applica alla clausola SQL WHERE ogni volta che il filtro ha un valore. In questo modo viene consentita una clausola WHERE dinamica in base all'input del filtro dell'utente.

L'esempio seguente crea un filtro che consente solo i nomi utente esistenti nel set di dati:

filter: user_enabled {
  type: string
  suggest_dimension: user_name
  sql: EXISTS (SELECT user_id FROM users WHERE {% condition %} user_name {% endcondition %} and state = 'enabled') ;;
}

Nell'esempio precedente, se l'elenco completo dei nomi utente nel set di dati è "Zach", "Erin" e "Brett", il filtro restituisce la seguente clausola WHERE:

WHERE EXISTS (SELECT user_id FROM users WHERE user_name in ('Zach', 'Erin', 'Brett') and state = 'enabled')

Consulta la sezione Utilizzo di filter per filtrare in base a un campo nascosto in questa pagina per un esempio di come utilizzare il parametro sql con filter.

Utilizza filter per definire una tabella derivata dinamica e un filtro definito dall'utente

Nell'esempio precedente, che definisce una tabella derivata con un valore di regione dinamico, puoi usare il parametro sql con un filtro basato su modelli per creare dinamicamente una clausola WHERE che si applichi sia alla tabella derivata sia alla query principale generata da Looker:

view: customer_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        SUM(sale_price) AS lifetime_spend
      FROM
        order
      WHERE
        {% condition order_region %} order.region {% endcondition %}
      GROUP BY 1
    ;;
  }
  filter: order_region {
    type: string
    sql: {% condition order_region %} ${region} {% endcondition %} ;;
  }
  dimension: region {
    type: string
    sql: ${TABLE}.region ;;
  }

Nell'esempio riportato sopra, l'utente fornisce un input al filtro order_region, che a sua volta fornisce il valore alla dimensione region. La dimensione region fornisce quindi il valore della clausola WHERE nel codice SQL della tabella derivata e, a causa del parametro sql nella definizione filter, del valore della clausola WHERE in una query generata da Looker.

Utilizzo di filter per filtrare in base a un campo nascosto

Puoi utilizzare filter per creare una dimensione in base alla quale gli utenti possono filtrare, impedendo al contempo agli utenti di selezionare la dimensione in una query.

  1. Per prima cosa, nascondi la dimensione in questione utilizzando hidden: yes. Ciò significa che la dimensione non sarà disponibile per la selezione da parte del selettore di campi Esplora.
  dimension: field_to_hide {
  type: string
  hidden: yes
  sql: ${TABLE}.field_to_hide ;;
  }
  1. Ora crea un campo filter da collegare alla dimensione field_to_hide.
filter: filter_on_field_to_hide {
    type: string
    sql: {% condition filter_on_field_to_hide %} ${field_to_hide} {% endcondition %} ;;
  }

Come illustrato nell'esempio del parametro sql con filter, il parametro sql del campo filter applica SQL direttamente alla clausola WHERE della query. In questo caso, sql prende la condizione di filtro specificata nel filtro filter_on_field_to_hide e la applica alla dimensione ${field_to_hide}.

In questo modo, gli utenti possono filtrare una query in base a field_to_hide con il filtro filter_on_field_to_hide, mentre la dimensione field_to_hide rimane nascosta.