Catégories :

Fonctions d’agrégation (Cardinality Estimation) , Syntaxe et utilisation des fonctions de fenêtre

DATASKETCHES_HLL_ESTIMATE

Renvoie l’estimation de la cardinalité pour l’esquisse donnée.

Cette fonction est une version de la fonction HLL HyperLogLog qui peut lire des esquisses binaires dans le format utilisé par Apache DataSketches. Pour plus d’informations, consultez la documentation Apache DataSketches.

Une esquisse produite par la fonction DATASKETCHES_HLL_COMBINE peut être utilisée pour calculer une estimation de la cardinalité à l’aide de la fonction DATASKETCHES_HLL_ESTIMATE.

Syntaxe

DATASKETCHES_HLL_ESTIMATE( <binary_sketch> )
Copy

Arguments

binary_sketch

Une expression qui contient des informations sur l’esquisse au format binaire.

Renvoie

La fonction renvoie une valeur de type DOUBLE.

Si l’entrée est vide, la sortie est 0.0.

Note

Cette fonction renvoie une valeur d’un type différent de celui de la fonction HLL_ESTIMATE, qui renvoie une valeur INTEGER.

Exemples

Créer une table et insérer des valeurs :

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

Les exemples suivants utilisent les données de la table.

Renvoi de l’estimation de la cardinalité pour les esquisses binaires accumulées

L’exemple ci-dessous effectue les actions suivantes :

  1. La fonction DATASKETCHES_HLL_ACCUMULATE crée deux esquisses binaires pour les données de la colonne v, regroupées par les valeurs 1 et 2 dans la colonne g.

  2. La fonction DATASKETCHES_HLL_ESTIMATE renvoie l’estimation de la cardinalité pour chaque esquisse accumulée.

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g)
SELECT g, DATASKETCHES_HLL_ESTIMATE(accumulated_sketches) AS accumulated_estimate
  FROM accumulated;
Copy
+---+----------------------+
| G | ACCUMULATED_ESTIMATE |
|---+----------------------|
| 1 |          2.000000005 |
| 2 |          3.000000015 |
+---+----------------------+

Vous pouvez voir les valeurs des esquisses accumulées dans l’exemple de DATASKETCHES_HLL_ACCUMULATE.

Renvoi de l’estimation de la cardinalité pour les esquisses binaires combinées

L’exemple ci-dessous effectue les actions suivantes :

  1. La fonction DATASKETCHES_HLL_ACCUMULATE crée deux esquisses binaires pour les données de la colonne v, regroupées par les valeurs 1 et 2 dans la colonne g.

  2. La fonction DATASKETCHES_HLL_COMBINE combine ces esquisses binaires pour les unifier.

  3. La fonction DATASKETCHES_HLL_ESTIMATE renvoie l’estimation de la cardinalité de l’esquisse unifiée.

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g),
  combined AS (
    SELECT DATASKETCHES_HLL_COMBINE(accumulated_sketches) AS unified
      FROM accumulated)
SELECT DATASKETCHES_HLL_ESTIMATE(unified) AS unified_estimate
  FROM combined;
Copy
+------------------+
| UNIFIED_ESTIMATE |
|------------------|
|       4.00000003 |
+------------------+

Vous pouvez voir la valeur des esquisses combinées dans l’exemple de DATASKETCHES_HLL_COMBINE.