Codewiederverwendbarkeit mit DRY LookML maximieren: Felder einmal definieren, Substitutionsoperatoren überall verwenden

LookML-Felddefinitionen können sich im Laufe der Zeit ändern. Beispielsweise kann sich der Name einer Datenbankspalte ändern oder Sie müssen die Definition eines LookML-Felds aus anderen Gründen ändern.

Wenn Sie die Syntax {TABLE}.field_name verwenden, um direkt an mehreren Stellen auf eine Datenbankspalte zu verweisen, müssen Sie jeden Verweis manuell aktualisieren. Alle Felder, die auf diese Dimension verweisen, können beschädigt werden, wenn Sie vergessen, sie zu aktualisieren, und Looker zeigt einen Fehler an:

In Looker wird in der Liste der Felder der Fehler „Unbekannte Spalte „order_items.sale_price“ angezeigt.

Um Ihre LookML-Projekte effizienter und einfacher zu verwalten, können Sie Felder an einem Ort definieren und den Substitutionsoperator ($) verwenden, um auf diese Felder überall sonst zu verweisen.

Diese Seite enthält ein Beispiel für die Verwendung des Substitutionsoperators (mit der Syntax ${field_name}), um auf eine einzelne Dimension in den Definitionen mehrerer LookML-Felder zu verweisen.

Produkte

Vorbereitung

Beispiel: Auf die zugrunde liegende Datenbankspalte nur einmal auf eine Dimension verweisen

Definieren Sie eine Datenbanktabellenspalte in einem LookML-Projekt einmalig mit der Syntax ${TABLE}.field_name im Parameter sql der Dimension. Verweisen Sie dann an anderer Stelle im Projekt mit der Syntax ${field_name} oder ${view_name.field_name} auf die Dimension. Auf diese Weise können Sie die LookML-Definition der Datenbankspalte an einem Ort verwalten (der ursprünglichen ${TABLE}.field_name-Dimension), was hilfreich ist, wenn Sie an mehreren Stellen in Ihrem Projekt darauf verweisen müssen.

Beispielsweise können Sie die Syntax ${TABLE}.sale_price verwenden, um eine Basisdimension namens sale_price in einer Ansicht namens order_items zu definieren:


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

Wenn Sie andere Felder definieren, die auf die Dimension sale_price verweisen, können Sie die Syntax ${sale_price} in der Ansicht order_items oder die Syntax ${order_items.sale_price} verwenden, um in anderen Ansichten auf die Dimension sale_price zu verweisen.


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} ;;
}

Wenn sich in diesem Beispiel der Spaltenname für die Dimension „sale_price“ ändert, müssen Sie die Referenz ${TABLE}.sale_price in der Definition der Basisdimension sale_price nur einmal aktualisieren. Diese Änderung wird dann automatisch für die Felder profit, item_gross_margin und total_sale_price sowie alle anderen Felder übernommen, die auf die Dimension sale_price verweisen.