Skip to content

try_divide()

Описание

Функция try_divide() безопасно делит одно число на другое. Если происходит деление на ноль, переполнение или другие ошибки, возвращает NULL вместо исключения.

Параметры

  • col1: Column - делимое
  • col2: Column - делитель

Возвращаемое значение

Column - результат деления или NULL в случае ошибки

Пример использования

from pyspark.sql import SparkSession
from pyspark.sql.functions import try_divide, col, lit

# Создаем SparkSession
spark = SparkSession.builder.appName("try_divide_example").getOrCreate()

# Создаем DataFrame с числами
data = [
    (10, 2),
    (10, 0),  # Деление на ноль
    (None, 5),
    (10, None),
    (2147483647, 0.1)  # Переполнение
]
df = spark.createDataFrame(data, ["num1", "num2"])

# Безопасно делим числа
result = df.select(
    "num1",
    "num2",
    try_divide(col("num1"), col("num2")).alias("division")
).show()

# Результат:
# +----------+----+---------+
# |      num1|num2|division |
# +----------+----+---------+
# |        10|   2|      5.0|
# |        10|   0|     NULL|
# |      NULL|   5|     NULL|
# |        10|NULL|     NULL|
# |2147483647| 0.1|     NULL|
# +----------+----+---------+

Примечания

  • Функция безопасно обрабатывает деление на ноль
  • Возвращает NULL, если хотя бы один из аргументов NULL
  • Для обычного деления используйте оператор / или функцию divide()
  • Для других безопасных операций используйте try_add(), try_subtract(), try_multiply()