- Kategorien:
Aggregatfunktionen (Kardinalitätsschätzung), Fensterfunktionen
APPROX_COUNT_DISTINCT¶
Verwendet HyperLogLog, um eine Approximation der spezifischen Kardinalität der Eingabe zurückzugeben (d. h. HLL(col1, col2, ... )
gibt eine Approximation von COUNT(DISTINCT col1, col2, ... )
zurück).
Weitere Informationen zu HyperLogLog finden Sie unter Schätzen der Anzahl diskreter Werte.
- Aliasse:
HLL.
- Siehe auch:
Syntax¶
Aggregatfunktion
APPROX_COUNT_DISTINCT( [ DISTINCT ] <expr1> [ , ... ] )
APPROX_COUNT_DISTINCT(*)
Fensterfunktionen
APPROX_COUNT_DISTINCT( [ DISTINCT ] <expr1> [ , ... ] ) OVER ( [ PARTITION BY <expr2> ] )
APPROX_COUNT_DISTINCT(*) OVER ( [ PARTITION BY <expr2> ] )
Argumente¶
Ausdruck1
Dies ist der Ausdruck, für den Sie die Anzahl der unterschiedlichen Werte wissen möchten.
Ausdruck2
Dies ist der optionale Ausdruck zum Gruppieren von Zeilen in Partitionen.
Rückgabewerte¶
Der Datentyp des zurückgegebenen Werts ist INTEGER.
Nutzungshinweise¶
Obwohl die Berechnung eine Approximation ist, ist sie deterministisch. Wenn diese Funktion mit den gleichen Eingabedaten aufgerufen wird, gibt diese Funktion die gleichen Ergebnisse zurück.
Weitere Informationen zu NULL-Werten und Aggregatfunktionen finden Sie unter Aggregatfunktionen und NULL-Werte.
Bei Verwendung als Fensterfunktion:
Diese Funktion unterstützt nicht:
ORDER BY-Unterklausel in der OVER()-Klausel
Fensterrahmen
Beispiele¶
Im folgenden Beispiel wird die Verwendung von APPROX_COUNT_DISTINCT und HLL veranschaulicht: Im folgenden Beispiel werden sowohl COUNT(DISTINCT i)
als auch APPROX_COUNT_DISTINCT(i)
aufgerufen, um zu unterstreichen, dass die Ergebnisse nicht immer genau übereinstimmen.
SELECT COUNT(i), COUNT(DISTINCT i), APPROX_COUNT_DISTINCT(i), HLL(i) FROM sequence_demo;Ausgabe:
Die Ergebnisse können variieren, da APPROX_COUNT_DISTINCT() eine Approximation und keinen genauen Wert zurückgibt.
SELECT COUNT(i), COUNT(DISTINCT i), APPROX_COUNT_DISTINCT(i), HLL(i) FROM sequence_demo; +----------+-------------------+--------------------------+--------+ | COUNT(I) | COUNT(DISTINCT I) | APPROX_COUNT_DISTINCT(I) | HLL(I) | |----------+-------------------+--------------------------+--------| | 1024 | 1024 | 1030 | 1030 | +----------+-------------------+--------------------------+--------+