Massimizzare la riutilizzabilità del codice con LookML DRY: definisci i campi una volta e utilizza gli operatori di sostituzione ovunque

Le definizioni dei campi LookML possono cambiare nel tempo. Ad esempio, il nome di una colonna del database potrebbe cambiare o potresti dover modificare la definizione di un campo LookML per altri motivi.

Se utilizzi la sintassi {TABLE}.field_name per fare riferimento a una colonna di database direttamente in più punti, devi aggiornare ogni riferimento manualmente. Tutti i campi che fanno riferimento a questa dimensione possono non funzionare se dimentichi di aggiornarli e Looker mostrerà un errore:

Looker mostra l'errore Colonna sconosciuta order_items.sale_price nell'elenco dei campi.

Per rendere i progetti LookML più efficienti e facili da gestire, puoi definire i campi in una posizione e utilizzare l'operatore di sostituzione ($) per fare riferimento a questi campi altrove.

Questa pagina fornisce un esempio di utilizzo dell'operatore di sostituzione (con la sintassi ${field_name}) per fare riferimento a una singola dimensione nelle definizioni di più campi LookML.

Ingredienti

Prerequisiti

Esempio: fare riferimento alla colonna del database sottostante una sola volta per una dimensione

Definisci una colonna della tabella di un database in un progetto LookML una volta utilizzando la sintassi ${TABLE}.field_name nel parametro sql della dimensione. Poi fai riferimento alla dimensione utilizzando la sintassi ${field_name} o ${view_name.field_name} in un altro punto del progetto. In questo modo puoi conservare la definizione LookML della colonna del database in un'unica posizione (la dimensione originale ${TABLE}.field_name), il che è utile se devi farvi riferimento in più punti del progetto.

Ad esempio, puoi utilizzare la sintassi ${TABLE}.sale_price per definire una dimensione di base denominata sale_price in una vista denominata order_items:


  dimension: sale_price {
    type: number
    value_format_name: usd
    sql: ${TABLE}.sale_price ;;
    description: "The price at which an item is set to sell."
  }

Quando definisci altri campi che fanno riferimento alla dimensione sale_price, puoi utilizzare la sintassi ${sale_price} all'interno della visualizzazione order_items (o la sintassi ${order_items.sale_price} per fare riferimento alla dimensione sale_price in altre visualizzazioni).


dimension: profit {
  type: number
  value_format_name: usd
  sql: ${sale_price} - ${inventory_items.cost} ;;
  description: "The difference between an item's sale price and an item's cost."
}

dimension: item_gross_margin {
  type: number
  value_format_name: percent_2
  sql: 1.0 * ${profit}/NULLIF(${sale_price},0) ;;
}

measure: total_sale_price {
  type: sum
  value_format_name: usd
  sql: ${sale_price} ;;
}

In questo esempio, se il nome della colonna per la dimensione sale_price cambia, dovrai aggiornare una sola volta il riferimento ${TABLE}.sale_price nella definizione della dimensione di base sale_price. Questa modifica verrà poi propagata automaticamente ai campi profit, item_gross_margin e total_sale_price, nonché a tutti gli altri campi che fanno riferimento alla dimensione sale_price.