- 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 :
Syntaxe¶
DATASKETCHES_HLL_ACCUMULATE( [ DISTINCT ] <expr> [ , <max_log_k> ] )
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);
SELECT DATASKETCHES_HLL_ACCUMULATE(TO_BINARY(HEX_ENCODE(1), 'HEX'));
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;
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;
+---+------------------------------------------+
| G | ACCUMULATED_SKETCHES |
|---+------------------------------------------|
| 1 | 0201070C030802002BF2FB06862FF90D |
| 2 | 0201070C030803002BF2FB0681BC5D067B65E608 |
+---+------------------------------------------+