Partilhar via


array_insert

Insere um item em um array dado em um índice especificado do array. Os índices do array começam em 1, ou começam pelo final se o índice for negativo. Índice acima do tamanho do array acrescenta ao array, ou precede o array se o índice for negativo, com elementos 'nulos'.

Sintaxe

from pyspark.sql import functions as sf

sf.array_insert(arr, pos, value)

Parâmetros

Parâmetro Tipo Description
arr pyspark.sql.Column ou str Nome da coluna que contém um array
pos pyspark.sql.Column, string, ou inteiro Nome da coluna do tipo numérico indica a posição de inserção (começando no índice 1, a posição negativa é um início na parte de trás do array)
value Qualquer Um valor literal, ou uma expressão Coluna.

Devoluções

pyspark.sql.Column: um array de valores, incluindo o novo valor especificado

Examples

Exemplo 1: Inserir um valor numa posição 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]|
+------------------------+

Exemplo 2: Inserir um valor numa posição 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]|
+-------------------------+

Exemplo 3: Inserir um valor numa posição superior ao tamanho do array

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

Exemplo 4: Inserir um 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]|
+---------------------------+

Exemplo 5: Inserir um valor num array 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|
+------------------------+