Dans certains dialectes, y compris Postgres et Redshift, effectuer un calcul entre des entiers (comme diviser des décomptes) renvoie un entier, même si le résultat serait un décimal en mathématiques normales. Par exemple, vous pouvez prendre les mesures suivantes:
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" }
Toutefois, lorsque vous exécutez les mesures dans une exploration, la colonne Ratio de vente renvoie zéro, et la colonne Pourcentage de vente n'a pas de décimales renseignées. Cette réponse n'est pas correcte:
Pourcentage d'articles vendus | Ratio des articles vendus dans l'inventaire | Nombre d'articles de l'inventaire | Nombre d'articles vendus |
---|---|---|---|
48.00 | 0 | 1 165 224 | 560 223 |
Solution: Convertissez votre champ en nombre à virgule flottante
Si le calcul est multiplié par un nombre non entier, les valeurs sont converties en nombres à virgule flottante, et les décimaux sont renvoyés comme prévu. Vous pouvez multiplier le numérateur par un nombre décimal (par exemple, 1,0 ou 100,0) pour forcer SQL à renvoyer un résultat décimal:
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 table Données de l'exploration affiche désormais les résultats attendus:
Pourcentage d'articles vendus | Ratio des articles vendus dans l'inventaire | Nombre d'articles de l'inventaire | Nombre d'articles vendus |
---|---|---|---|
48.08 | 0,48 | 1 165 224 | 560 223 |