Por que motivo os meus campos com divisão estão a ser apresentados como 0?
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Em determinados dialetos, incluindo o Postgres e o Redshift, a realização de um cálculo entre números inteiros (como a divisão de contagens) devolve um número inteiro, mesmo que o resultado fosse um número decimal em matemática normal. Por exemplo, pode tomar medidas como as seguintes:
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"
}
No entanto, quando executa as medidas numa análise detalhada, a coluna Rácio de vendas devolve zero e a coluna Percentagem de vendas não tem as casas decimais preenchidas. Isto não está correto:
Percentagem de artigos do inventário vendidos
Rácio de artigos de inventário vendidos
Contagem de itens de inventário
Inventory Items Sold Count
48,00
0
1,165,224
560 223
A solução: converta o campo num número de vírgula flutuante
Se o cálculo for multiplicado por um número não inteiro, os valores são convertidos em números de vírgula flutuante e os decimais são devolvidos conforme esperado. Pode multiplicar o numerador por um número decimal (como 1,0 ou 100,0) para forçar o SQL a devolver um resultado decimal:
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-20 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"]]