Les fonctions HyperLogLog sont des fonctions d'agrégation approximatives, similaires à approx_distinct. Elles renvoient rapidement des résultats estimés lors de l'analyse de grands ensembles de données.
Les fonctions HyperLogLog suivantes sont disponibles.
Si vous souhaitez utiliser des chaînes de caractères dans les instructions d'analyse, entourez-les de guillemets simples (''). Les chaînes non entourées de guillemets ou entourées de guillemets doubles ("") indiquent des noms de champ ou de colonne. Par exemple,
'status'
indique la chaîne de caractères « status », tandis que
status
ou
"status"
indique le champ de journal « status ».
|
Fonction |
Syntaxe |
Description |
Prise en charge SQL |
Prise en charge SPL |
|
approx_set(x) |
Estime le nombre de valeurs distinctes dans x. L'erreur standard maximale par défaut est de 0,01625. |
√ |
× |
|
|
cardinality(x) |
Convertit une valeur HyperLogLog en valeur bigint. |
√ |
× |
|
|
empty_approx_set() |
Renvoie un ensemble HyperLogLog vide. L'erreur standard maximale par défaut est de 0,01625. |
√ |
× |
|
|
merge(x) |
Fusionne plusieurs ensembles HyperLogLog en un seul ensemble. |
√ |
× |
Fonction approx_set
La fonction approx_set estime le nombre de valeurs distinctes dans x. L'erreur standard maximale par défaut est de 0,01625.
Syntaxe
approx_set(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une expression de n'importe quel type de données. |
Type de valeur de retour
HyperLogLog
Exemples
Estimez les visiteurs uniques (UV) par minute pour un site web. Le résultat est au format HyperLogLog.
-
Instruction de requête et d'analyse
* | SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM website_log GROUP BY Time ORDER BY Time Résultats de la requête et de l'analyse : Renvoie
Time(horodatage tronqué à la minute) etUV(ensemble approximatif encodé issu deapprox_set). Total : 16 enregistrements.
Fonction cardinality
La fonction cardinality convertit une valeur HyperLogLog en valeur bigint.
Syntaxe
cardinality(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une expression HyperLogLog. |
Type de valeur de retour
bigint
Exemples
Utilisez approx_set pour estimer les UV par minute (renvoie une valeur HyperLogLog), puis cardinality pour convertir cette valeur en bigint.
-
Instruction de requête et d'analyse
* | SELECT Time, cardinality(UV) AS UV FROM ( SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM website_log GROUP BY Time ORDER BY Time ) AS UV Les résultats affichent le nombre d'UV par minute dans les colonnes Time et UV. Par exemple, 78 UV à 2021-09-09 15:12:00 et 561 à 15:13:00.
Fonction empty_approx_set
La fonction empty_approx_set renvoie un ensemble HyperLogLog vide. L'erreur standard maximale par défaut est de 0,01625.
Syntaxe
empty_approx_set()
Type de valeur de retour
HyperLogLog
Exemples
Renvoie un ensemble HyperLogLog vide.
-
Instruction de requête et d'analyse
* | SELECT empty_approx_set() Renvoie une seule colonne
_col0avec la valeurAgwAAA==, qui correspond à un ensemble approximatif vide encodé en Base64.
Fonction merge
La fonction merge agrège plusieurs ensembles HyperLogLog en un seul ensemble.
Syntaxe
merge(x)
Paramètres
|
Paramètre |
Description |
|
x |
Une expression HyperLogLog. |
Type de valeur de retour
HyperLogLog
Exemples
Utilisez approx_set pour estimer les UV par minute, merge pour agréger les ensembles d'UV, et cardinality pour convertir la valeur finale en bigint.
-
Instruction de requête et d'analyse
* | SELECT Time, cardinality(UV) AS UV, cardinality(merge(UV) over()) AS Total_UV FROM ( SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM log GROUP BY Time ORDER BY Time ) Résultats de la requête et de l'analyse : Le nombre d'UV par minute varie (561, 658, 625), tandis que Total_UV affiche le total cumulé (8564) sur toutes les lignes.