Przejdź do głównej zawartości

Funkcja PlaidCloud, dostępna w każdym silniku lakehouse. Dzieli pierwszą liczbę przez drugą. Gdy mianownik wynosi zero lub którakolwiek strona ma wartość NULL, wynikiem jest NULL, chyba że podano trzecią wartość, wtedy zwracana jest ta wartość. Obie strony są najpierw rzutowane na DECIMAL(38, 10), dzięki czemu kolumny całkowitoliczbowe dzielą się bez obcinania.

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 |

Funkcja SQL o tej nazwie nie istnieje. Wyrażenie jest kompilowane do:

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

Bez trzeciego argumentu nie ma funkcji COALESCE, a zerowy mianownik daje NULL:

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