Kategorien:

Aggregatfunktionen (Cardinality Estimation) , Syntax und Verwendung von Fensterfunktionen

DATASKETCHES_HLL_ACCUMULATE

Gibt die Skizze am Ende der Aggregation 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.

DATASKETCHES_HLL verwirft seinen Zwischenstatus, sobald die endgültige Kardinalitätsschätzung zurückgegeben wird. In fortgeschrittenen Anwendungsfällen, beispielsweise der inkrementellen Kardinalitätsschätzung beim Massenladen, sollte der Zwischenstatus möglicherweise beibehalten werden. Der Zwischenstatus kann später mit anderen Zwischenstatus kombiniert (zusammengeführt) oder in externe Tools exportiert werden.

Im Gegensatz zu DATASKETCHES_HLL gibt DATASKETCHES_HLL_ACCUMULATE keine Kardinalitätsschätzung zurück. Stattdessen wird der letzte Schätzungsschritt übersprungen und der algorithmische Status selbst zurückgegeben. Weitere Informationen dazu finden Sie unter Schätzen der Anzahl diskreter Werte.

Siehe auch:

DATASKETCHES_HLL_COMBINE, DATASKETCHES_HLL_ESTIMATE

Syntax

DATASKETCHES_HLL_ACCUMULATE( [ DISTINCT ] <expr> [ , <max_log_k> ] )
Copy

Erforderliche Argumente

expr

Der Ausdruck, für den Sie die Kardinalität (Anzahl verschiedener Werte) schätzen möchten. Dies ist normalerweise ein Spaltenname, kann jedoch ein allgemeinerer Ausdruck sein.

Optionale Argumente

max_log_k

Der maximale Wert von K in log2 für diese Vereinigung. Geben Sie einen INTEGER-Wert zwischen 4 und 21 ein. Weitere Informationen finden Sie in der Dokumentation zu Apache DataSketches.

Standardeinstellung: 12

Rückgabewerte

Die Funktion gibt einen BINARY-Wert zurück, der mit der Apache Datasketches-Bibliothek kompatibel ist.

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.

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

Verwenden Sie die Funktion DATASKETCHES_HLL_ACCUMULATE, um zwei binäre Skizzen für die Daten in der Spalte v zu erstellen, gruppiert nach den Werten 1 und 2 in der Spalte g:

SELECT g,
       DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
  FROM datasketches_demo
  GROUP BY g;
Copy
+---+------------------------------------------+
| G | ACCUMULATED_SKETCHES                     |
|---+------------------------------------------|
| 1 | 0201070C030802002BF2FB06862FF90D         |
| 2 | 0201070C030803002BF2FB0681BC5D067B65E608 |
+---+------------------------------------------+