LookML에서 복잡한 계산을 정의할 때는 간단한 계산을 포함한 중간 단계로 나누는 것이 유용할 수 있습니다. 중간 측정값을 만들면 각 중간 계산이 한 곳에서 올바르지만 확인하면 되므로 가독성이 우수하고 유지하기가 쉽고 오류가 발생하기 어려운 계산을 만들 수 있습니다.
이 페이지에서는 복잡한 계산을 더 작고 관리하기 쉬운 단계로 나누기 위한 중간 측정을 정의하여 LookML에서 가독성과 유지보수가 우수한 계산을 만드는 방법에 대한 예시를 제공합니다.
재료
- LookML
measure
매개변수 - 측정의
sql
매개변수 type: sum
측정type: number
측정- LookML
hidden
매개변수(필드용)
기본 요건
예시: 복잡한 계산을 중간 측정으로 나누기
온라인에서 제품을 판매하는 회사가 있고 총수익과 주주 배당금을 계산하기 위한 측정을 정의한다고 가정해 보겠습니다. 이를 수행할 수 있는 방법 중 하나는 다음과 같이 total_profit
측정 및 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 * (SUM(${orders.sale_price}) - SUM(${employees.salary}) - SUM(${products.cost})) ;;
이 예시에서는 SUM(${orders.sale_price}) - SUM(${employees.salary}) - SUM(${products.cost})
계산은 두 측정 모두에 대한 sql
매개변수에서 재사용됩니다. 오류 수정과 같이 이 계산의 정의를 업데이트해야 하는 경우 두 측정 모두에 대해 계산을 수동으로 업데이트해야 합니다.
shareholder_dividends
측정의 계산 내에서 total_profit
측정을 재사용하면 이러한 측정 정의를 더 쉽게 유지할 수 있습니다.
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} ;;
total_profit
의 계산을 다른 계산에서 재사용할 수 있는 보다 간단한 측정으로 나눌 수 있습니다. 예를 들어 total_sales
, total_revenue
, total_cost
, total_salary
라는 type: sum
측정을 만들 수 있습니다.
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} ;;
}
그런 다음 다음과 같이 정의한 중간 필드를 재사용할 수 있습니다.
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} ;;
}
더 많은 측정을 정의했더라도 다른 계산 내에서 이러한 중간 측정을 재사용할 수 있으며 이를 통해 보다 쉽게 실수를 교정하거나 여러 측정에서 사용되는 계산을 변경할 수 있습니다.