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, potresti adottare misure simili alle 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 venduto restituisce zero e la colonna Percentuale venduta non presenta posizioni decimali. Risposta errata:

Percentuale di articoli di inventario venduti Rapporto articoli inventariati venduti Conteggio articoli inventario Numero di elementi venduti dell'inventario
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 numero non intero, i valori verranno trasmessi come numeri in virgola mobile e i decimali verranno restituiti come previsto. Puoi moltiplicare il numeratore per un numero decimale (come 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 di esplorazione risultante ora mostra i risultati previsti:

Percentuale di articoli di inventario venduti Rapporto articoli inventariati venduti Conteggio articoli inventario Numero di elementi venduti dell'inventario
48,08 0,48 1.165.224 560.223