Лямбда-функции
Область применения: 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]