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()