Pourquoi mes champs avec division s'affichent-ils comme étant nuls ?
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
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:
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
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/31 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/31 (UTC)."],[],[],null,["# Why are my fields with division showing up as 0?\n\nIn certain dialects, including Postgres and Redshift, performing a calculation between integers (like dividing counts) will return an integer even if the result would be a decimal in normal math. For example, you might make measures like the following: \n\n```\nmeasure: sold_ratio {\n type: number\n sql: ${sold_count} / ${total_count} ;;\n value_format: \"0.00\" # Number with exactly 2 decimals (1.23)\n}\nmeasure: sold_percent {\n type: number\n sql: 100 * ${sold_count} / ${count} ;;\n value_format: \"0.00\"\n}\n```\n\n\nHowever, when you run the measures in an Explore, the **Sold Ratio** column returns zero, and the **Sold Percent** column does not have its decimal places populated. This is not correct:\n\n\u003cbr /\u003e\n\n\nThe solution: Cast your field as a floating-point number\n--------------------------------------------------------\n\n\nIf the calculation is multiplied by a non-integer, the values will cast as floats, and decimals will be returned as expected. You can multiply the numerator by a decimal number (like 1.0 or 100.0) to force SQL to return a decimal result: \n\n```\nmeasure: sold_ratio {\n type: number\n sql: 1.0 * ${sold_count} / ${total_count};;\n value_format: \"0.00\"\n}\nmeasure: sold_percent {\n type: Number\n sql: 100.0 * ${sold_count} / ${count};;\n value_format: \"0.00\"\n}\n```\n\n\nThe resulting Explore **Data** table now displays the expected results:\n\n\n\u003cbr /\u003e"]]