Memaksimalkan penggunaan kembali kode dengan DRY LookML: Menentukan tindakan yang dapat digunakan kembali untuk penghitungan yang kompleks

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

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.