Pular para o conteúdo principal

inserção_de_array

Insere um item em uma matriz específica, em um índice de matriz especificado. Os índices dos arrays começam em 1, ou começam do final se o índice for negativo. Um índice acima do tamanho da matriz anexa elementos à matriz ou os insere no início, caso o índice seja negativo, com elementos 'null'.

Sintaxe

Python
from pyspark.sql import functions as sf

sf.array_insert(arr, pos, value)

Parâmetros

Parâmetro

Tipo

Descrição

arr

pyspark.sql.Column ou str

Nome da coluna que contém uma matriz

pos

pyspark.sql.Column, str ou int

Nome da coluna do tipo numérico que indica a posição de inserção (começando no índice 1; posições negativas começam no final da matriz).

value

Qualquer um

Um valor literal ou uma expressão de coluna.

Parâmetro

Tipo

Descrição

arr

pyspark.sql.Column ou str

Nome da coluna que contém uma matriz

pos

pyspark.sql.Column, str ou int

Nome da coluna do tipo numérico que indica a posição de inserção (começando no índice 1; posições negativas começam no final da matriz).

value

Qualquer um

Um valor literal ou uma expressão de coluna.

Devoluções

pyspark.sql.Column: uma matriz de valores, incluindo o novo valor especificado

Exemplos

Exemplo 1 : Inserindo um valor em uma posição específica

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

Exemplo 2 : Inserindo um valor em uma posição negativa

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

Exemplo 3 : Inserindo um valor em uma posição maior que o tamanho da matriz

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

Exemplo 4 : Inserindo um valor NULL

Python
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()
Output
+---------------------------+
|array_insert(data, 2, NULL)|
+---------------------------+
| [a, NULL, b, c]|
+---------------------------+

Exemplo 5 : Inserindo um valor em uma matriz NULL

Python
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()
Output
+------------------------+
|array_insert(data, 1, 5)|
+------------------------+
| NULL|
+------------------------+