Lambda関数は、名前を付ける必要のない匿名関数であり、他の関数またはメソッドのパラメーターとして使用できます。 このトピックでは、Lambda関数の制限、構文、および例について説明します。
制限事項
x->2 +(SELECT3)
などのサブクエリはサポートされていません。x -> max(y)
などの集計操作はサポートされていません。
構文
構文: パラメータリスト ->
式またはコードブロック。
パラメータリスト: Lambda関数によって受信されるパラメータのリスト。 パラメータリストは空にすることも、1つ以上のパラメータを含むこともできます。
->
: 式またはコードブロックからパラメータリストを区切るために使用される区切り文字。
例
例1: array列の二乗値を取得します。
SELECT numbers,transform(numbers, n -> n * n) as squared_numbers FROM ( VALUES (ARRAY(1, 2)),(ARRAY(3, 4)),(ARRAY(5, 6, 7)) ) AS t(numbers);
次の応答が返されます。
+------------+-----------------+ | numbers | squared_numbers | +------------+-----------------+ | [5,6,7] | [25,36,49] | | [3,4] | [9,16] | | [1,2] | [1,4] | +------------+-----------------+
例2: arrayを文字列に変換します。
SELECT transform(prices, n -> CAST(n AS STRING ) || '$') as price_tags FROM ( VALUES (ARRAY(100, 200)),(ARRAY(30, 4)) ) AS t(prices);
次の応答が返されます。
+------------+ | price_tags | +------------+ | ["30$","4$"] | | ["100$","200$"] | +------------+
例3: 線形関数の値を計算します。
SELECT xvalues, a, b, transform(xvalues, x -> a * x + b) as linear_function_values FROM ( VALUES (ARRAY(1, 2), 10, 5),(ARRAY(3, 4), 4, 2) ) AS t(xvalues, a, b);
次の応答が返されます。
+------------+------------+------------+------------------------+ | xvalues | a | b | linear_function_values | +------------+------------+------------+------------------------+ | [3,4] | 4 | 2 | [14,18] | | [1,2] | 10 | 5 | [15,25] | +------------+------------+------------+------------------------+