aggregate Fungsi

Berlaku untuk:check ditandai ya pemeriksaan Databricks SQL ditandai ya Databricks Runtime

Mengagregasi elemen dalam array menggunakan agregator kustom. Fungsi ini adalah sinonim untuk mengurangi fungsi.

Sintaks

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

Argumen

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

Kembali

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

Menerapkan ekspresi ke status awal dan semua elemen dalam array, dan menguranginya menjadi satu status. Status akhir dikonversi menjadi hasil akhir dengan menerapkan finish fungsi.

Fungsi ini merge mengambil dua parameter. Yang pertama adalah akumulator, yang kedua elemen yang akan diagregasi. Akumulator dan hasilnya harus dari jenis start. Fungsi opsional finish 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