Skip to content

try_element_at()

Описание

Функция try_element_at() безопасно возвращает элемент из массива или Map по указанному индексу. Если индекс выходит за границы массива или ключ не найден в Map, возвращает NULL.

Параметры

  • column: Column - массив или Map
  • index: 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()