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 |