Les fonctions HyperLogLog++ sont des fonctions d'agrégation approximatives. Lorsque le volume de données est important, elles permettent de dédupliquer rapidement les données en utilisant une faible quantité de mémoire, ce qui accélère les requêtes. Cette rubrique décrit les fonctions HyperLogLog++.
Contexte
HyperLogLog (HLL) est un algorithme de déduplication approximative efficace. Il convient aux scénarios ne nécessitant pas une haute précision, tels que les statistiques de pages vues (PV) et de visiteurs uniques (UV), et peut servir d'alternative légère à COUNT(DISTINCT). Contrairement aux méthodes de déduplication exacte comme Bitmap, HLL utilise en interne une structure de données de taille fixe (sketch). Ainsi, son utilisation de la mémoire n'augmente pas avec le volume de données. Lors de l'arrivée de nouvelles données, un seul calcul de hachage est nécessaire. Pour les grands volumes de données, l'erreur de déduplication de HLL est généralement inférieure ou égale à 1 %, offrant un bon compromis entre efficacité et utilisabilité.
Pour répondre aux besoins basiques de déduplication approximative, MaxCompute propose la fonction d'agrégation APPROX_DISTINCT. Avec la diversification croissante des scénarios métier, de nombreux utilisateurs souhaitent non seulement obtenir le résultat final de la déduplication, mais aussi stocker ou réutiliser les structures de données intermédiaires (sketches). Pour répondre à cette demande, MaxCompute prend désormais en charge un ensemble complet de fonctions HyperLogLog++ et a optimisé l'algorithme sous-jacent. Cela réduit l'utilisation de la mémoire tout en améliorant encore la précision de l'estimation, offrant ainsi un meilleur support pour les scénarios d'analyse complexes.
Voici deux scénarios typiques d'utilisation de HLL :
Scénarios nécessitant des requêtes répétées selon la dimension temporelle : en persistant le sketch HLL généré quotidiennement, les calculs ultérieurs ne doivent traiter que les nouvelles données du jour actuel et les fusionner avec le sketch historique. Il n'est pas nécessaire de scanner à nouveau l'intégralité des données historiques, ce qui améliore considérablement l'efficacité des requêtes.
Scénarios nécessitant une déduplication conjointe de plusieurs colonnes du même type : vous pouvez construire et conserver des sketches correspondants pour chaque colonne, puis effectuer directement des opérations de fusion au niveau des sketches. Cela permet une réutilisation efficace des résultats de déduplication et réduit significativement la charge de calcul.
Liste des fonctions
MaxCompute SQL prend en charge les fonctions HyperLogLog++ suivantes.
|
Fonction |
Description |
|
Agrège des valeurs du même type dans un nouveau sketch HLL++. |
|
|
Fusionne plusieurs sketches HLL++ du même type de stockage dans un nouveau sketch. |
|
|
Calcule l'estimation de la cardinalité à partir d'un sketch HLL++. |
|
|
Fusionne plusieurs sketches HLL++ du même type de stockage dans un nouveau sketch et renvoie l'estimation de la cardinalité du sketch fusionné. |
Remarques
Les données BINARY utilisées par les fonctions HLL_COUNT_EXTRACT, HLL_COUNT_MERGE et HLL_COUNT_MERGE_PARTIAL doivent provenir de la fonction HLL_COUNT_INIT et ne peuvent pas provenir d'autres systèmes ou d'autres méthodes.