Wenn Sie komplexe Berechnungen in LookML definieren, kann es hilfreich sein, sie in Zwischenschritte mit einfacheren Berechnungen aufzuteilen. Wenn Sie Zwischenmesswerte erstellen, sind Ihre Berechnungen leichter lesbar, einfacher zu verwalten und weniger fehleranfällig, da Sie nur an einer Stelle dafür sorgen müssen, dass jede Zwischenberechnung korrekt ist.
Auf dieser Seite finden Sie ein Beispiel dafür, wie Sie Ihre Berechnungen in LookML übersichtlicher und pflegeleichter gestalten können, indem Sie Zwischenmesswerte definieren, um komplexe Berechnungen in kleinere, überschaubarere Schritte aufzuteilen.
Zutaten
- Der LookML-Parameter
measure
- Der Parameter
sql
eines Messwerts - Ein Maß für
type: sum
- Ein Maß für
type: number
- Der LookML-Parameter
hidden
(für Felder)
Vorbereitung
Beispiel: Eine komplexe Berechnung in Zwischenmesswerte unterteilen
Angenommen, Sie haben ein Unternehmen, das Produkte online verkauft, und möchten Messwerte für die Berechnung des Gesamtgewinns und der Dividenden für die Aktionäre definieren. Eine Möglichkeit dazu besteht darin, zwei Messwerte zu definieren: einen total_profit
- und einen shareholder_dividends
-Messwert. Das geht so:
measure: total_profit {
type: number
sql: SUM(${orders.sale_price}) - SUM(${employees.salary}) - SUM(${products.cost}) ;;
}
measure: shareholder_dividends
description: "We give shareholders 60% of our total profits."
type: number
sql: 0.6 * (SUM(${orders.sale_price}) - SUM(${employees.salary}) - SUM(${products.cost})) ;;
In diesem Beispiel wird die Berechnung SUM(${orders.sale_price}) - SUM(${employees.salary}) - SUM(${products.cost})
im Parameter sql
für beide Messwerte wiederverwendet. Wenn Sie die Definition dieser Berechnung aktualisieren müssen, z. B. um einen Fehler zu korrigieren, müssen Sie die Berechnung für beide Messwerte manuell aktualisieren.
Sie können die Wartung dieser Messwertdefinitionen vereinfachen, indem Sie den Messwert total_profit
in der Berechnung des Messwerts shareholder_dividends
wiederverwenden:
measure: total_profit {
type: number
sql: SUM(${orders.sale_price}) - SUM(${employees.salary}) - SUM(${products.cost}) ;;
}
measure: shareholder_dividends
description: "We give shareholders 60% of our total profits."
type: number
sql: 0.6 * ${total_profit} ;;
Sie können die Berechnung in total_profit
in noch einfachere Messwerte unterteilen, die in anderen Berechnungen wiederverwendet werden können. Sie können beispielsweise Messwerte für type: sum
mit den Namen total_sales
, total_revenue
, total_cost
und total_salary
erstellen:
measure: total_sales {
hidden: yes
type: sum
sql: ${orders.sale_price} ;;
}
measure: total_revenue {
hidden: yes
type: number
sql: ${total_sales} ;;
}
measure: total_cost {
hidden: yes
type: sum
sql: ${products.cost} ;;
}
measure: total_salary {
hidden: yes
type: sum
sql: ${employees.salary} ;;
}
Sie können die von Ihnen definierten Zwischenfelder dann so wiederverwenden:
measure: total_expenses {
type: number
sql: ${total_cost} + ${total_salary} ;;
}
measure: total_profit {
type: number
sql: ${total_revenue} - ${total_expenses} ;;
}
measure: shareholder_dividends {
description: "We give shareholders 60% of our total profits."
type: number
sql: 0.6 * ${total_profit} ;;
}
Auch wenn Sie weitere Messwerte definiert haben, können diese Zwischenmesswerte in anderen Berechnungen wiederverwendet werden. Außerdem ist es einfacher, Fehler zu korrigieren oder Änderungen an Berechnungen vorzunehmen, die in mehreren Messwerten verwendet werden.