Wenn Sie komplexe Berechnungen in LookML definieren, kann es hilfreich sein, diese in Zwischenschritte mit einfacheren Berechnungen aufzuteilen. Durch das Erstellen von Zwischenmesswerten gestalten Sie Ihre Berechnungen besser lesbar, einfacher zu pflegen und weniger fehleranfällig, da Sie dafür sorgen müssen, dass jede Zwischenberechnung an einer Stelle korrekt ist.
Auf dieser Seite finden Sie ein Beispiel dafür, wie Sie Ihre Berechnungen in LookML besser lesbar und wartbar machen können, indem Sie Zwischenmesswerte definieren, um komplexe Berechnungen in kleinere, besser überschaubare Schritte aufzuteilen.
Produkte
- Der LookML-Parameter
measure
- Der
sql
-Parameter eines Messwerts - Ein Maß von
type: sum
- Ein Maß von
type: number
- Der LookML-Parameter
hidden
(für Felder)
Vorbereitung
Beispiel: Eine komplexe Berechnung in Zwischenmesswerte aufteilen
Angenommen, Sie haben ein Unternehmen, das Produkte online verkauft, und Sie möchten Messwerte definieren, um den Gesamtgewinn und die Aktionärdividenden zu berechnen. Eine Möglichkeit dafür wäre die Definition von zwei Messungen: einen total_profit
-Messwert und einen shareholder_dividends
-Messwert:
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 Berechnungsform 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, um beispielsweise einen Fehler zu beheben, müssen Sie die Berechnung für beide Messwerte manuell aktualisieren.
Sie können die Verwaltung dieser Messwertdefinitionen vereinfachen, indem Sie den Messwert total_profit
innerhalb der Berechnung im Messwert 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 aufteilen, die in anderen Berechnungen wiederverwendet werden können. Sie können beispielsweise Messwerte von 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 Zwischenfelder, die Sie definiert haben, dann wie folgt 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} ;;
}
Obwohl Sie weitere Messwerte definiert haben, können diese Zwischenmesswerte in anderen Berechnungen wiederverwendet werden und es ist einfacher, Fehler zu korrigieren oder Änderungen an Berechnungen vorzunehmen, die in mehreren Messwerten verwendet werden.