approx_top_k
Fungsi agregat
Berlaku untuk: Databricks SQL 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. Jikak
tidak ditentukan, maka akan default ke5
.maxItemsTracked
: Literal INTEGER opsional yang lebih besar atau sama dengank
. JikamaxItemsTracked
tidak ditentukan, maka akan default ke10000
.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}]