approx_top_kFungsi agregat

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 10.4 LTS ke atas

Menghasilkan nilai item yang paling sering muncul k di expr bersama dengan perkiraan jumlahnya.

Sintaks

approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]

Fungsi ini juga dapat dipanggil sebagai fungsi jendela menggunakan OVER klausa.

Argumen

  • expr: Ekspresi STRING, BOOLEAN, DATE, TIMESTAMP, atau jenis numerik.
  • k: Literal INTEGER opsional yang lebih besar dari 0. Jika k tidak ditentukan, maka akan default ke 5.
  • maxItemsTracked: Literal INTEGER opsional yang lebih besar atau sama dengan k. Jika maxItemsTracked tidak ditentukan, maka akan default ke 10000.
  • cond: Ekspresi boolean opsional yang memfilter baris yang digunakan untuk agregasi.

Mengembalikan

Hasil ditampilkan sebagai ARRAY jenis STRUCT, setiap STRUCT berisi item bidang untuk nilai (dengan jenis input aslinya) dan count bidang (tipe LONG) dengan perkiraan jumlah kemunculan. Array diurutkan dengan count menurun.

Fungsi agregat mengembalikan nilai item teratas k yang paling sering terjadi dalam ekspresi expr bersama dengan perkiraan jumlahnya. Kesalahan dalam setiap hitungan mungkin hingga 2.0 * numRows / maxItemsTracked, dan numRows merupakan jumlah total baris. Nilai maxItemsTracked yang lebih tinggi memberikan akurasi yang lebih baik dengan biaya peningkatan penggunaan memori. Ekspresi yang memiliki kurang dari maxItemsTracked item yang berbeda akan menangguhkan jumlah item yang akurat. Hasil menyertakan nilai NULL sebagai item mereka sendiri dalam hasil.

Contoh

> SELECT approx_top_k(expr) FROM VALUES (0), (0), (1), (1), (2), (3), (4), (4) AS tab(expr);
 [{'item':4,'count':2},{'item':1,'count':2},{'item':0,'count':2},{'item':3,'count':1},{'item':2,'count':1}]

> SELECT approx_top_k(expr, 2) FROM VALUES 'a', 'b', 'c', 'c', 'c', 'c', 'd', 'd' AS tab(expr);
 [{'item':'c','count',4},{'item':'d','count':2}]

> SELECT approx_top_k(expr, 10, 100) FROM VALUES (0), (1), (1), (2), (2), (2) AS tab(expr);
 [{'item':2,'count':3},{'item':1,'count':2},{'item':0,'count':1}]