Dans certains dialectes, y compris Postgres et Redshift, effectuer un calcul entre des nombres entiers (comme la division d'un nombre) renverra un nombre entier, même si le résultat serait un nombre décimal en mathématiques normales. Par exemple, vous pouvez appliquer 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 les décimales de la colonne Pourcentage de vente ne sont pas renseignées. Mauvaise réponse:
Pourcentage d'éléments vendus dans l'inventaire | Ratio d'éléments d'inventaire vendus | Nombre d'éléments de l'inventaire | Nombre d'éléments vendus dans l'inventaire |
---|---|---|---|
48.00 | 0 | 1,165,224 | 560,223 |
La solution: convertir votre champ en nombre à virgule flottante
Si le calcul est multiplié par un nombre non entier, les valeurs sont exprimées sous forme de nombres à virgule flottante, et des nombres décimaux sont renvoyés comme prévu. Vous pouvez multiplier le numérateur par un nombre décimal (comme 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 d'exploration de données obtenue affiche maintenant les résultats attendus:
Pourcentage d'éléments vendus dans l'inventaire | Ratio d'éléments d'inventaire vendus | Nombre d'éléments de l'inventaire | Nombre d'éléments vendus dans l'inventaire |
---|---|---|---|
48.08 | 0.48 | 1,165,224 | 560,223 |