Warum werden meine Felder mit Division als „0“ angezeigt?

In bestimmten Dialekten, einschließlich Postgres und Redshift, wird bei einer Berechnung zwischen Ganzzahlen (z. B. Divisionen) 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 explorativen Datenanalysetool ausführen, wird in der Spalte Verkauftes Verhältnis der Wert „0“ zurückgegeben und die Dezimalstellen der Spalte Prozentsatz der verkauften Artikel sind nicht ausgefüllt. Falsch:

Verkaufte Inventargegenstände (%) Verhältnis der verkauften Inventargegenstände Anzahl der Inventarelemente Anzahl der verkauften Inventargegenstände
48,00 0 1.165.224 560.223

Die Lösung: Feld in eine Gleitkommazahl umwandeln

Wenn die Berechnung mit einer nicht ganzzahligen Zahl multipliziert wird, werden die Werte als Gleitkommazahlen gewandelt und Dezimalzahlen werden wie erwartet zurückgegeben. Sie können den Nenner mit einer Dezimalzahl multiplizieren (z. B. 1,0 oder 100,0), 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-Tabelle Daten werden jetzt die erwarteten Ergebnisse angezeigt:

Verkaufte Inventargegenstände (%) Verhältnis der verkauften Inventargegenstände Anzahl der Inventarelemente Anzahl der verkauften Inventargegenstände
48,08 0,48 1.165.224 560.223