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

En algunos dialectos, como Postgres y Redshift, al hacer un cálculo entre números enteros (como dividir recuentos), se devolverá un número entero aunque el resultado sea un decimal en las 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 ejecuta las medidas en una exploración, la columna Ratio de ventas devuelve cero y la columna Porcentaje de ventas no tiene decimales. Esto no es correcto:

Porcentaje de artículos del inventario vendidos Ratio de artículos de inventario vendidos Número de artículos de inventario Número de artículos del inventario vendidos
48,00 0 1.165.224 560.223

Solución: convierte el campo en un número de punto flotante

Si el cálculo se multiplica por un número no entero, los valores se convertirán en números de coma flotante y los decimales se devolverán como se espera. Puedes multiplicar el numerador por un número decimal (como 1.0 o 100.0) para obligar a SQL a devolver 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 Exploración resultante ahora muestra los resultados esperados:

Porcentaje de artículos del inventario vendidos Ratio de artículos de inventario vendidos Número de artículos de inventario Número de artículos del inventario vendidos
48,08 0,48 1.165.224 560.223