Por que motivo os meus campos com divisão estão a ser apresentados como 0?

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:

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 apresenta agora os resultados esperados:

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,08 0,48 1,165,224 560 223