Dela via


approx_top_k mängdfunktion

Gäller för: markerad ja Databricks SQL markerad ja Databricks Runtime 10.4 LTS och senare

Returnerar de vanligaste k objektvärdena i en expr tillsammans med deras ungefärliga antal.

Syntax

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

Den här funktionen kan också anropas som en fönsterfunktion med hjälp av OVER -satsen.

Argument

  • expr: Ett uttryck av typen STRING, BOOLEAN, DATE, TIMESTAMP eller numerisk.
  • k: En valfri INTEGER-literal som är större än 0. Om k inte anges är standardvärdet 5.
  • maxItemsTracked: En valfri INTEGER-literal som är större än eller lika med k. Om maxItemsTracked inte anges är standardvärdet 10000.
  • cond: Ett valfritt booleskt uttryck som filtrerar de rader som används för aggregering.

Returer

Resultaten returneras som en MATRIS av typen STRUCT, där varje STRUCT innehåller ett item fält för värdet (med dess ursprungliga indatatyp) och ett count fält (av typen LONG) med det ungefärliga antalet förekomster. Matrisen sorteras efter count fallande.

Aggregeringsfunktionen returnerar de vanligaste k objektvärdena i ett uttryck expr tillsammans med deras ungefärliga antal. Felet i varje antal kan vara upp till 2.0 * numRows / maxItemsTracked där numRows är det totala antalet rader. Högre värden för maxItemsTracked ger bättre noggrannhet på bekostnad av ökad minnesanvändning. Uttryck som har färre än maxItemsTracked distinkta objekt ger exakta antal objekt. Resultaten innehåller NULL värden som sitt eget objekt i resultatet.

Exempel

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