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 i dettagli di visualizzazione dettagliata
- Filtro dei set di risultati
Campi di etichettatura (e nomi nell'interfaccia utente)
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 è scritto in maiuscolo (ORDERS Amount) per chiarire la discussione.
Se vuoi che un campo abbia un nome diverso dal nome della colonna in una tabella, modifica il nome del campo e utilizza il parametro sql
per collegarlo alla colonna appropriata nella tabella. Nell'esempio seguente, la tabella airports
ha una colonna cntrl_twr
. Looker genererà 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 in base a una dimensione e conteggiare le entità. Il raggruppamento per Paese utenti, Conteggio ordini ti 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 rinominarla CONTAGGIO 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 conteggia gli utenti dell'UE, puoi utilizzare qualcosa di simile al seguente:
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 applicare un filtro 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 altre istanze di "la percentuale di X rispetto a Y". In LookML, il pattern di progettazione consiste nel creare conteggi per le due condizioni e 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 a virgola mobile, convertendo così il resto dell'espressione in un numero con virgola mobile. Per evitare errori di divisione per zero, NULLIF(value, 0)
converte un valore pari a zero in null, rendendo il risultato null e evitando un errore.
100.0 * ${returned_count} / NULLIF(${count}, 0)
Utilizzo dei set per visualizzare i dettagli 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 misura nell'interfaccia utente, Looker crea una nuova query per localizzare l'insieme di dati che compone la misura. Ogni valore per ogni dimensione nella riga della tabella viene aggiunto a
Per mostrare i dettagli, Looker ha bisogno di un elenco specificato di campi di visualizzazione da mostrare quando viene fatto clic sul valore della misura. Quando generi un modello, in genere il generatore crea alcuni campi di visualizzazione iniziali. Inoltre, puoi aggiungere autonomamente i campi di visualizzazione dettagliata. Ad esempio, supponiamo che tu stia misurando il Conteggio ordini in base allo stato Utenti nell'ultima settimana. In Looker, la query avrà il seguente aspetto:
Stato USERS | 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. Sebbene Looker aggiunga il filtro USERS Stato: California, non sa quali campi vuoi mostrare nell'ordine. Devi prima utilizzare un set per dichiarare questi campi nel modello.
In LookML, un insieme è un elenco di nomi di campi (dimensioni, misure e filtri). Utilizzi i set per fornire a Looker le seguenti informazioni:
- I campi da mostrare quando esegui drill-down in un conteggio o in un'altra misura
- I campi che vuoi importare quando unisci una visualizzazione
- I campi che vuoi indicizzare in un'esplorazione
Poiché lo stesso insieme può essere utilizzato in molti punti di un modello, Looker fornisce diversi metodi per crearli.
Set di valori letterali
Un set di valori letterali è un modo semplice per definire un set in LookML, in particolare quando il set viene utilizzato una sola volta. Un insieme di valori letterali viene creato dichiarando l'insieme come array. Puoi dichiarare insiemi di valori 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 da mostrare sono id
, name
e city
.
Nella misura, puoi dichiarare un array di valori letterali come segue:
measure: count {
type: count
drill_fields: [id, name, city]
}
Insiemi denominati
Supponiamo che nella visualizzazione 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
.
All'inizio, potrebbe sembrare sufficiente dichiarare questi campi in modo letterale:
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 vuoi aggiungere un nuovo campo (ad esempio customers.state
), devi modificare entrambi gli elenchi, a meno che tu non abbia utilizzato il parametro set
per creare insiemi denominati che puoi gestire in un unico posto e utilizzare in più posizioni.
Il seguente codice crea un insieme customers.detail
e indirizza 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 di LookML sono efficaci nei seguenti modi:
- La rideclarazione degli insiemi è additiva. Se dichiari un insieme in più posizioni, Looker include tutti i campi dichiarati per l'insieme in tutte le posizioni.
- Puoi incorporare insiemi in altri insiemi digitando il nome dell'altro insieme seguito da un asterisco, ad esempio
setname*
. - Puoi rimuovere elementi dagli insiemi inserendo un trattino prima del nome del campo, ad esempio
-fieldname
.
Personalizzare le visualizzazioni dettagliate
Se l'amministratore di Looker ha attivato la funzionalità di Labs Visual Drilling, le visualizzazioni di visualizzazione di Look ed Esplora non utilizzeranno sempre per impostazione predefinita una tabella di dati. In questo caso, puoi personalizzare la visualizzazione visualizzata utilizzando le variabili Liquid nel parametro link
, come mostrato nella pagina della documentazione del parametro link
e nella pagina Best practice per un'analisi più approfondita dei dati .
Le dashboard supportano il drill-down visivo utilizzando il parametro link
senza dover attivare la funzionalità di Labs Drill-down visivo.
Filtrare i 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 all'interno di un'esplorazione. I filtri verranno visualizzati nell'interfaccia utente di Looker e, anche se gli utenti possono 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. Puoi aggiungere il seguente codice LookML:
explore: orders {
view_name: order
filters: [status: "complete,pending"]
}
}
Se l'utente voleva visualizzare gli ordini con altri valori di stato, poteva impostare ORDERS Status su % nell'interfaccia utente.
sql_always_where
in Esplora
Se vuoi applicare una limitazione delle query che gli utenti non possono modificare, puoi utilizzare sql_always_where
. Oltre alle query eseguite da utenti umani, la limitazione si applica alle dashboard, ai Look pianificati e alle informazioni incorporate che si basano su questa esplorazione. Una condizione sql_always_where
non viene mostrata all'utente, a meno che non esamini il codice SQL sottostante di qualsiasi query creata.
Il seguente esempio impedisce agli utenti di visualizzare gli ordini precedenti al 1° gennaio 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 di grandi dimensioni richiedono un po' di attenzione durante l'esecuzione di query, poiché le query illimitate possono diventare rapidamente troppo gravose per il database. LookML fornisce un modo per risolvere il problema sotto forma di conditionally_filter
.
Utilizza 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 apporta alcuna modifica alla query dell'utente se l'utente 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 un filtro a nessuno di questi campi, Looker aggiungerà automaticamente un filtro di 1 giorno su orders.created_time
.
filters: [orders.created_time: "1 day"]
unless: [created_date, shipped_time, shipped_date, orders.id, customer.name]
}