Pattern LookML comuni

Questa pagina descrive i seguenti pattern comuni in LookML:

Etichettatura dei campi (e dei nomi nell'interfaccia utente)

Looker converte i nomi dei campi LookML nelle stringhe visualizzate dall'interfaccia utente combinando il nome della vista in carattere normale con il nome breve del campo in grassetto. Ad esempio, un campo denominato Amount nella vista Orders viene visualizzato nell'interfaccia utente come Orders Amount. In questa pagina, entrambi i nomi dei campi sono in grassetto e il nome della vista è in maiuscolo (ORDERS Amount) per rendere più chiara 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 collegare il campo alla colonna appropriata nella 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
  }
}

Filtro dei conteggi in base a una dimensione

Puoi raggruppare in base a una dimensione e contare le entità. Il raggruppamento per USERS Country, ORDERS Count ti indicherà da dove provengono i tuoi ordini in base al paese. Tuttavia, spesso è utile creare un conteggio filtrato in base a un valore dimensionale. Ad esempio, puoi creare una nuova misura e chiamarla 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 un campo che conteggi gli utenti dell'UE, puoi utilizzare un'espressione simile alla 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, racchiudila 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 che 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 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 di set per i dettagli della visualizzazione dettagliata

Una delle funzionalità più potenti di Looker è la possibilità di esaminare in dettaglio i dati per visualizzare 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 drill-down da mostrare quando si fa clic sul valore della misura. Quando generi un modello, il generatore in genere crea alcuni campi di drill-down iniziali. Inoltre, puoi aggiungere i campi di drill-down. Ad esempio, supponiamo che tu stia misurando ORDERS Count in base a USERS State nell'ultima settimana. In Looker, la query sarebbe simile alla seguente:

USERS StateORDERS Count
California24
Texas5
Colorado4
Florida4
Illinois4

Se fai clic su 24 nella riga California, potresti aspettarti di vedere i 24 ordini provenienti dalla California. Sebbene Looker aggiunga il filtro USERS State: California, non sa quali campi vuoi mostrare nell'ordine. Per prima cosa, devi utilizzare un set per dichiarare questi campi nel modello.

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

  • I campi che vuoi mostrare quando esegui il drill-down in un conteggio o in un'altra misura
  • I campi che vuoi importare quando unisci una vista
  • I campi che vuoi indicizzare in un'esplorazione

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

Set letterali

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

Considera il seguente esempio:

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 come segue:

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 esegue il drill-down nel campo Count o nel campo In California Count in un'esplorazione, vuoi visualizzare i campi id, name e city.

Inizialmente, la dichiarazione letterale di questi campi 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 set parametro per creare set denominati che puoi gestire in un'unica posizione e utilizzare in più posizioni.

Il seguente codice crea un set customers.detail e punta entrambi i conteggi allo stesso set 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 ridichiarazione dei set è additiva. Se dichiari un set in più posizioni, Looker include tutti i campi dichiarati per il set in tutte le posizioni.
  • Puoi incorporare i set all'interno di altri set digitando il nome dell'altro set seguito da un asterisco, ad esempio setname*.
  • Puoi rimuovere gli elementi dai set inserendo un trattino prima del nome del campo, ad esempio -fieldname.

Personalizzazione delle visualizzazioni di drill-down

Se l'amministratore di Looker ha attivato la funzionalità Visualizzazione dettagliata, le visualizzazioni dettagliate di look ed esplorazioni non sempre utilizzano per impostazione predefinita una tabella di dati. In questo caso, puoi personalizzare la visualizzazione mostrata utilizzando le variabili Liquid nel parametro link, come mostrato nella pagina della documentazione del parametro link e nella pagina Best practice per una visualizzazione dettagliata dei dati più efficace.

Le dashboard supportano il drill-down visivo utilizzando il parametro link senza dover attivare la funzionalità drill-down visivo.

Filtro degli insiemi 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 nell'esplorazione

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, sebbene gli utenti possano modificare il valore del filtro predefinito 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 Orders 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 volesse visualizzare gli ordini con altri valori di stato, potrebbe impostare ORDERS Status su % nell'interfaccia utente.

sql_always_where nell'esplorazione

Se vuoi applicare una limitazione della 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 che si basano su questa esplorazione. Una condizione sql_always_where non viene visualizzata dall'utente, a meno che non esamini l'SQL sottostante di tutte le query che crea.

L'esempio seguente 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 nell'esplorazione

Le tabelle molto grandi richiedono una certa attenzione durante l'esecuzione delle query, poiché le query illimitate possono diventare rapidamente troppo onerose per il database. LookML fornisce un modo per risolvere questo 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.

L'esempio seguente 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 filtrato 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]
}