All Products
Search
Document Center

MaxCompute:Fungsi lambda

Last Updated:Mar 27, 2026

Lambda adalah fungsi anonim yang tidak memerlukan nama dan dapat diteruskan sebagai parameter ke fungsi atau metode lain. Topik ini menjelaskan batasan, sintaksis, serta contoh penggunaan fungsi lambda.

Ekspresi lambda merupakan fungsi anonim yang dapat digunakan sebagai parameter dalam fungsi atau metode lain. Ekspresi ini memungkinkan penerapan transformasi dan filter tingkat elemen pada array serta struktur data kompleks secara inline, tanpa perlu mendefinisikan fungsi bernama.

Sintaksis

parameter_list -> expression

Daftar parameter dapat kosong atau berisi satu atau beberapa parameter. Gunakan tanda kurung apabila terdapat beberapa parameter. Pembatas -> memisahkan daftar parameter dari ekspresi atau blok kode. Jenis parameter ditentukan oleh fungsi yang memanggilnya.

Batasan

  • Subquery tidak didukung. Contohnya, x -> 2 + (SELECT 3) tidak valid.

  • Operasi agregat tidak didukung. Contohnya, x -> max(y) tidak valid.

Contoh

Semua contoh berikut menggunakan fungsi transform(), yaitu fungsi orde tinggi yang menerapkan ekspresi lambda ke setiap elemen array.

Kuadratkan setiap elemen dalam 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);

Hasil:

+------------+-----------------+
| numbers    | squared_numbers |
+------------+-----------------+
| [5,6,7]    | [25,36,49]      |
| [3,4]      | [9,16]          |
| [1,2]      | [1,4]           |
+------------+-----------------+

Format elemen array sebagai string harga

Ekspresi lambda mengonversi setiap bilangan bulat menjadi string dan menambahkan simbol mata uang.

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

Hasil:

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

Evaluasi fungsi linear pada array

Selain kolom array yang sedang ditransformasi, ekspresi lambda juga dapat mereferensikan kolom lain dari baris yang sama. Contoh ini mengevaluasi f(x) = ax + b untuk setiap elemen.

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);

Hasil:

+---------+----+---+------------------------+
| xvalues | a  | b | linear_function_values |
+---------+----+---+------------------------+
| [3,4]   | 4  | 2 | [14,18]                |
| [1,2]   | 10 | 5 | [15,25]                |
+---------+----+---+------------------------+