Zum Inhalt springen

Eine PlaidCloud-Funktion, die auf jeder Lakehouse-Engine verfügbar ist. Dividiert die erste Zahl durch die zweite. Ist der Nenner null oder eine der beiden Seiten NULL, ist das Ergebnis NULL, sofern kein dritter Wert angegeben wird. In diesem Fall wird stattdessen dieser Wert zurückgegeben. Beide Seiten werden zuvor in DECIMAL(38, 10) umgewandelt, sodass Ganzzahlspalten ohne Abschneiden dividiert werden.

func.safe_divide(<numerator>, <denominator>, <divide_by_zero_value>)
func.safe_divide(<numerator>, <denominator>)
func.safe_divide(table.revenue, table.units, 0)
| revenue | units | safe_divide |
|---------|-------|-------------|
| 100 | 8 | 12.5 |
| 100 | 0 | 0 |
| 100 | NULL | 0 |
func.safe_divide(table.revenue, table.units, None)
| revenue | units | safe_divide |
|---------|-------|-------------|
| 100 | 8 | 12.5 |
| 100 | 0 | NULL |

Es gibt keine SQL-Funktion mit diesem Namen. Der Ausdruck wird wie folgt kompiliert:

COALESCE(CAST(<numerator> AS DECIMAL(38, 10)) / NULLIF(CAST(<denominator> AS DECIMAL(38, 10)), 0), <divide_by_zero_value>)

Ohne das dritte Argument entfällt COALESCE, und ein Nenner von null ergibt NULL:

CAST(<numerator> AS DECIMAL(38, 10)) / NULLIF(CAST(<denominator> AS DECIMAL(38, 10)), 0)