Ketika Anda mendefinisikan perhitungan yang kompleks di LookML, akan sangat membantu untuk memecahnya menjadi langkah-langkah menengah yang melibatkan kalkulasi yang lebih sederhana. Dengan membuat ukuran perantara, Anda membuat kalkulasi Anda lebih mudah dibaca, lebih mudah dikelola, dan tidak terlalu rentan terhadap error, karena Anda hanya perlu memastikan bahwa setiap penghitungan perantara sudah benar di satu tempat.
Halaman ini memberikan contoh bagaimana Anda dapat membuat perhitungan di LookML lebih mudah dibaca dan dikelola dengan menentukan tindakan menengah untuk memecah penghitungan yang kompleks menjadi langkah-langkah yang lebih kecil dan lebih mudah dikelola.
Produk
- Parameter
measure
LookML - Parameter
sql
pengukuran - Ukuran
type: sum
- Ukuran
type: number
- Parameter
hidden
LookML (untuk kolom)
Prasyarat
Contoh: Memecah penghitungan kompleks menjadi ukuran menengah
Misalkan Anda memiliki perusahaan yang menjual produk secara online, dan Anda ingin menentukan ukuran untuk menghitung total laba dan dividen pemegang saham. Salah satu cara untuk melakukannya adalah dengan menentukan dua ukuran: ukuran total_profit
dan ukuran shareholder_dividends
, sebagai berikut:
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})) ;;
Dalam contoh ini, penghitungan SUM(${orders.sale_price}) - SUM(${employees.salary}) - SUM(${products.cost})
digunakan kembali dalam parameter sql
untuk kedua ukuran. Jika Anda perlu memperbarui definisi penghitungan ini, seperti untuk memperbaiki kesalahan, Anda harus memperbarui penghitungan secara manual untuk kedua tindakan tersebut.
Anda dapat membuat definisi pengukuran ini lebih mudah dikelola dengan menggunakan kembali ukuran total_profit
dalam penghitungan di ukuran 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} ;;
Anda mungkin ingin membagi penghitungan dalam total_profit
menjadi ukuran yang lebih sederhana lagi yang dapat digunakan kembali dalam penghitungan lain. Misalnya, Anda dapat membuat ukuran type: sum
yang disebut total_sales
, total_revenue
, total_cost
, dan 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} ;;
}
Selanjutnya Anda dapat menggunakan kembali kolom perantara yang telah ditentukan sebagai berikut:
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} ;;
}
Meskipun Anda telah menentukan lebih banyak ukuran, langkah-langkah perantara ini dapat digunakan kembali dalam perhitungan lain, dan akan lebih mudah memperbaiki kesalahan atau membuat perubahan pada perhitungan yang digunakan dalam beberapa ukuran.