Dalam dialek tertentu, termasuk Postgres dan Redshift, melakukan penghitungan di antara bilangan bulat (seperti jumlah pembagian) akan mengembalikan bilangan bulat meskipun hasilnya adalah desimal dalam matematika normal. Misalnya, Anda dapat melakukan tindakan seperti berikut:
measure: sold_ratio { type: number sql: ${sold_count} / ${total_count} ;; value_format: "0.00" # Number with exactly 2 decimals (1.23) } measure: sold_percent { type: number sql: 100 * ${sold_count} / ${count} ;; value_format: "0.00" }
Namun, saat Anda menjalankan pengukuran di Explore, kolom Sold Ratio menampilkan nol, dan tidak ada tempat desimal di kolom Sold Percent. Jawaban ini salah:
Persentase Item Inventaris yang Terjual | Rasio Item Inventaris Terjual | Jumlah Item Inventaris | Jumlah Item Inventaris yang Terjual |
---|---|---|---|
48.00 | 0 | 1,165,224 | 560,223 |
Solusi: Transmisikan kolom Anda sebagai angka floating point
Jika penghitungan dikalikan dengan bilangan bulat, nilai akan ditransmisikan sebagai float, dan desimal akan ditampilkan seperti yang diharapkan. Anda dapat mengalikan pembilang dengan angka desimal (seperti 1.0 atau 100.0) untuk memaksa SQL mengembalikan hasil desimal:
measure: sold_ratio { type: number sql: 1.0 * ${sold_count} / ${total_count};; value_format: "0.00" } measure: sold_percent { type: Number sql: 100.0 * ${sold_count} / ${count};; value_format: "0.00" }
Tabel Data Jelajahi yang dihasilkan kini menampilkan hasil yang diharapkan:
Persentase Item Inventaris yang Terjual | Rasio Item Inventaris Terjual | Jumlah Item Inventaris | Jumlah Item Inventaris yang Terjual |
---|---|---|---|
48.08 | 0.48 | 1,165,224 | 560,223 |