Share via


Funções Lambda

Aplica-se a:verificar a verificação sim Databricks SQL marcada como sim Databricks Runtime

Uma expressão parametrizada que pode ser transmitida a uma função para controlar o respetivo comportamento.

Por exemplo, array_sort função aceita uma função lambda como um argumento para definir uma sequência de ordenação personalizada.

Sintaxe

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

Parâmetros

  • paramN: um identificador utilizado pela função principal para transmitir argumentos para a função lambda.
  • expr: qualquer expressão simples que faça referência a paramN, que não contenha uma subconsulta ou uma função definida pelo utilizador do SQL.

Devoluções

O tipo de resultado é definido pelo tipo de resultado de expr.

Se existir mais do que um , os nomes dos paramNparâmetros têm de ser exclusivos. Os tipos de parâmetros são definidos pela função de invocação. O expression tem de ser válido para estes tipos e o tipo de resultado tem de corresponder às expectativas definidas das funções de invocação.

Exemplos

A função array_sort espera uma função lambda com dois parâmetros. Os tipos de parâmetros serão o tipo de elementos da matriz a ordenar. Espera-se que a expressão devolva um NÚMERO INTEIRO em que -1 significa param1<param2, 0 significa param1 = param2e 1 caso contrário.

Para ordenar uma MATRIZ de CADEIA por ordem lexical da direita para a esquerda, pode utilizar a seguinte função lambda.

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

As funções Lambda são definidas e utilizadas ad hoc. Assim, a definição da função é o argumento:

> 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]