Questa pagina descrive i seguenti pattern comuni in LookML:
- Campi di etichettatura (e nomi nell'interfaccia utente)
- Filtrare i conteggi in base a una dimensione
- Percentuali
- Utilizzare i set per visualizzare i dettagli in dettaglio
- Filtrare i set di risultati
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 UTENTI | Conteggio ORDINI |
---|---|
California | 24 |
Texas | 5 |
Colorado | 4 |
Florida | 4 |
Illinois | 4 |
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]
}