Bagikan melalui


reduce fungsi

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Mengagregasi elemen dalam array menggunakan pengagregasi kustom. Fungsi ini adalah sinonim untuk fungsi aggregate.

Sintaks

reduce(expr, start, merge [, finish] )

Argumen

  • expr: Sebuah ekspresi ARRAY.
  • start: Nilai awal dari tipe data apa pun.
  • merge: Fungsi lambda yang digunakan untuk mengagregasi elemen saat ini.
  • finish: Fungsi lambda opsional yang digunakan untuk menyelesaikan agregasi.

Mengembalikan

Jenis hasil cocok dengan jenis hasil finish fungsi lambda jika ada atau start.

Menerapkan pernyataan ke keadaan awal dan semua elemen dalam array, dan mereduksinya menjadi satu keadaan. Status akhir diubah menjadi hasil akhir dengan menerapkan fungsi finish.

Fungsi merge mengambil dua parameter. Yang pertama adalah akumulator, dan yang kedua adalah elemen yang akan diagregasi. Akumulator dan hasilnya harus dari jenis start. Fungsi finish opsional mengambil satu parameter dan mengembalikan hasil akhir.

Contoh

> SELECT reduce(array(1, 2, 3), 0, (acc, x) -> acc + x);
 6

> SELECT reduce(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
 60

> SELECT reduce(array(1, 2, 3, 4),
                named_struct('sum', 0, 'cnt', 0),
                (acc, x) -> named_struct('sum', acc.sum + x, 'cnt', acc.cnt + 1),
                acc -> acc.sum / acc.cnt) AS avg
 2.5