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

En algunos dialectos, incluidos Postgres y Redshift, realizar un cálculo entre números enteros (como dividir recuentos) mostrará un número entero incluso si el resultado fuera 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 ejecutas las mediciones en una exploración, la columna Sold Ratio muestra cero y la columna Sold Percent no tiene sus decimales propagados. Esto no es correcto:

Porcentaje de artículos del inventario vendidos Proporción de artículos vendidos del inventario Recuento de artículos del inventario Recuento de artículos vendidos del inventario
48,00 0 1.165.224 560.223

La solución es convertir el campo como 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" }

Ahora, la tabla resultante Data de Explorar muestra los resultados esperados:

Porcentaje de artículos del inventario vendidos Proporción de artículos vendidos del inventario Recuento de artículos del inventario Cantidad de artículos del inventario vendidos
48.08 0.48 1.165.224 560.223