Skip to content

stack(n, expr1, ..., exprN)

Описание

Функция stack() разделяет строку на несколько строк, используя указанные выражения.

Параметры

  • n: Integer - количество строк для создания
  • expr1, ..., exprN: Column - выражения для каждой строки

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

Array[Row] - массив строк с результатами выражений

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

from pyspark.sql.functions import stack, lit
from pyspark.sql import SparkSession

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

# Создаем DataFrame с данными
data = [("John", 25), ("Alice", 30)]
df = spark.createDataFrame(data, ["name", "age"])

# Разделяем каждую строку на две строки с разными значениями
result = df.select(
    stack(2, 
          lit("Name"), col("name"),
          lit("Age"), col("age")
    ).alias("stacked")
).show()

# Результат:
# +--------+
# |stacked |
# +--------+
# |[Name, John]|
# |[Age, 25]   |
# |[Name, Alice]|
# |[Age, 30]   |
# +--------+

Примечания

  • Количество выражений должно быть кратно n
  • NULL значения обрабатываются как есть
  • Для работы с массивами используйте array()
  • Для объединения массивов используйте array_union()