次の方法で共有


ラムダ関数

適用対象: 「はい」のチェック マーク Databricks SQL 「はい」のチェック マーク Databricks Runtime

動作を制御するために関数に渡すことができるパラメーター化された式。

たとえば、array_sort 関数では、カスタムの並べ替え順序を定義する引数としてラムダ関数を受け取ります。

構文

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

パラメーター

  • paramN: ラムダ関数の引数を渡すために親関数によって使用される識別子
  • expr: サブクエリまたは SQL ユーザー定義関数を含まない、paramN を参照する単純な式。

戻り値

結果の型は、expr の結果の型によって定義されます。

paramN が複数ある場合、パラメーター名は一意である必要があります。 パラメーターの型は、呼び出し元の関数によって設定されます。 expression は、これらの型に対して有効である必要があります。また、結果の型は、呼び出し元の関数の定義された想定と一致する必要があります。

array_sort 関数には、2 つのパラメーターを持つラムダ関数が必要です。 パラメーターの型は、並べ替えられる配列の要素の型になります。 この式は、-1 は param1<param2、0 は param1 = param2、それ以外は 1 を意味する整数を返すことが想定されています。

文字列の配列を、右から左への字句の順序で並べ替えるには、次のラムダ関数を使用できます。

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