array_insert

array_insert(arr, pos, value)

array_insert - добавляет элемент в заданный массив в указанном индексе массива. Индексы массива начинаются с 1 или начинаются с конца, если индекс отрицательный.

Параметры
arr: Column or str. столбец содержащий массив
pos: Column or str. позиция
value: Column or str. новое значение
Возвращает
Column Массив значений, включая новое указанное значение

Пример


from pyspark.sql import SparkSession
from pyspark.sql.functions import  array_insert

# Создание сессии Spark
spark = SparkSession.builder.appName("array_insert_example").getOrCreate()

# Пример данных
data = [([1, 2, 3],), ([4, 5, 6, 7,1],), ([4, None, None, None],), ([],), (None,)]
df = spark.createDataFrame(data, ["values"])

# добавляение значения в  массив
df_with_array_insert= df.withColumn("array_insert", array_insert("values", lit(2), lit(100).cast('bigint')))

# Отображение результата
df_with_array_insert.show(truncate=False)

+---------------------+--------------------------+
|values               |array_insert              |
+---------------------+--------------------------+
|[1, 2, 3]            |[1, 100, 2, 3]            |
|[4, 5, 6, 7, 1]      |[4, 100, 5, 6, 7, 1]      |
|[4, NULL, NULL, NULL]|[4, 100, NULL, NULL, NULL]|
|[]                   |[NULL, 100]               |
|NULL                 |NULL                      |
+---------------------+--------------------------+

# array_insert пример с отрицательным индексом

from pyspark.sql import SparkSession
from pyspark.sql.functions import  array_insert

# Создание сессии Spark
spark = SparkSession.builder.appName("array_prepend_example").getOrCreate()

# Пример данных
data = [([1, 2, 3],), ([4, 5, 6, 7,1],), ([4, None, None, None],), ([],), (None,)]
df = spark.createDataFrame(data, ["values"])

# добавляение значения в  массив
df_with_array_size = df.withColumn("array_insert", array_insert("values", lit(-1), lit(100).cast('bigint')))

# Отображение результата
df_with_array_size.show(truncate=False)

+---------------------+--------------------------+
|values               |array_insert              |
+---------------------+--------------------------+
|[1, 2, 3]            |[1, 2, 3, 100]            |
|[4, 5, 6, 7, 1]      |[4, 5, 6, 7, 1, 100]      |
|[4, NULL, NULL, NULL]|[4, NULL, NULL, NULL, 100]|
|[]                   |[100]                     |
|NULL                 |NULL                      |
+---------------------+--------------------------+

pyspark array_insert

Добавлено в версии3.4.0.