지정된 배열 인덱스의 지정된 배열에 항목을 삽입합니다. 배열 인덱스는 1에서 시작하거나 인덱스가 음수이면 끝에서 시작합니다. 배열 크기 위의 인덱스는 배열을 추가하거나 인덱스가 음수이면 배열 앞에 'null' 요소를 추가합니다.
문법
from pyspark.sql import functions as sf
sf.array_insert(arr, pos, value)
매개 변수
| 매개 변수 | 유형 | Description |
|---|---|---|
arr |
pyspark.sql.Column 또는 str |
배열을 포함하는 열의 이름 |
pos |
pyspark.sql.Column, str 또는 int |
삽입 위치를 나타내는 숫자 형식 열의 이름입니다(인덱스 1부터 음수 위치는 배열의 뒷면에서 시작). |
value |
어느 것이든 | 리터럴 값 또는 열 식입니다. |
Returns
pyspark.sql.Column: 지정된 새 값을 포함한 값 배열입니다.
예시
예제 1: 특정 위치에 값 삽입
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]|
+------------------------+
예제 2: 음수 위치에 값 삽입
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]|
+-------------------------+
예제 3: 배열 크기보다 큰 위치에 값 삽입
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]|
+------------------------+
예제 4: 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]|
+---------------------------+
예제 5: 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|
+------------------------+