다음을 통해 공유


array_position

지정된 배열에서 지정된 값이 처음 나타나는 위치를 찾습니다. 인수 중 하나가 null이면 null을 반환합니다. 위치는 0부터 시작하는 것이 아니라 1부터 시작하는 인덱스입니다. 지정된 값을 배열에서 찾을 수 없는 경우 0을 반환합니다.

문법

from pyspark.sql import functions as sf

sf.array_position(col, value)

매개 변수

매개 변수 유형 Description
col pyspark.sql.Column 또는 str 작업할 대상 열입니다.
value 어느 것이든 찾을 값 또는 열 식입니다.

Returns

pyspark.sql.Column: 지정된 배열의 값 위치(있는 경우)이고, 그렇지 않으면 0입니다.

예시

예제 1: 문자열 배열에서 문자열 위치 찾기

from pyspark.sql import functions as sf
df = spark.createDataFrame([(["c", "b", "a"],)], ['data'])
df.select(sf.array_position(df.data, "a")).show()
+-----------------------+
|array_position(data, a)|
+-----------------------+
|                      3|
+-----------------------+

예제 2: 빈 배열에서 문자열 위치 찾기

from pyspark.sql import functions as sf
from pyspark.sql.types import ArrayType, StringType, StructField, StructType
schema = StructType([StructField("data", ArrayType(StringType()), True)])
df = spark.createDataFrame([([],)], schema=schema)
df.select(sf.array_position(df.data, "a")).show()
+-----------------------+
|array_position(data, a)|
+-----------------------+
|                      0|
+-----------------------+

예제 3: 정수 배열에서 정수 위치 찾기

from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3],)], ['data'])
df.select(sf.array_position(df.data, 2)).show()
+-----------------------+
|array_position(data, 2)|
+-----------------------+
|                      2|
+-----------------------+

예제 4: 배열에서 존재하지 않는 값의 위치 찾기

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

예제 5: null이 있는 배열에서 값 위치 찾기

from pyspark.sql import functions as sf
df = spark.createDataFrame([([None, "b", "a"],)], ['data'])
df.select(sf.array_position(df.data, "a")).show()
+-----------------------+
|array_position(data, a)|
+-----------------------+
|                      3|
+-----------------------+

예제 6: 정수 배열에서 열 값 위치 찾기

from pyspark.sql import functions as sf
df = spark.createDataFrame([([10, 20, 30], 20)], ['data', 'col'])
df.select(sf.array_position(df.data, df.col)).show()
+-------------------------+
|array_position(data, col)|
+-------------------------+
|                        2|
+-------------------------+