Поделиться через


element_at

Функция сбора: возвращает элемент массива в заданном (1) индексе или значении заданного ключа на карте. Для массивов, если индекс равен 0, Spark выдает ошибку. Если индекс < 0, обращается к элементам из последнего к первому. Если для параметра "spark.sql.ansi.enabled" задано значение true, исключение будет возникать, если индекс выходит за пределы массива, а не возвращает значение NULL. Для карт функция всегда возвращает значение NULL, если ключ не содержится в карте. Поддерживает Spark Connect.

Для соответствующей функции Databricks SQL смотрите функцию element_at.

Синтаксис

from pyspark.databricks.sql import functions as dbf

dbf.element_at(col=<col>, extraction=<extraction>)

Параметры

Параметр Тип Description
col pyspark.sql.Column или str Имя столбца, содержащего массив или карту.
extraction Любое Индекс для проверки в массиве или ключе, чтобы проверить наличие на карте.

Возвраты

pyspark.sql.Column: значение по заданной позиции.

Примеры

Пример 1. Получение первого элемента массива

from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(["a", "b", "c"],)], ['data'])
df.select(dbf.element_at(df.data, 1)).show()
+-------------------+
|element_at(data, 1)|
+-------------------+
|                  a|
+-------------------+

Пример 2. Получение значения из карты с помощью ключа

from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([({"a": 1.0, "b": 2.0},)], ['data'])
df.select(dbf.element_at(df.data, dbf.lit("a"))).show()
+-------------------+
|element_at(data, a)|
+-------------------+
|                1.0|
+-------------------+