為什麼我的除法欄位顯示為 0?

在某些方言 (包括 Postgres 和 Redshift) 中,在整數之間執行計算 (例如除以計數) 會傳回整數,即使在一般數學中結果會是小數也一樣。舉例來說,您可以建立下列指標:

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" }

不過,在 Explore 中執行評估時,「Sold Ratio」欄會傳回零,而「Sold Percent」欄則不會填入小數位數。這不是正確做法:

已售庫存商品百分比 已售商品目錄項目比率 商品目錄項目數量 已售商品目錄項目數
48.00 0 1,165,224 560,223

解決方案:將欄位轉換為浮點數

如果計算結果乘以非整數,則值會轉換為浮點值,並依預期傳回小數。您可以將分母乘以小數 (例如 1.0 或 100.0),強制 SQL 傳回小數結果:

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" }

產生的「探索」資料表格現在會顯示預期的結果:

已售庫存商品百分比 已售商品目錄項目比率 商品目錄項目數量 已售商品目錄項目數
48.08 0.48 1,165,224 560,223