Memaksimalkan penggunaan kembali kode dengan DRY LookML: Menentukan ukuran yang dapat digunakan kembali untuk kalkulasi yang kompleks

Saat menentukan penghitungan yang kompleks di LookML, sebaiknya bagi penghitungan tersebut menjadi beberapa langkah perantara yang melibatkan penghitungan yang lebih sederhana. Dengan membuat ukuran perantara, Anda membuat penghitungan lebih mudah dibaca, lebih mudah dikelola, dan lebih sedikit error, karena Anda hanya perlu memastikan bahwa setiap penghitungan perantara sudah benar di satu tempat.

Halaman ini memberikan contoh cara membuat penghitungan di LookML lebih mudah dibaca dan dikelola dengan menentukan ukuran perantara untuk membagi penghitungan yang kompleks menjadi langkah-langkah yang lebih kecil dan lebih mudah dikelola.

Produk

Prasyarat

Contoh: Memecah penghitungan yang kompleks menjadi ukuran perantara

Misalnya, Anda memiliki perusahaan yang menjual produk secara online, dan 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 perlu memperbarui definisi penghitungan ini, seperti untuk memperbaiki error, Anda harus memperbarui penghitungan secara manual untuk kedua ukuran tersebut.

Anda dapat membuat definisi ukuran 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} ;;

Sebaiknya bagi penghitungan di total_profit menjadi ukuran yang lebih sederhana 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} ;;
}

Anda kemudian 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, ukuran perantara ini dapat digunakan kembali dalam penghitungan lain, dan akan lebih mudah untuk memperbaiki kesalahan atau membuat perubahan pada penghitungan yang digunakan dalam beberapa ukuran.