Em alguns dialetos, incluindo Postgres e Redshift, a realização de um cálculo entre números inteiros (como a divisão de contagens) retorna um número inteiro, mesmo que o resultado seja um decimal na matemática normal. Por exemplo, você pode fazer medidas como estas:
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 você executa as medidas em uma análise detalhada, a coluna Proporção vendida retorna zero, e a coluna Porcentagem vendida não tem casas decimais preenchidas. Isso não está correto:
Percentual de itens de inventário vendidos | Razão de itens de inventário vendidos | Contagem de itens de inventário | Contagem de itens de inventário vendidos |
---|---|---|---|
48,00 | 0 | 1.165.224 | 560.223 |
A solução: converta o campo em um número de ponto flutuante
Se o cálculo for multiplicado por um valor não inteiro, os valores serão convertidos em números flutuantes, e os valores decimais serão retornados conforme o esperado. Você pode multiplicar o numerador por um número decimal (como 1,0 ou 100,0) para forçar o SQL a retornar um resultado decimal:
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" }
A tabela Dados da Análise detalhada resultante agora mostra os resultados esperados:
Percentual de itens de inventário vendidos | Razão de itens de inventário vendidos | Contagem de itens de inventário | Contagem de itens de inventário vendidos |
---|---|---|---|
48,08 | 0,48 | 1.165.224 | 560.223 |