在某些方言(包括 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" }
不过,当您在探索中运行这些指标时,售出比例列会返回零,售出百分比列不会填充小数位。回答错误:
已售商品数占比 | 库存项目售出比率 | 商品目录项数 | 已售商品目录项数 |
---|---|---|---|
48.00 | 0 | 1,165,224,000 | 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,000 | 560,223,000 |