Udostępnij za pośrednictwem


approx_top_k funkcja agregacji

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 10.4 LTS i nowsze

Zwraca najczęściej k występujące wartości elementów w elemencie expr wraz z ich przybliżonymi liczbami.

Składnia

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

Tę funkcję można również wywołać jako funkcję okna przy użyciu klauzuli OVER .

Argumenty

  • expr: wyrażenie typu STRING, BOOLEAN, DATE, TIMESTAMP lub numeryczne.
  • k: opcjonalny literał INTEGER większy niż 0. Jeśli k nie zostanie określony, domyślnie ma wartość 5.
  • maxItemsTracked: opcjonalny literał INTEGER większy lub równy k. Jeśli maxItemsTracked nie zostanie określony, domyślnie ma wartość 10000.
  • cond: opcjonalne wyrażenie logiczne filtrujące wiersze używane do agregacji.

Zwraca

Wyniki są zwracane jako tablica typu STRUCT, gdzie każda struktura zawiera item pole dla wartości (z oryginalnym typem wejściowym) i count pole (typu LONG) z przybliżoną liczbą wystąpień. Tablica jest sortowana malejąco count .

Funkcja agregacji zwraca najczęściej k występujące wartości elementów w wyrażeniu expr wraz z ich przybliżonymi liczbami. Błąd w każdej liczbie może być do 2.0 * numRows / maxItemsTracked tego, gdzie numRows jest całkowita liczba wierszy. Wyższe wartości maxItemsTracked zapewniają lepszą dokładność kosztem zwiększonego użycia pamięci. Wyrażenia, które mają mniej niż maxItemsTracked odrębne elementy, będą zwracać dokładne liczby elementów. Wyniki zawierają NULL wartości jako własny element w wynikach.

Przykłady

> 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}]