Kategorien:

Aggregatfunktionen (Cardinality Estimation) , Fensterfunktionen

DATASKETCHES_HLL

Gibt eine Approximation an die spezifische Kardinalität der Eingabe zurück (das heißt, DATASKETCHES_HLL(col1) gibt eine Approximation an COUNT(DISTINCT col1) zurück).

Diese Funktion ist eine Version der Funktion HLL HyperLogLog, die binäre Skizzen in dem von Apache DataSketches verwendeten Format lesen kann. Weitere Informationen finden Sie in der Dokumentation zu Apache DataSketches.

Siehe auch:

DATASKETCHES_HLL_ACCUMULATE, DATASKETCHES_HLL_COMBINE, DATASKETCHES_HLL_ESTIMATE

Syntax

Aggregatfunktion

DATASKETCHES_HLL( [ DISTINCT ] <expr1> [ , <max_log_k> ] )
Copy

Fensterfunktionen

DATASKETCHES_HLL( [ DISTINCT ] <expr1> [ , <max_log_k> ] )
  OVER ( [ PARTITION BY <expr2> ] )
Copy

Erforderliche Argumente

expr1

Der Ausdruck, für den Sie die Anzahl der unterschiedlichen Werte wissen möchten.

Optionale Argumente

max_log_k

Der maximale Wert von K in log2, um das Objekt „datasketches HLL“ zu initialisieren. Geben Sie einen INTEGER-Wert zwischen 4 und 21 ein. Weitere Informationen finden Sie in der Dokumentation zu Apache DataSketches.

Standardeinstellung: 12

expr2

Der optionale Ausdruck, der verwendet wird, um Zeilen in Partitionen zu gruppieren.

Rückgabewerte

Die Funktion gibt einen Wert vom Typ DOUBLE zurück.

Wenn die Eingabe leer ist, lautet die Ausgabe 0.0.

Nutzungshinweise

  • DISTINCT wird unterstützt, hat aber keine Auswirkungen.

  • Die Funktion unterstützt Argumente, die Werte der folgenden Datentypen sind:

    • Zeichenfolgen- und Binärdatentypen (zum Beispiel VARCHAR und BINARY).

      Die folgenden Funktionsaufrufe werden zum Beispiel unterstützt:

      SELECT DATASKETCHES_HLL_ACCUMULATE(1::TEXT);
      
      Copy
      SELECT DATASKETCHES_HLL_ACCUMULATE(TO_BINARY(HEX_ENCODE(1), 'HEX'));
      
      Copy
    • Datentypen für Fließkommazahlen (zum Beispiel FLOAT und DOUBLE)

      Die DataSketches-Bibliothek wandelt diese Werte in DOUBLE-Werte um.

    • Datentypen für Festkommazahlen (zum Beispiel INTEGER und NUMERIC).

      Die Funktion unterstützt nur numerische Typen mit der Skala 0. Sie können jedoch numerische Werte mit einer anderen Skala als 0 in einen Datentyp für eine Gleitkommazahl übertragen.

      Die DataSketches-Bibliothek wandelt diese Werte im Bereich eines 64-Bit-INTEGER-Werts in einen 64-Bit-INTEGER-Wert um.

      Die DataSketches-Bibliothek wandelt INTEGER-Werte nicht direkt um, die den 64-Bit-INTEGER-Bereich überschreiten (z. B. 128-Bit-Ganzzahl-Werte). Snowflake unterstützt diese Werte jedoch weiterhin, indem sie automatisch in DOUBLE-Werte umgewandelt werden, die DataSketches unterstützt. Diese Verhaltensweise ist identisch mit der Verhaltensweise der datasketches-python-Bibliothek.

    Werte von anderen Datentypen werden nicht unterstützt. Zum Beispiel werden die Werte VARIANT und ARRAY nicht unterstützt.

  • Weitere Informationen zu NULL-Werten und Aggregatfunktionen finden Sie unter Aggregatfunktionen und NULL-Werte.

  • Wenn diese Funktion als Fensterfunktion aufgerufen wird, wird Folgendes nicht unterstützt:

    • Eine ORDER BY-Klausel innerhalb der OVER-Klausel.

    • Explizite Fensterrahmen.

Beispiele

Erstellen Sie eine Tabelle, und fügen Sie Zeilen ein:

CREATE OR REPLACE TABLE datasketches_demo(v INT, g INT);

INSERT INTO datasketches_demo SELECT 1, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 1, 2;
INSERT INTO datasketches_demo SELECT 1, 2;
INSERT INTO datasketches_demo SELECT 4, 2;
INSERT INTO datasketches_demo SELECT 4, 2;
INSERT INTO datasketches_demo SELECT 5, 2;
Copy

Die folgenden Beispiele verwenden die Daten aus der Tabelle.

Geschätzte Kardinalität der gruppierten Daten in einer Spalte liefern

Verwenden Sie die Funktion DATASKETCHES_HLL, um die spezifische Kardinalität der Daten in Spalte v gruppiert nach den Werten in Spalte g zu approximieren.

SELECT g,
       DATASKETCHES_HLL(v),
       COUNT(DISTINCT v)
  FROM datasketches_demo GROUP BY g;
Copy
+---+---------------------+-------------------+
| G | DATASKETCHES_HLL(V) | COUNT(DISTINCT V) |
|---+---------------------+-------------------|
| 1 |         2.000000005 |                 2 |
| 2 |         3.000000015 |                 3 |
+---+---------------------+-------------------+

Die Ausgabe zeigt, dass es für den Wert 1 in der Spalte g etwa zwei verschiedene Werte in der Spalte v gibt (d. h. 1 und 2). Für den Wert 2 in der Spalte g gibt es etwa drei verschiedene Werte in der Spalte v (d. h. 1, 4 und 5). Der Aufruf COUNT(DISTINCT v)) gibt die genaue Anzahl der unterschiedlichen Werte zurück, anstatt einer Schätzung.

Wenn Sie die Funktion DATASKETCHES_HLL_ACCUMULATE verwenden, um aus den gruppierten Daten binäre Skizzen zu erstellen, gibt die Funktion DATASKETCHES_HLL_ESTIMATE die gleichen Ergebnisse für die kumulierten Skizzen zurück. Ein Beispiel dazu finden Sie unter Kardinalitätsschätzung für kumulierte binäre Skizzen zurückgeben.

Geschätzte Kardinalität aller Daten in einer Spalte liefern

Verwenden Sie die Funktion DATASKETCHES_HLL, um die spezifische Kardinalität aller Daten in der Spalte v zu approximieren.

SELECT DATASKETCHES_HLL(v),
       COUNT(DISTINCT v)
  FROM datasketches_demo;
Copy
+---------------------+-------------------+
| DATASKETCHES_HLL(V) | COUNT(DISTINCT V) |
|---------------------+-------------------|
|          4.00000003 |                 4 |
+---------------------+-------------------+

Die Ausgabe zeigt, dass es etwa vier verschiedene Werte in der Spalte v gibt (d. h. 1, 2, 4 und 5). Der Aufruf COUNT(DISTINCT v)) gibt die genaue Anzahl der unterschiedlichen Werte zurück, anstatt einer Schätzung.

Wenn Sie die Funktion DATASKETCHES_HLL_ACCUMULATE verwenden, um binäre Skizzen aus den gruppierten Daten zu erstellen, und dann die Funktion DATASKETCHES_HLL_COMBINE verwenden, um die Skizzen zu einer einheitlichen Skizze zusammenzufassen, gibt die Funktion DATASKETCHES_HLL_ESTIMATE die gleichen Ergebnisse für die einheitliche Skizze zurück. Ein Beispiel dazu finden Sie unter Kardinalitätsschätzung für kombinierte binäre Skizzen zurückgeben.