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
from pyspark.sql import functions as sf
sf.array_insert(arr, pos, value)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Nome da coluna que contém uma matriz |
|
| 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). |
| 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
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 : Inserindo um valor em uma 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 : Inserindo um valor em uma posição maior que o tamanho da 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]|
+------------------------+
Exemplo 4 : Inserindo 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 : Inserindo um valor em uma 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|
+------------------------+