Perché i miei campi con la divisione vengono visualizzati come 0?

In alcuni dialetti, tra cui Postgres e Redshift, l'esecuzione di un calcolo tra numeri interi (ad esempio la divisione dei conteggi) restituirà un numero intero anche se il risultato sarebbe un numero decimale nella matematica normale. Ad esempio, puoi creare misure come le seguenti:

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" }

Tuttavia, quando esegui le misure in un'esplorazione, la colonna Rapporto di vendita restituisce zero e la colonna Percentuale di vendita non ha decimali. Non è corretto:

Percentuale di articoli di inventario venduti Rapporto articoli inventariati venduti Conteggio articoli inventario Conteggio articoli inventariati venduti
48,00 0 1.165.224 560.223

La soluzione: trasmetti il campo come numero in virgola mobile

Se il calcolo viene moltiplicato per un valore non intero, i valori verranno convertiti in valori float e i decimali verranno restituiti come previsto. Puoi moltiplicare il numeratore per un numero decimale (ad esempio 1,0 o 100,0) per forzare SQL a restituire un risultato decimale:

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" }

La tabella Dati dell'esplorazione risultante ora mostra i risultati previsti:

Percentuale di articoli di inventario venduti Rapporto articoli inventariati venduti Conteggio articoli inventario Conteggio articoli inventariati venduti
48,08 0,48 1.165.224 560.223