Catégories :

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

DATASKETCHES_HLL_ACCUMULATE

Renvoie l’esquisse à la fin de l’agrégation.

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.

DATASKETCHES_HLL rejette son état intermédiaire lorsque l’estimation de cardinalité finale est renvoyée. Dans les cas d’utilisation avancés, tels que l’estimation de la cardinalité incrémentielle pendant le chargement en bloc, vous voudrez peut-être conserver l’état intermédiaire. L’état intermédiaire peut ensuite être combiné (fusionné) avec d’autres états intermédiaires ou peut être exporté vers des outils externes.

Contrairement à DATASKETCHES_HLL, DATASKETCHES_HLL_ACCUMULATE ne renvoie pas d’estimation de la cardinalité. Au lieu de cela, il saute la dernière étape d’estimation et renvoie l’état de l’algorithme lui-même. Pour plus d’informations, voir Le nombre de valeurs distinctes..

Voir aussi :

DATASKETCHES_HLL_COMBINE, DATASKETCHES_HLL_ESTIMATE

Syntaxe

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

Arguments obligatoires

expr

L’expression pour laquelle vous souhaitez estimer la cardinalité (nombre de valeurs distinctes). Il s’agit généralement d’un nom de colonne, mais il peut s’agir d’une expression plus générale.

Arguments facultatifs

max_log_k

La valeur maximale, en log2, de K pour cette union. Spécifiez une valeur INTEGER comprise entre 4 et 21 inclus. Pour plus d’informations, consultez la documentation Apache DataSketches.

Par défaut : 12

Renvoie

La fonction renvoie une valeur BINARY compatible avec la bibliothèque Apache Datasketches.

Notes sur l’utilisation

  • DISTINCT est pris en charge syntaxiquement, mais n’a aucun effet.

  • La fonction prend en charge les arguments qui sont des valeurs des types de données suivants :

    • Types de données Chaîne et Binaire (par exemple, VARCHAR et BINARY).

      Par exemple, les appels de fonction suivants sont pris en charge :

      SELECT DATASKETCHES_HLL_ACCUMULATE(1::TEXT);
      
      Copy
      SELECT DATASKETCHES_HLL_ACCUMULATE(TO_BINARY(HEX_ENCODE(1), 'HEX'));
      
      Copy
    • Types de données pour les numéros en virgule flottante (par exemple, FLOAT et DOUBLE)

      La bibliothèque DataSketches convertit ces valeurs en valeurs DOUBLE.

    • Types de données pour les numéros à virgule fixe (par exemple, INTEGER et NUMERIC).

      La fonction ne prend en charge que les types numériques avec une échelle de 0. Toutefois, vous pouvez convertir des valeurs numériques avec une échelle différente de 0 en un type de données pour un nombre à virgule flottante.

      La bibliothèque DataSketches convertit ces valeurs dans l’intervalle d’une valeur INTEGER signée de 64 bits à une valeur INTEGER signée de 64 bits.

      La bibliothèque DataSketches ne convertit pas directement les valeurs INTEGER dépassant la plage de valeurs INTEGER signées de 64 bits (telles que les valeurs entières de 128 bits). Cependant, Snowflake prend toujours en charge ces valeurs en les convertissant automatiquement en valeurs DOUBLE, que DataSketches prend en charge. Ce comportement est identique à celui de la bibliothèque datasketches-python.

    Les valeurs d’autres types de données ne sont pas prises en charge. Par exemple, les valeurs VARIANT et ARRAY ne sont pas prises en charge.

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

Utilisez la fonction DATASKETCHES_HLL_ACCUMULATE pour créer deux esquisses binaires pour les données de la colonne v, groupées par les valeurs 1 et 2 dans la colonne g :

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