aggregate fungsi

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

Mengagregasi elemen dalam array menggunakan penggabung kustom. Fungsi ini adalah sinonim untuk fungsi reduce.

Sintaks

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

Argumen

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

Pengembalian

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

Menerapkan ekspresi ke keadaan awal dan semua elemen dalam array, dan mengurangi elemen-elemen ini menjadi satu keadaan. Status akhir diubah menjadi hasil akhir dengan menerapkan fungsi finish.

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

Contoh

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

> SELECT aggregate(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