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 |