Dans certains dialectes, notamment Postgres et Redshift, l'exécution d'un calcul entre des entiers (comme la division des nombres) renverra un nombre entier, même si le résultat serait un nombre décimal en calcul normal. 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 Sold Ratio (Taux de vente) renvoie zéro et les décimales de la colonne Sold Percent (Pourcentage de vente) ne sont pas renseignées. Cette réponse n'est pas correcte :
Pourcentage d'articles vendus | Ratio d'éléments d'inventaire vendus | Nombre d'articles de l'inventaire | Nombre d'éléments de l'inventaire vendus |
---|---|---|---|
48.00 | 0 | 1 165 224 | 560 223 |
Solution: convertir votre champ en nombre à virgule flottante
Si le calcul est multiplié par un nombre non entier, les valeurs sont converties en flottants et les nombres 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 Data d'exploration obtenue affiche maintenant les résultats attendus:
Pourcentage d'éléments de l'inventaire vendus | Ratio d'éléments d'inventaire vendus | Nombre d'articles de l'inventaire | Nombre d'éléments de l'inventaire vendus |
---|---|---|---|
48,08 | 0,48 | 1 165 224 | 560 223 |