Massimizzazione della riusabilità del codice con LookML DRY: definizione dei campi una volta sola e utilizzo degli operatori di sostituzione ovunque

Le definizioni dei campi LookML possono cambiare nel tempo. Ad esempio, il nome di una colonna di database potrebbe cambiare o potrebbe essere necessario 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 manualmente ciascun riferimento. 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 nella colonna 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 del 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. Quindi fai riferimento alla dimensione utilizzando la sintassi ${field_name} o ${view_name.field_name} in qualsiasi altro punto del progetto. In questo modo puoi mantenere la definizione LookML della colonna di database in un'unica posizione (la dimensione ${TABLE}.field_name originale), il che è utile se devi farvi riferimento in più punti del tuo 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} nella vista order_items oppure la sintassi ${order_items.sale_price} per fare riferimento alla dimensione sale_price in altre viste.


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 il riferimento ${TABLE}.sale_price solo una volta, 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.