SAFE_DIVIDE (Lakehouse v2)
Fonction PlaidCloud, disponible sur tous les moteurs lakehouse. Divise le premier nombre par le second. Lorsque le dénominateur est égal à zéro, ou que l’un des deux côtés est NULL, le résultat est NULL, sauf si une troisième valeur est fournie : dans ce cas, c’est cette valeur qui est renvoyée. Les deux côtés sont d’abord convertis en DECIMAL(38, 10), ce qui permet aux colonnes d’entiers de se diviser sans troncature.
Syntaxe Analyze
Section intitulée « Syntaxe Analyze »func.safe_divide(<numerator>, <denominator>, <divide_by_zero_value>)
func.safe_divide(<numerator>, <denominator>)Exemples Analyze
Section intitulée « Exemples Analyze »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 |Équivalent SQL
Section intitulée « Équivalent SQL »Il n’existe pas de fonction SQL de ce nom. L’expression est compilée en :
COALESCE(CAST(<numerator> AS DECIMAL(38, 10)) / NULLIF(CAST(<denominator> AS DECIMAL(38, 10)), 0), <divide_by_zero_value>)Sans le troisième argument, il n’y a pas de COALESCE, et un dénominateur égal à zéro donne NULL :
CAST(<numerator> AS DECIMAL(38, 10)) / NULLIF(CAST(<denominator> AS DECIMAL(38, 10)), 0)