Freigeben über


array_insert

Fügt ein Element in ein bestimmtes Array bei einem angegebenen Arrayindex ein. Arrayindizes beginnen bei 1 oder beginnen am Ende, wenn index negativ ist. Index oberhalb der Arraygröße fügt das Array an oder stellt das Array vor, wenn Index negativ ist, mit "null"-Elementen.

Syntax

from pyspark.sql import functions as sf

sf.array_insert(arr, pos, value)

Die Parameter

Parameter Typ Description
arr pyspark.sql.Column oder str Name der Spalte, die ein Array enthält
pos pyspark.sql.Column, str oder int Name der Spalte vom numerischen Typ, die die Einfügeposition angibt (beginnend bei Index 1, negative Position ist ein Anfang von der Rückseite des Arrays)
value Beliebig Ein Literalwert oder ein Column-Ausdruck.

Rückkehr

pyspark.sql.Column: ein Array von Werten, einschließlich des neuen angegebenen Werts

Examples

Beispiel 1: Einfügen eines Werts an einer bestimmten Position

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]|
+------------------------+

Beispiel 2: Einfügen eines Werts an einer negativen Position

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]|
+-------------------------+

Beispiel 3: Einfügen eines Werts an einer Position größer als die Arraygröße

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]|
+------------------------+

Beispiel 4: Einfügen eines NULL-Werts

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]|
+---------------------------+

Beispiel 5: Einfügen eines Werts in ein NULL-Array

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|
+------------------------+