为什么我的除数显示为 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" }

不过,当您在探索中运行这些指标时,售出比例列会返回零,售出百分比列不会填充小数位。回答错误:

已售商品数占比 库存项目售出比率 商品目录项数 已售商品目录项数
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