Лямбда-функции

Область применения:проверка помечено да Databricks SQL проверка помечено да Databricks Runtime

Параметризованное выражение, которое может быть передано функции для управления ее поведением.

Например, array_sort функция принимает лямбда-функцию в качестве аргумента для определения настраиваемого порядка сортировки.

Синтаксис

{ param -> expr |
  (param1 [, ...] ) -> expr }

Параметры

  • paramN: идентификатор , используемый родительской функцией для передачи аргументов для лямбда-функции.
  • expr: любое простое выражение, ссылающееся paramNна , которое не содержит вложенный запрос или определяемую пользователем функцию SQL.

Возвращает

Тип результата определяется типом exprрезультата .

Если их несколько paramN, имена параметров должны быть уникальными. Типы параметров задаются вызывающей функцией. Объект expression должен быть допустимым для этих типов, а тип результата должен соответствовать определенным ожиданиям вызывающих функций.

Примеры

Функция array_sort ожидает лямбда-функцию с двумя параметрами. Типы параметров будут типом элементов массива для сортировки. Ожидается, что выражение возвращает ЦЕЛОЕ ЧИСЛО, где -1 означает param1<param2, 0 означает param1 = param2, в противном случае — 1.

Чтобы отсортировать массив STRING в лексическом порядке справа налево, можно использовать следующую лямбда-функцию.

(p1, p2) -> CASE WHEN p1 = p2 THEN 0
                 WHEN reverse(p1) < reverse(p2) THEN -1
                 ELSE 1 END

Лямбда-функции определяются и используются нерегламентированным образом. Таким образом, определение функции является аргументом :

> SELECT array_sort(array('Hello', 'World'),
  (p1, p2) -> CASE WHEN p1 = p2 THEN 0
              WHEN reverse(p1) < reverse(p2) THEN -1
              ELSE 1 END);
[World, Hello]