Warum werden die Felder mit der Division mit 0 angezeigt?

In bestimmten Dialekten, einschließlich Postgres und Redshift, wird bei einer Berechnung zwischen Ganzzahlen (z. B. Division der Anzahl) eine Ganzzahl zurückgegeben, auch wenn das Ergebnis in der normalen Mathematik eine Dezimalzahl wäre. Sie können beispielsweise folgende Maßnahmen ergreifen:

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

Wenn Sie die Messwerte jedoch in einem Explore ausführen, gibt die Spalte Verkauftes Verhältnis 0 zurück, und die Dezimalstellen der Spalte Verkaufter Prozentsatz werden nicht ausgefüllt. Das ist nicht richtig:

Verkaufte Inventarartikel (%) Verhältnis verkaufter Inventarelemente Anzahl der Inventargegenstände Anzahl der verkauften Inventarartikel
48.00 0 1,165,224 560,223

Die Lösung: Feld in eine Gleitkommazahl umwandeln

Wenn die Berechnung mit einer Zahl multipliziert wird, die keine ganze Zahl ist, werden die Werte in Gleitkommazahlen umgewandelt und Dezimalzahlen werden wie erwartet zurückgegeben. Sie können den Zähler mit einer Dezimalzahl (z.B.1,0 oder 100,0) multiplizieren, um SQL zu zwingen, ein Dezimalergebnis zurückzugeben:

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

In der resultierenden Explore-Datentabelle werden jetzt die erwarteten Ergebnisse angezeigt:

Verkaufte Inventarartikel (%) Verhältnis verkaufter Inventarelemente Anzahl der Inventargegenstände Anzahl der verkauften Inventarartikel
48.08 0.48 1,165,224 560,223