Compartir vía


array_insert

Inserta un elemento en una matriz determinada en un índice de matriz especificado. Los índices de matriz comienzan en 1 o comienzan desde el final si el índice es negativo. El tamaño de la matriz anterior anexa la matriz o antepone la matriz si el índice es negativo, con elementos "null".

Syntax

from pyspark.sql import functions as sf

sf.array_insert(arr, pos, value)

Parámetros

Parámetro Tipo Description
arr pyspark.sql.Column o str Nombre de columna que contiene una matriz
pos pyspark.sql.Column, str o int Nombre de la columna Tipo numérico que indica la posición de inserción (a partir del índice 1, la posición negativa es un inicio desde la parte posterior de la matriz)
value Cualquiera Un valor literal o una expresión Column.

Devoluciones

pyspark.sql.Column: una matriz de valores, incluido el nuevo valor especificado.

Examples

Ejemplo 1: Inserción de un valor en una posición específica

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

Ejemplo 2: Inserción de un valor en una posición negativa

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

Ejemplo 3: Inserción de un valor en una posición mayor que el tamaño de la matriz

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

Ejemplo 4: Inserción de un valor 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]|
+---------------------------+

Ejemplo 5: Inserción de un valor en una matriz 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|
+------------------------+