¿Por qué mis campos con división aparecen como 0?

En ciertos dialectos, como Postgres y Redshift, realizar un cálculo entre números enteros (como dividir recuentos) mostrará un número entero, incluso si el resultado sería un decimal en matemáticas normales. Por ejemplo, puedes tomar medidas como las siguientes:

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

Sin embargo, cuando ejecutas las medidas en una exploración, la columna Porcentaje vendido muestra cero, y la columna Porcentaje vendido no tiene sus decimales propagados. Esto no es correcto:

Porcentaje de artículos del inventario vendidos Porcentaje de artículos del inventario vendidos Recuento de artículos del inventario Cantidad de artículos del inventario vendidos
48.00 0 1,165,224 560,223

La solución: Convierte tu campo en un número de punto flotante

Si el cálculo se multiplica por un número que no es un número entero, los valores se convertirán en números de punto flotante y se mostrarán los decimales como se espera. Puedes multiplicar el numerador por un número decimal (como 1.0 o 100.0) para forzar a SQL a mostrar un resultado decimal:

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

La tabla Datos de Explorar resultante ahora muestra los resultados esperados:

Porcentaje de artículos del inventario vendidos Porcentaje de artículos del inventario vendidos Recuento de artículos del inventario Cantidad de artículos del inventario vendidos
48.08 0.48 1,165,224 560,223