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] 列には小数点以下の桁が入力されません。不正解です。
| インベントリ アイテムの Sold Percent | 在庫項目の Sold Ratio | 広告枠アイテム数 | インベントリ アイテムの販売数 |
|---|---|---|---|
| 48.00 | 0 | 1,165,224 | 560,223 |
解決策: フィールドを浮動小数点数としてキャストする
計算に整数以外の値を掛けると、値は浮動小数点数としてキャストされ、小数点以下が想定どおりに返されます。分子に 10 進数(1.0、100.0 など)を乗算すると、SQL は強制的に 10 進数の結果を返します。
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"
}
結果の Explore データテーブルに、期待される結果が表示されます。
| インベントリ アイテムの Sold Percent | 在庫項目の Sold Ratio | 広告枠アイテム数 | インベントリ アイテムの販売数 |
|---|---|---|---|
| 48.08 | 0.48 | 1,165,224 | 560,223 |