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

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