Pourquoi mes champs avec division s'affichent-ils comme étant nuls ?

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