Por que meus campos com a divisão estão aparecendo como 0?

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, é possível fazer 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 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. Incorreto:

Percentual de itens de inventário vendidos Razão de itens de inventário vendidos Contagem de itens do inventário Contagem de itens de inventário vendidos
48,00 0 1.165.224 560.223

A solução: converta seu campo como um número de ponto flutuante

Se o cálculo for multiplicado por um número não inteiro, os valores serão convertidos como flutuações e decimais serão retornados como 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:

Porcentagem de itens de inventário vendidos Razão de itens de inventário vendidos Contagem de itens do inventário Contagem de itens de inventário vendidos
48,08 0,48 1.165.224 560.223