Bei bestimmten Dialekten, einschließlich Postgres und Redshift, wird bei einer Berechnung zwischen Ganzzahlen (z. B. bei der Division von Zählwerten) eine Ganzzahl zurückgegeben, auch wenn das Ergebnis bei normaler Mathematik ein Dezimalbruch 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. Das ist nicht richtig:
Prozentsatz der verkauften Inventarelemente | Verhältnis der verkauften Inventarelemente | Anzahl der Inventarelemente | Anzahl der verkauften Inventarelemente |
---|---|---|---|
48,00 | 0 | 1.165.224 | 560.223 |
Lösung: Feld als 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 Tabelle Daten des explorativen Datenanalysetools werden jetzt die erwarteten Ergebnisse angezeigt:
Prozentsatz der verkauften Inventarelemente | Verhältnis der verkauften Inventarelemente | Anzahl der Inventarelemente | Anzahl der verkauften Inventarelemente |
---|---|---|---|
48.08 | 0,48 | 1.165.224 | 560.223 |