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 |