Ir al contenido

Una función de PlaidCloud, disponible en todos los motores de lakehouse. Divide el primer número entre el segundo. Cuando el denominador es cero, o cualquiera de los dos lados es NULL, el resultado es NULL, a menos que se indique un tercer valor; en ese caso, se devuelve dicho valor. Ambos lados se convierten primero a DECIMAL(38, 10), de modo que las columnas de enteros se dividen sin truncamiento.

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 |

No existe ninguna función SQL con este nombre. La expresión se compila como:

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

Sin el tercer argumento no hay COALESCE, y un denominador igual a cero da como resultado NULL:

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