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

MaxCompute:Lambda 関数

最終更新日:Dec 06, 2024

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