try_element_at()
Описание
Функция try_element_at()
безопасно возвращает элемент из массива или Map по указанному индексу. Если индекс выходит за границы массива или ключ не найден в Map, возвращает NULL.
Параметры
column
: Column - массив или Mapindex
: Integer/String - индекс элемента (для массива) или ключ (для Map)
Возвращаемое значение
Any - элемент массива или значение из Map по указанному индексу/ключу
Пример использования
from pyspark.sql import SparkSession
from pyspark.sql.functions import try_element_at, array, create_map
# Создаем SparkSession
spark = SparkSession.builder.appName("try_element_at_example").getOrCreate()
# Создаем DataFrame с массивами и Map
data = [
(1, array(1, 2, 3), create_map("a", 1, "b", 2)),
(2, array(), create_map())
]
df = spark.createDataFrame(data, ["id", "arr", "map"])
# Получаем элементы безопасно
result = df.select(
"id",
try_element_at("arr", 0).alias("first_element"),
try_element_at("arr", 5).alias("out_of_bounds"),
try_element_at("map", "a").alias("map_value"),
try_element_at("map", "c").alias("missing_key")
).show()
# Результат:
# +---+-------------+-------------+----------+-----------+
# | id|first_element|out_of_bounds|map_value |missing_key|
# +---+-------------+-------------+----------+-----------+
# | 1| 1| NULL| 1| NULL|
# | 2| NULL| NULL| NULL| NULL|
# +---+-------------+-------------+----------+-----------+
Примечания
- Для массивов индексация начинается с 0
- Для Map используются строковые ключи
- Возвращает NULL для отрицательных индексов или ключей, не найденных в Map
- Для работы с JSON массивами используйте
get_json_object()
- Для безопасного доступа к элементам массива также можно использовать
element_at()