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 |