すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:Lambda 関数

最終更新日:Mar 27, 2026

Lambda は無名関数です。名前を付ける必要がなく、他の関数やメソッドのパラメーターとして渡すことができます。本トピックでは、Lambda 関数の制限事項、構文、および使用例について説明します。

Lambda 式は、名前を付けずに定義できる無名関数であり、他の関数やメソッドのパラメーターとして使用できます。配列や複雑なデータ構造に対して、名前付き関数を定義することなく、要素単位の変換やフィルター処理をインラインで適用する際に使用します。

構文

パラメーターリスト -> 式

パラメーターリストは空でも構いませんが、1 つ以上のパラメーターを含むこともできます。複数のパラメーターを指定する場合は、括弧で囲んでください。-> は、パラメーターリストと式(またはコードブロック)を区切るデリミタです。パラメーターの型は、呼び出し元の関数によって決定されます。

制限事項

  • サブクエリはサポートされていません。たとえば、x -> 2 + (SELECT 3) は無効です。

  • 集計操作はサポートされていません。たとえば、x -> max(y) は無効です。

使用例

すべての例では、配列の各要素に Lambda 式を適用する高階関数 transform() を使用しています。

配列の各要素を二乗する

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

配列要素を価格文字列としてフォーマットする

Lambda 式では、各整数を文字列にキャストし、通貨記号を追加します。

SELECT transform(prices, n -> CAST(n AS STRING) || '$') AS price_tags
FROM (
    VALUES (ARRAY(100, 200)), (ARRAY(30, 4))
) AS t(prices);

実行結果:

+-----------------+
| price_tags      |
+-----------------+
| ["100$","200$"] |
| ["30$","4$"]    |
+-----------------+

配列全体に対して線形関数を評価する

Lambda 式では、変換対象の配列カラムに加えて、同一行の他のカラムも参照できます。この例では、各要素に対して f(x) = ax + b を評価します。

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