Skip to content

transform(col, f)

Описание

Функция transform() возвращает массив элементов после применения преобразования к каждому элементу входного массива.

Параметры

  • col: Column - массив для преобразования
  • f: function - функция преобразования, которая принимает элемент массива и возвращает новое значение

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

Array - массив с преобразованными элементами

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

from pyspark.sql.functions import transform, array, lit, col

# Создаем DataFrame с массивами
df = spark.createDataFrame([
    ([1, 2, 3, 4],),
    (["a", "b", "c"],),
    (None,)
], ["array_col"])

# Преобразуем элементы массива
df.select(
    "array_col",
    transform("array_col", lambda x: x * 2).alias("doubled"),
    transform("array_col", lambda x: x.upper()).alias("uppercase")
).show(truncate=False)

# Результат:
# +------------+------------+----------+
# |array_col   |doubled     |uppercase |
# +------------+------------+----------+
# |[1, 2, 3, 4]|[2, 4, 6, 8]|null      |
# |[a, b, c]   |null        |[A, B, C] |
# |null        |null        |null      |
# +------------+------------+----------+

# Пример с разными типами данных
df = spark.createDataFrame([
    ([1.0, 2.0, 3.0],),
    ([True, False],),
    ([None, 1],)
], ["values"])

df.select(
    "values",
    transform("values", lambda x: x * 2).alias("doubled"),
    transform("values", lambda x: not x).alias("negated")
).show(truncate=False)

Примечания

  • Если массив NULL, возвращается NULL
  • Функция преобразования должна возвращать значение того же типа
  • Для фильтрации массива используйте filter()
  • Для проверки условий используйте exists() или forall()
  • Для создания массива используйте array()