Pattern LookML comuni

Questa pagina descrive i seguenti pattern comuni in LookML:

Campi di etichettatura (e nomi nell'UI)

Looker converte i nomi dei campi LookML nelle stringhe visualizzate dall'interfaccia utente combinando il nome della visualizzazione in carattere normale con il nome breve del campo in grassetto. Ad esempio, un campo denominato Importo nella visualizzazione Ordini viene visualizzato nell'interfaccia utente come Importo ordini. In questa pagina, entrambi i nomi dei campi sono in grassetto e il nome della visualizzazione è in maiuscolo (Importo ORDINI) per rendere più chiara la discussione.

Se vuoi che un campo abbia un nome diverso da quello della colonna in una tabella, modifica il nome del campo e utilizza il parametro sql per collegare il campo alla colonna appropriata della tabella. Nell'esempio seguente, la tabella airports ha una colonna cntrl_twr. Looker genererebbe la seguente dichiarazione:

view: airports {
  dimension: cntrl_twr {        # full name: airports.cntrl_twr
    type: yesno                 # default name: AIRPORT Cntrl Twr (Yes/No)
    sql: ${TABLE}.cntrl_twr ;;  # the sql expression for this field
  }
}

Puoi rinominare la dimensione cntrl_twr in modo che sia leggibile:

view: airports {
  dimension: has_control_tower {  # full name: airports.has_control_tower
    type: yesno                   # aliased name: AIRPORTS Has Control Tower (Yes/No)
    sql: ${TABLE}.cntrl_twr ;;    # the sql expression for this field
  }
}

Filtrare i conteggi in base a una dimensione

Puoi raggruppare per una dimensione e contare le entità. Il raggruppamento per Paese degli utenti e Conteggio ordini indica la provenienza degli ordini per paese. Tuttavia, spesso è utile creare un conteggio filtrato in base a un valore dimensionale. Ad esempio, puoi creare una nuova misura e chiamarla Conteggio ORDINI Francia:

view: users {
  dimension: country {}
}
view: orders {
  dimension: id {
    primary_key: yes
    sql: ${TABLE}.id ;;
  }
  measure: count {
    type: count
    drill_fields: [detail]
  }
  measure: france_count {
    type: count   # COUNT(CASE WHEN users.country = 'France' THEN 1 ELSE NULL END)
    filters: [users.country: "France"]
  }
}

I filtri possono utilizzare qualsiasi espressione. Se vuoi un campo che conteggi gli utenti dell'UE, puoi utilizzare un'espressione simile a questa:

measure: eu_count {
  type: count   # COUNT(CASE WHEN users.countrycode IN 'UK','FR','ES' THEN 1 ELSE NULL END)
  drill_fields: [detail]
  filters: [users.countrycode: "UK,FR,ES"]
}

Se vuoi filtrare con un'espressione matematica, assicurati di racchiuderla tra virgolette doppie:

measure: total_orders_above_100_dollars {
  type: sum   # SUM(CASE WHEN order.value > 100 THEN order.value ELSE NULL END)
  sql: ${order.value} ;;
  drill_fields: [detail]
  filters: [order.value: ">100"]
}

Percentuali

Molti indicatori chiave di prestazione sono espressi sotto forma di percentuali, ad esempio "la percentuale di articoli restituiti", "la percentuale di email che hanno generato una vendita" o altri casi di "la percentuale di X che Y". In LookML, il pattern di progettazione prevede la creazione di conteggi per le due condizioni e la creazione di un terzo campo che calcola la percentuale tra le due.

dimension: returned {
  type: yesno
}
measure: count {   # total count of items
  type: count_distinct
  sql: ${TABLE}.id ;;
  drill_fields: [detail]
}
measure: returned_count {   # count of returned items
  type: count_distinct
  sql: ${TABLE}.id ;;
  drill_fields: [detail]
  filters: [returned: "Yes"]
}
measure: percent_returned {
  type: number
  sql: 100.0 * ${returned_count} / NULLIF(${count}, 0) ;;
  value_format: "0.00"
}

Utilizza il seguente formato per calcolare le percentuali. In Postgres, i conteggi sono numeri interi e la divisione tra numeri interi genera numeri interi. La moltiplicazione per 100,0 converte il primo conteggio in un numero in virgola mobile, convertendo così il resto dell'espressione in un numero in virgola mobile. Per evitare errori di divisione per zero, NULLIF(value, 0) converte un valore zero in null, il che rende il risultato null ed evita un errore.

100.0 * ${returned_count} / NULLIF(${count}, 0)

Utilizzo dei set per i dettagli in visualizzazione in dettaglio

Una delle funzionalità più potenti di Looker è la possibilità di visualizzare in dettaglio i dati per vedere le entità sottostanti che compongono un conteggio o un'altra misura.

Quando fai clic su una metrica nell'interfaccia utente, Looker crea una nuova query per localizzare il set di dati che compone la metrica. Ogni valore per ogni dimensione nella riga della tabella viene aggiunto a

Per mostrare i dettagli, Looker ha bisogno di un elenco specifico di campi di visualizzazione in dettaglio da mostrare quando viene fatto clic sul valore della misura. Quando generi un modello, il generatore in genere crea alcuni campi di visualizzazione in dettaglio iniziali. Inoltre, puoi aggiungere autonomamente i campi di visualizzazione in dettaglio. Ad esempio, supponiamo che tu stia misurando il Conteggio ORDINI in base allo Stato UTENTI nell'ultima settimana. In Looker, la query avrà un aspetto simile al seguente:

Stato UTENTIConteggio ORDINI
California24
Texas5
Colorado4
Florida4
Illinois4

Se fai clic su 24 nella riga California, potresti aspettarti di vedere i 24 ordini provenienti dalla California. Anche se Looker aggiunge il filtro Stato UTENTI: California, non sa quali campi vuoi mostrare nell'ordine. Devi prima utilizzare un set per dichiarare questi campi nel modello.

In LookML, un set è un elenco di nomi di campi (dimensione, metrica e filtro). Utilizzi i set per fornire a Looker le seguenti informazioni:

  • I campi da mostrare quando visualizzi in dettaglio un conteggio o un'altra misura
  • I campi che vuoi importare quando partecipi a una visualizzazione
  • I campi che vuoi vengano indicizzati in un'esplorazione

Poiché lo stesso insieme può essere utilizzato in molti punti di un modello, Looker fornisce diversi metodi per creare insiemi.

Set di valori letterali

Un insieme letterale è un modo semplice per definire un insieme in LookML, in particolare quando l'insieme viene utilizzato una sola volta. Un insieme letterale viene creato dichiarando l'insieme come array. Puoi dichiarare i set letterali utilizzando [].

Considera l'esempio seguente:

view: customers {
  dimension: id {
    primary_key: yes
  }
  measure: count {
    type: count
  }
  dimension: city {}
  dimension: state {}
  dimension: name {}
}

In questo esempio, i campi che vuoi mostrare sono id, name e city.

Nella misura, puoi dichiarare un array letterale nel seguente modo:

measure: count {
  type: count
  drill_fields: [id, name, city]
}

Set denominati

Supponiamo che nella vista customers siano definiti due conteggi: count e in_california_count. Quando un utente visualizza in dettaglio il campo Conteggio o il campo Conteggio in California in un'esplorazione, vuoi visualizzare i campi id, name e city.

Inizialmente, dichiarare questi campi letteralmente potrebbe sembrare sufficiente:

view: customers {
  measure: count {
    type: count
    drill_fields: [id, name, city]
  }
  measure: in_california_count {
    type: count
    filters: [state: "California"]
    drill_fields: [id, name, city]
  }
}

Tuttavia, se volessi aggiungere un nuovo campo (ad esempio customers.state), dovresti modificare entrambi gli elenchi, a meno che tu non abbia utilizzato il parametro set per creare set denominati che puoi gestire in un'unica posizione e utilizzare in più posizioni.

Il seguente codice crea un insieme customers.detail e punta entrambi i conteggi allo stesso insieme di campi.

view: customers {
  set: detail {
    fields: [id, name, city]      # creates named set customers.detail
  }

  measure: count {
    type: count
    drill_fields: [detail*]       # show fields in the set "customers.detail"
  }
  measure: in_california_count {
    type: count
    filters: [state: "California"]
    drill_fields: [detail*]      # show fields in the set "customers.detail"
  }
}

I set LookML sono potenti nei seguenti modi:

  • La ridefinizione degli insiemi è cumulativa. Se dichiari un insieme in più posizioni, Looker include tutti i campi dichiarati per l'insieme in tutte le posizioni.
  • Puoi incorporare set all'interno di altri set digitando il nome dell'altro set seguito da un asterisco, ad esempio setname*.
  • Puoi rimuovere elementi dai set inserendo un trattino prima del nome del campo, ad esempio -fieldname.

Personalizzare le visualizzazioni in dettaglio

Se l'amministratore Looker ha attivato la funzionalità lab Visualizzazione in dettaglio, le visualizzazioni in dettaglio di Look ed Esplora non verranno sempre impostate per impostazione predefinita su una tabella di dati. In questo caso, puoi personalizzare la visualizzazione mostrata utilizzando le variabili Liquid nel parametro link, come mostrato nella pagina di documentazione del parametro link e nella pagina delle best practice Visualizzazione in dettaglio più potente dei dati.

Le dashboard supportano l'esplorazione visiva utilizzando il parametro link senza la necessità di attivare la funzionalità sperimentale Esplorazione visiva.

Filtro dei set di risultati

LookML fornisce un insieme di operazioni di filtro che possono essere applicate a campi ed esplorazioni per filtrare gli insiemi di risultati prima che vengano restituiti all'utente.

always_filter in Esplora

Utilizza always_filter per applicare sempre un insieme di filtri a qualsiasi query eseguita in un'esplorazione. I filtri verranno visualizzati nella UI di Looker e, sebbene gli utenti possano modificare il valore predefinito del filtro che fornisci, non possono rimuovere i filtri. In genere, questi filtri vengono utilizzati per rimuovere i dati che normalmente non vuoi includere. Ad esempio, supponiamo che nell'esplorazione Ordini tu voglia visualizzare solo gli ordini completati o in attesa. Potresti aggiungere il seguente codice LookML:

explore: orders {
  view_name: order
    filters: [status: "complete,pending"]
  }
}

Se l'utente volesse visualizzare gli ordini con altri valori di stato, potrebbe impostare Stato ORDINI su % nell'interfaccia utente.

sql_always_where in Esplora

Se vuoi applicare una limitazione della query che gli utenti non possono modificare, puoi utilizzare sql_always_where. Oltre alle query eseguite da utenti umani, la limitazione verrà applicata alle dashboard, ai Look pianificati e alle informazioni incorporate che si basano su questa esplorazione. Una condizione sql_always_where non viene visualizzata all'utente, a meno che non esamini l'SQL sottostante di qualsiasi query creata.

Il seguente esempio impedisce agli utenti di visualizzare gli ordini precedenti al 01/01/2012:

# Using Looker references
explore: order {
  sql_always_where: ${created_date} >= '2012-01-01' ;;
}

# Using raw SQL
explore: order {
  sql_always_where: DATE(created_time) >= '2012-01-01' ;;
}

conditionally_filter in Esplora

Le tabelle molto grandi richiedono un po' di attenzione durante l'esecuzione di query, poiché le query illimitate possono diventare rapidamente troppo onerose per il database. LookML offre un modo per risolvere questo problema sotto forma di conditionally_filter.

Utilizzi il parametro conditionally_filter per applicare un filtro alla query, a meno che l'utente non abbia già aggiunto un filtro per uno dei campi elencati nella sezione unless.

Il seguente esempio non apporterà alcuna modifica alla query dell'utente se quest'ultimo ha applicato un filtro a uno o più di questi campi: created_date, shipped_time, shipped_date, orders.id o customer.name. Se l'utente non ha applicato filtri a nessuno di questi campi, Looker aggiungerà automaticamente un filtro di 1 giorno a orders.created_time.

  filters: [orders.created_time: "1 day"]
  unless: [created_date, shipped_time, shipped_date, orders.id, customer.name]
}