Pourquoi mes champs avec division s'affichent-ils avec 0 ?

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