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

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