メインコンテンツまでスキップ

Lambda expression

ラムダ式

ラムダ式は、高階SQL関数にパラメータとして渡すことができる匿名関数です。ラムダ式を使用することで、より簡潔で洗練された拡張性のあるコードを開発することができます。

ラムダ式は -> 演算子で記述され、左側は入力パラメータ(ある場合)で、右側は式です。

StarRocksのv2.5以降、以下の高階SQL関数でラムダ式を使用することがサポートされています:array_map()array_filter()array_sum()、および array_sortby()

構文

パラメータ ->

パラメータ

  • パラメータ:ラムダ式の入力パラメータで、0個、1個、または複数のパラメータを受け入れることができます。2つ以上の入力パラメータはかっこで囲まれます。
  • パラメータ を参照する単純な式です。式は入力パラメータに対して有効である必要があります。

戻り値

戻り値の型は、 の結果の型によって決まります。

使用上の注意

ほとんどのスカラー関数は、ラムダ式の本体で使用することができます。ただし、いくつかの例外があります:

  • サブクエリはサポートされていません。例: x -> 5 + (SELECT 3)
  • 集約関数はサポートされていません。例: x -> min(y)
  • ウィンドウ関数はサポートされていません。
  • テーブル関数はサポートされていません。
  • 関連する列はラムダ関数に出現することはできません。

ラムダ式の簡単な例:

-- パラメータを受け取らずに5を返す。
() -> 5
-- xを受け取り、(x + 2) の値を返す。
x -> x + 2
-- xとyを受け取り、それらの合計を返す。
(x, y) -> x + y
-- xを受け取り、xに関数を適用する。
x -> COALESCE(x, 0)
x -> day(x)
x -> split(x,",")
x -> if(x>0,"positive","negative")

ラムダ式を高階関数で使用する例:

select array_map((x,y,z) -> x + y, [1], [2], [4]);
+----------------------------------------------+
| array_map((x, y, z) -> x + y, [1], [2], [4]) |
+----------------------------------------------+
| [3] |
+----------------------------------------------+
1行の結果 (0.01)