Nozioni di base su LookML aggiuntive

Questa pagina illustra i pattern più comuni in LookML.

Campi di etichettatura (e nomi nell'interfaccia utente)

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

Se vuoi che un campo abbia un nome diverso da quello della colonna di una tabella, è sufficiente modificare il nome del campo e dichiarare il relativo collegamento sql:. Nell'esempio seguente è riportata una tabella airports con 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
  }
}

La dimensione cntrl_twr verrà rinominata per essere 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

È abbastanza facile raggruppare in base a una dimensione e conteggiare le entità: il raggruppamento per Paese UTENTI indica il Conteggio ordini per conoscere la provenienza degli ordini. Tuttavia, è spesso utile creare un conteggio filtrato in base a un valore dimensionale. Ad esempio, puoi eseguire una nuova misurazione, ORDERS France Count:

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 utilizzare un campo che conteggia gli utenti dell'UE, puoi utilizzare un testo 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 filtrare con un'espressione matematica, assicurati di racchiuderlo 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, come "la percentuale di articoli restituiti " "la percentuale di email che hanno portato a una vendita" o altri casi di "la percentuale di X che Y". In LookML, il pattern di progettazione consiste nel creare i conteggi per le due condizioni e nel creare 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 modulo riportato di seguito quando calcoli le percentuali. In Postgres, i conteggi sono numeri interi e la divisione tra numeri interi dà come risultato numeri interi. Moltiplicando per 100,0 viene convertito 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) convertirà un valore zero in null, rendendo il risultato nullo ed evitando un errore.

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

Utilizzare gli insiemi per i dettagli di visualizzazione in dettaglio

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

Quando viene fatto clic su una misura nell'interfaccia utente di Looker, viene creata una nuova query che localizza il set di dati che la contiene. Ogni valore per ogni dimensione sulla riga della tabella viene aggiunto ai filtri correnti.

Per visualizzare i dettagli, Looker ha bisogno di un elenco specifico di campi drill-down da mostrare quando si fa clic sul valore della misura. Quando generi un modello, il generatore crea in genere alcuni campi drill-down iniziali per te. Inoltre, puoi aggiungere personalmente i campi per il drill-down. Ad esempio, supponi di misurare Conteggio ordini per Stato UTENTI nell'ultima settimana. In Looker, la query avrebbe un aspetto simile al seguente:

Stato UTENTINumero ordini
California24
Texas5
Colorado4
Florida4
Illinois4

Se facciamo clic su 24 nella riga California, il comportamento previsto è che vediamo i 24 ordini provenienti dalla California.

Looker gestisce l'aggiunta del filtro USERS State: California, ma Looker non sa quali campi vuoi mostrare nell'ordine. Dovrai utilizzare un set per dichiarare questi campi nel modello.

In LookML, un set è un elenco di nomi di campi (dimensioni, misure e filtri). I set vengono utilizzati per comunicare a Looker quali campi:

  • Quando vuoi visualizzare in dettaglio un conteggio o un'altra misura
  • Per importare quando unisci una vista
  • Vengono indicizzati in un'esplorazione

Lo stesso set può essere utilizzato in molte posizioni di un modello, quindi Looker offre diversi modi per creare i set.

Insiemi letterali

La forma più semplice di un insieme è un insieme letterale. Un set letterale viene creato dichiarando semplicemente l'insieme come array. Puoi dichiarare i set di valori letterali utilizzando '[]'.

In questo esempio:

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

I campi che vogliamo mostrare sono id, name e city.

Nella misura, potremmo semplicemente dichiarare un array letterale.

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

Per gli insiemi che vengono utilizzati una sola volta, dichiararli letteralmente è semplice e facilmente comprensibile.

Insiemi denominati

Supponiamo di avere due conteggi: CUSTOMERS Count e CUSTOMERS In California Count. Quando analizziamo uno di questi conteggi, vorremmo mostrare i campi id, name e city. Se dichiariamo i campi in modo letterale, potremmo:

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

Se volevamo aggiungere un nuovo campo (ad esempio, il campo customers.state), dobbiamo modificare entrambi gli elenchi. Invece, LookML offre un modo per creare set denominati che possiamo conservare in una posizione e utilizzare in più posizioni.

Il codice seguente crea un set customers.detail e punta entrambi 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"]
  }
}

I set LookML sono molto potenti:

  • La riesclusione degli insiemi è un'aggiunta. Se dichiari un insieme in più posizioni, Looker include tutti i campi dichiarati per l'insieme in tutte le località.
  • Puoi incorporare insiemi in altri insiemi digitandone il nome, seguito da un asterisco, ad esempio setname*.
  • Puoi anche rimuovere elementi dagli insiemi inserendo un trattino prima del nome del campo, ad esempio -fieldname.

Leggi il riferimento completo ai set

Personalizzazione delle visualizzazioni del drill

Se l'amministratore di Looker ha abilitato la funzionalità Visual Drilling Labs, le visualizzazioni dei drill non saranno sempre una tabella di dati predefinita. In questo caso, puoi personalizzare la visualizzazione visualizzata utilizzando le variabili Liquid nel parametro link, come mostrato nella pagina della documentazione relativa al parametro link e nell'articolo del Centro assistenza Foratura più efficace dei dati.

La nuova esperienza dashboard supporta la visualizzazione dettagliata utilizzando il parametro link senza dover attivare la funzionalità Visualizzazione dettagliata di Labs.

Filtrare i set di risultati

LookML fornisce una serie di operazioni di filtro che possono essere applicate ai campi ed esplorazioni per filtrare i set di risultati prima che vengano restituiti all'utente.

always_filter nella sezione Esplora

Utilizza always_filter per applicare sempre un insieme di filtri a qualsiasi query eseguita in un'esplorazione. I filtri verranno visualizzati nell'interfaccia utente di Looker e, sebbene gli utenti possano modificare il valore predefinito del filtro che fornisci, non possono rimuoverli. In genere questi filtri vengono utilizzati per rimuovere i dati che normalmente non vuoi includere. Ad esempio, supponiamo che nell'esplorazione Ordini volessimo vedere solo gli ordini che erano completati o in attesa. Potremmo aggiungere:

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

Se l'utente vuole vedere gli ordini con altri valori di stato, potrebbe impostare lo stato degli ordini su % nella UI.

sql_always_where nella sezione Esplora

Se vuoi applicare una limitazione delle query che gli utenti non possono modificare, puoi utilizzare sql_always_where. Oltre alle query eseguite dagli utenti, la limitazione verrà applicata alle dashboard, ai Look pianificati e alle informazioni incorporate basate 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 che crea.

L'esempio seguente impedisce agli utenti di esaminare gli ordini prima del 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 nella sezione Esplora

Le tabelle molto grandi richiedono un po' di attenzione quando si eseguono query, poiché le query illimitate possono diventare rapidamente troppo pesanti nel database. LookML offre un modo per risolvere questo problema sotto forma di conditionally_filter.

Puoi utilizzare 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 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 alcun filtro a uno di questi campi, Looker aggiungerà automaticamente un filtro di 1 giorno al giorno orders.created_time.

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