array_insert

Vloží položku do daného pole v zadaném indexu pole. Maticové indexy začínají na 1 nebo začínají od konce, pokud je index záporný. Index nad velikostí pole připojí matici nebo předpendá pole, pokud je index záporný, s elementy null.

Syntaxe

from pyspark.sql import functions as sf

sf.array_insert(arr, pos, value)

Parametry

Parameter Typ Description
arr pyspark.sql.Column nebo str Název sloupce obsahujícího pole
pos pyspark.sql.Column, str nebo int Název sloupce číselného typu označující pozici vložení (počínaje indexem 1, záporná pozice je začátek od zadní části pole).
value Jakýkoliv Hodnota literálu nebo výraz column

Návraty

pyspark.sql.Column: matice hodnot, včetně nové zadané hodnoty

Examples

Příklad 1: Vložení hodnoty na konkrétní pozici

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

Příklad 2: Vložení hodnoty na záporné pozici

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

Příklad 3: Vložení hodnoty na pozici větší než velikost pole

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

Příklad 4: Vložení hodnoty 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]|
+---------------------------+

Příklad 5: Vložení hodnoty do pole 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|
+------------------------+