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 mit der Syntax {TABLE}.field_name
an mehreren Stellen direkt auf eine Datenbankspalte verweisen, müssen Sie jede Referenz manuell aktualisieren. Wenn Sie Felder, die auf diese Dimension verweisen, nicht aktualisieren, kann es zu Fehlern kommen. In Looker wird dann ein Fehler angezeigt:
Damit Ihre LookML-Projekte effizienter und einfacher zu verwalten sind, können Sie Felder an einer Stelle definieren und mit dem Ersetzungsoperator ($
) an anderer Stelle auf diese Felder verweisen.
Auf dieser Seite finden Sie ein Beispiel für die Verwendung des Substitutionsoperators (mit der Syntax ${field_name}
), um in den Definitionen mehrerer LookML-Felder auf eine einzelne Dimension zu verweisen.
Zutaten
- Substitutionsoperatoren
- Der LookML-Parameter
dimension
- Der LookML-Parameter
sql
- Der LookML-Parameter
sql_table_name
Vorbereitung
Beispiel: Nur einmal auf die zugrunde liegende Datenbankspalte für eine Dimension verweisen
Definieren Sie eine Datenbanktabellenspalte in einem LookML-Projekt einmal mit der Syntax ${TABLE}.field_name
im Parameter sql
der Dimension. Verweisen Sie dann an anderer Stelle in Ihrem Projekt mit der Syntax ${field_name}
oder ${view_name.field_name}
auf die Dimension. So können Sie die LookML-Definition der Datenbankspalte an einer Stelle (der ursprünglichen ${TABLE}.field_name
-Dimension) verwalten. Das ist hilfreich, wenn Sie an mehreren Stellen in Ihrem Projekt darauf verweisen müssen.
Mit der Syntax ${TABLE}.sale_price
können Sie beispielsweise eine Basisdimension namens sale_price
in einer Ansicht namens order_items
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 in der Ansicht order_items
die Syntax ${sale_price}
verwenden. In anderen Ansichten können Sie die Syntax ${order_items.sale_price}
verwenden, um 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 ${TABLE}.sale_price
-Referenz nur einmal in der Definition der Basisdimension sale_price
aktualisieren. Diese Änderung wird dann automatisch auf die Felder profit
, item_gross_margin
und total_sale_price
sowie auf alle anderen Felder übertragen, die auf die Dimension sale_price
verweisen.