- Kategorien:
- Aggregatfunktionen (Frequency Estimation) , Fensterfunktionen 
APPROX_TOP_K¶
Verwendet Space-Saving, um eine Approximation der häufigsten Werte in der Eingabe zusammen mit ihren approximierten Häufigkeiten zu erhalten.
Die Ausgabe ist ein JSON-Array, das aus Arrays besteht. In den inneren Arrays ist der erste Eintrag ein Wert in der Eingabe, während der zweite Eintrag der geschätzten Häufigkeit des Werts in der Eingabe entspricht. Das äußere Array enthält k Elemente, sortiert nach absteigender Häufigkeit.
Weitere Informationen zu APPROX_TOP_K finden Sie unter Schätzen häufiger Werte.
Syntax¶
Aggregatfunktion
APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] )
Fensterfunktionen
APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] ) OVER ( [ PARTITION BY <expr4> ] )
Argumente¶
- expr: Ausdruck (z. B. Spaltenname), für den Sie die häufigsten Werte finden möchten.
- k: Anzahl der Werte, deren Anzahl approximiert werden soll. Wenn Sie beispielsweise die 10 häufigsten Werte anzeigen möchten, setzen Sie- kauf 10.- Wenn - knicht angegeben wird, lautet der Standardwert- 1.- Der Maximalwert ist - 100000(100.000) und wird automatisch reduziert, wenn Elemente nicht in die Ausgabe passen.
- counters: Maximale Anzahl diskreter Werte, die sich beim Schätzen gleichzeitig verfolgen lassen. Wenn- countersbeispielsweise auf „100000“ gesetzt ist, verfolgt der Algorithmus 100.000 verschiedene Werte und versucht, die 100.000 häufigsten Werte beizubehalten.- Die maximale Anzahl von - countersbeträgt- 100000(100.000).
- expr4
- Dies ist der optionale Ausdruck zum Gruppieren von Zeilen in Partitionen. 
Nutzungshinweise¶
- Die Approximation fällt genauer aus, wenn der Wert von - countersgroß ist. In den meisten Fällen sollte- countersdarum wesentlich größer sein als- k. (Jeder Zähler verbraucht nur wenig Arbeitsspeicher, daher kostet es in dieser Hinsicht nicht viel, die Anzahl der Zähler zu erhöhen.)
- Wenn diese Funktion als Fensterfunktion aufgerufen wird, wird sie nicht unterstützt: - Eine ORDER BY-Klausel innerhalb der OVER-Klausel. 
- Explizite Fensterrahmen. 
 
Beispiele¶
SELECT APPROX_TOP_K(C4) FROM lineitem;
+--------------------+
| APPROX_TOP_K(C4,3) |
+--------------------+
| [                  |
|   [                |
|     1,             |
|     124923         |
|   ],               |
|   [                |
|     2,             |
|     107093         |
|   ],               |
|   [                |
|     3,             |
|    89315           |
|   ]                |
| ]                  |
+--------------------+
WITH states AS (
  SELECT approx_top_k(C4, 3, 5) AS state
  FROM lineitem)
SELECT value[0]::INT AS value, value[1]::INT AS frequency
  FROM states, LATERAL FLATTEN(state);
+-------+-----------+
| VALUE | FREQUENCY |
+-------+-----------+
|     1 |    124923 |
|     2 |    107093 |
|     3 |     89438 |
+-------+-----------+