array_insert

Belirtilen dizi dizininde belirli bir diziye öğe ekler. Dizi dizinleri 1'den başlar veya dizin negatifse sonundan başlar. Dizi boyutunun üzerindeki dizin diziyi ekler veya dizin negatifse dizinin başına 'null' öğeleri ekler.

Sözdizimi

from pyspark.sql import functions as sf

sf.array_insert(arr, pos, value)

Parametreler

Parametre Türü Description
arr pyspark.sql.Column veya str Dizi içeren sütunun adı
pos pyspark.sql.Column, str veya int Ekleme konumunu gösteren Sayısal tür sütununun adı (dizin 1'den başlayarak, negatif konum dizinin arkasından bir başlangıçtır)
value Herhangi biri Değişmez değer veya Sütun ifadesi.

İade

pyspark.sql.Column: yeni belirtilen değer de dahil olmak üzere bir değer dizisi

Örnekler

Örnek 1: Belirli bir konuma değer ekleme

from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, 2, 'd')).show()
+------------------------+
|array_insert(data, 2, d)|
+------------------------+
|            [a, d, b, c]|
+------------------------+

Örnek 2: Negatif konuma değer ekleme

from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, -2, 'd')).show()
+-------------------------+
|array_insert(data, -2, d)|
+-------------------------+
|             [a, b, d, c]|
+-------------------------+

Örnek 3: Dizi boyutundan daha büyük bir konuma değer ekleme

from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, 5, 'e')).show()
+------------------------+
|array_insert(data, 5, e)|
+------------------------+
|      [a, b, c, NULL, e]|
+------------------------+

Örnek 4: NULL değer ekleme

from pyspark.sql import functions as sf
df = spark.createDataFrame([(['a', 'b', 'c'],)], ['data'])
df.select(sf.array_insert(df.data, 2, sf.lit(None))).show()
+---------------------------+
|array_insert(data, 2, NULL)|
+---------------------------+
|            [a, NULL, b, c]|
+---------------------------+

Örnek 5: NULL dizisine değer ekleme

from pyspark.sql import functions as sf
from pyspark.sql.types import ArrayType, IntegerType, StructType, StructField
schema = StructType([StructField("data", ArrayType(IntegerType()), True)])
df = spark.createDataFrame([(None,)], schema=schema)
df.select(sf.array_insert(df.data, 1, 5)).show()
+------------------------+
|array_insert(data, 1, 5)|
+------------------------+
|                    NULL|
+------------------------+