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 k najczęściej występujące elementy values w expr razem z ich przybliżonymi liczbami wystąpień.

Składnia

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

Tę funkcję można również wywołać jako funkcję window 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, where każda struktura zawiera pole item dla wartości (z oryginalnym typem wejściowym) i pole count (typu LONG) z przybliżoną liczbą wystąpień. Tablica jest sortowana malejąco count .

Funkcja agregacji zwraca k najczęściej występujący element values w wyrażeniu expr wraz z jego przybliżoną liczbą wystąpień. Błąd w każdej liczbie może być maksymalnie 2.0 * numRows / maxItemsTrackedwherenumRows to całkowita liczba wierszy. Wyższe wartości values i 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 obejmują NULLvalues 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}]