Partager via


array_insert

Insère un élément dans un tableau donné à un index de tableau spécifié. Les index de tableau commencent à 1 ou commencent à partir de la fin si l’index est négatif. L’index au-dessus de la taille du tableau ajoute le tableau ou précède le tableau si l’index est négatif, avec des éléments « null ».

Syntaxe

from pyspark.sql import functions as sf

sf.array_insert(arr, pos, value)

Paramètres

Paramètre Type Descriptif
arr pyspark.sql.Column ou str Nom de colonne contenant un tableau
pos pyspark.sql.Column, str ou int Nom de la colonne de type numérique indiquant la position d’insertion (à partir de l’index 1, la position négative est un début à partir de l’arrière du tableau)
value N'importe lequel Valeur littérale ou expression column.

Retours

pyspark.sql.Column: tableau de valeurs, y compris la nouvelle valeur spécifiée

Examples

Exemple 1 : Insertion d’une valeur à une position spécifique

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

Exemple 2 : Insertion d’une valeur à une position négative

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

Exemple 3 : Insertion d’une valeur à une position supérieure à la taille du tableau

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

Exemple 4 : Insertion d’une valeur NULL

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

Exemple 5 : Insertion d’une valeur dans un tableau NULL

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