Quando definisci calcoli complessi in LookML, può essere utile suddividerli in passaggi intermedi che prevedono calcoli più semplici. Creando misure intermedie, rendi i tuoi calcoli più leggibili, più facili da gestire e meno soggetti a errori, poiché devi solo assicurarti che ogni calcolo intermedio sia corretto in un'unica posizione.
Questa pagina fornisce un esempio di come rendere i calcoli in LookML più leggibili e gestibili definendo misure intermedie per suddividere i calcoli complessi in passaggi più piccoli e più gestibili.
Ingredienti
- Parametro LookML
measure
- Il parametro
sql
di una misura - Una misura di
type: sum
- Una misura di
type: number
- Parametro LookML
hidden
(per i campi)
Prerequisiti
Esempio: suddividere un calcolo complesso in misure intermedie
Supponiamo che tu abbia una società che vende prodotti online e che tu voglia definire delle misure per calcolare il profitto totale e i dividendi degli azionisti. Un modo per farlo è definire due misure: una misura total_profit
e una misura shareholder_dividends
, come indicato di seguito:
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 questo esempio, il calcolo SUM(${orders.sale_price}) - SUM(${employees.salary}) - SUM(${products.cost})
viene riutilizzato nel parametro sql
per entrambe le misure. Se devi aggiornare la definizione di questo calcolo, ad esempio per correggere un errore, devi aggiornarlo manualmente per entrambe le misure.
Puoi semplificare la manutenzione di queste definizioni di misura riutilizzando la misura total_profit
nel calcolo nella misura shareholder_dividends
:
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} ;;
Puoi suddividere il calcolo in total_profit
in misure ancora più semplici che possono essere riutilizzate in altri calcoli. Ad esempio, puoi creare misure di type: sum
chiamate total_sales
, total_revenue
, total_cost
e total_salary
:
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} ;;
}
Puoi quindi riutilizzare i campi intermedi che hai definito come segue:
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} ;;
}
Sebbene siano state definite più misure, queste misure intermedie possono essere riutilizzate nell'ambito di altri calcoli ed è più facile correggere un errore o apportare modifiche ai calcoli utilizzati in più misure.