Massimizzazione della riusabilità 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 di database potrebbe cambiare oppure 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. Se dimentichi di aggiornarli, tutti i campi che fanno riferimento a questa dimensione possono non funzionare e Looker mostrerà un errore:

Looker visualizza la colonna di errore Sconosciuto order_items.sale_price nell'elenco dei campi.

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

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 di database sottostante solo una volta per una dimensione

Definisci una colonna della tabella di 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} altrove nel 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à quindi 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.