Maximieren der Wiederverwendbarkeit von Code mit DRY LookML: Definieren wiederverwendbarer Maße für komplexe Berechnungen

Wenn Sie komplexe Berechnungen in LookML definieren, kann es hilfreich sein, diese in Zwischenschritte zu unterteilen, die einfachere Berechnungen beinhalten. Durch die Erstellung von Zwischenmesswerten werden Ihre Berechnungen lesbarer, einfacher zu pflegen und weniger fehleranfällig, da Sie nur sicherstellen 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 verwaltbar machen können, indem Sie Zwischenmaße definieren, um komplexe Berechnungen in kleinere, besser überschaubare Schritte aufzuteilen.

Produkte

Vorbereitung

Beispiel: Eine komplexe Berechnung in Zwischenmesswerte unterteilen

Angenommen, Sie haben ein Unternehmen, das Produkte online verkauft, und möchten Maßstäbe zur Berechnung des Gesamtgewinns und der Aktionärsdividenden festlegen. Eine Möglichkeit besteht darin, zwei Messwerte zu definieren: 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 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 Verwaltung dieser Messwertdefinitionen vereinfachen, indem Sie den Messwert total_profit in 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 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.