Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Находит позицию первого вхождения заданного значения в заданном массиве. Возвращает значение NULL, если один из аргументов имеет значение NULL. Позиция не основана на нуле, а на основе 1 индекса. Возвращает значение 0, если заданное значение не удалось найти в массиве.
Синтаксис
from pyspark.sql import functions as sf
sf.array_position(col, value)
Параметры
| Параметр | Тип | Description |
|---|---|---|
col |
pyspark.sql.Column или str |
Целевой столбец для работы. |
value |
Любое | Значение или выражение столбца для поиска. |
Возвраты
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|
+-------------------------+