Massimizzazione della riusabilità del codice con LookML DRY: definizione di una stringa una volta da utilizzare in tutto il progetto LookML

Puoi utilizzare il parametro constant di LookML all'interno del file manifest del tuo progetto per definire una stringa da utilizzare in tutto il progetto. Le costanti LookML possono essere utili quando devi definire una stringa specifica, ad esempio un numero, un nome o la formattazione HTML dei valori dei campi, e riutilizzarlo in tutto il progetto.

Questa pagina include i seguenti esempi di utilizzo delle costanti LookML per definire e mantenere valori di stringhe riutilizzabili in una sola posizione:

Ingredienti

Prerequisiti

Esempio: utilizzare la stessa stringa nelle etichette di più esplorazioni

Supponi di voler creare due esplorazioni, etichettate Utenti di San Francisco e Ordini di San Francisco nell'interfaccia utente, ma non vuoi digitare manualmente il testo di ogni etichetta.

A questo scopo, puoi definire una costante place_name con il valore "San Francisco" nel file manifest del progetto per il tuo progetto:

constant: place_name {
  value: "San Francisco"
}

È quindi possibile fare riferimento a questa costante in qualsiasi parte del progetto in cui viene accettata una stringa utilizzando la sintassi @{place_name}. In questo esempio puoi definire le esplorazioni users e orders, specificando "@{place_name} Users" e "@{place_name} Orders" come valori per il parametro label, come nell'esempio seguente:


explore: users {
  label: "@{place_name} Users"
}

explore: orders {
  label: "@{place_name} Orders"
}

In questo esempio, Looker mostra Utenti di San Francisco e Ordini di San Francisco nel menu Esplora e nei titoli delle esplorazioni, anziché le etichette predefinite Utenti e Ordini.

Supponi di voler aggiornare tutti i riferimenti a San Francisco in Bay Area.

Anziché aggiornare manualmente ogni riferimento, devi solo aggiornare la costante place_name nel file manifest del tuo progetto:

constant: place_name {
  value: "Bay Area"
}

Poiché hai definito la costante place_name, non devi modificare manualmente da San Francisco a Bay Area in più luoghi. I riferimenti a San Francisco con la costante place_name verranno sostituiti con Bay Area, quindi Looker mostrerà Bay Area Users (Utenti area della baia) e Bay Area Orders (Ordini area della baia) nel menu Explore e nei titoli delle esplorazioni.

Esempio: applicare la stessa formattazione a valori negativi per più campi

Supponi di volere che i valori dei dati negativi vengano visualizzati in rosso e tra parentesi ogni volta che compaiono nei report.

Impostando questa formattazione come valore per una costante LookML, puoi specificare la formattazione una sola volta utilizzando le variabili Liquid e HTML. Quindi, puoi fare riferimento alla costante ogni volta che vuoi applicare la formattazione a un campo.

Ad esempio, puoi creare una costante denominata negative_format che puoi utilizzare per applicare questa formattazione a un campo:


constant: negative_format {
  value: "{% dynamic if value < 0 %}
            <p style='color:red;'>({{rendered_value}})</p>
          {% dynamic else %}
            {{rendered_value}}
          {% dynamic endif %}"
}

Questo codice crea la costante negative_format, che specifica che i valori dei dati negativi devono avere un carattere rosso ed essere racchiusi tra parentesi. Puoi quindi applicare questa formattazione alle dimensioni e alle misure nel set di dati utilizzando il parametro html.

Ad esempio, puoi creare la misura dell'importo totale per type: sum e specificare @{negative_format} come valore per il parametro html:


measure: total_amount {
  type: sum
  value_format_name: usd
  sql: ${amount} ;;
  html: @{negative_format} ;;
}

Nella tabella, i valori negativi per la misura Importo totale verranno formattati come specificato nella definizione della costante negative_format, con un carattere rosso e racchiuso tra parentesi.

Se vuoi applicare la stessa formattazione ai valori negativi di altri campi, puoi fare riferimento alla costante negative_format nel parametro html per questi campi.