APPROX_COUNT_DISTINCT |
Compteur d'approximatif distinct |
| SQL Server |
Microsoft SQL Server |
Syntaxe
|
APPROX_COUNT_DISTINCT(expression)
|
Paramètres
| Nom |
Description |
| expression |
Ce paramètre permet d'indiquer une colonne ou une expression scalaire dont on veut compter les valeurs distinctes. |
Description
Cette fonction permet de retourner le nombre approximatif de valeurs uniques non NULL dans un groupe.
Remarques
- Améliore significativement les performances pour les grands volumes de données : Contrairement à COUNT(DISTINCT ...), pouvant nécessiter un tri ou
une opération de hachage gourmande, APPROX_COUNT_DISTINCT() utilise un algorithme probabiliste (HyperLogLog). Cela permet d'obtenir une estimation rapide du nombre de
valeurs distinctes dans des ensembles très volumineux.
- Retourne un résultat approximatif avec une marge d'erreur faible : Le résultat retourné n'est pas exact, mais l'erreur reste généralement inférieure à
2 % dans la majorité des cas. Ce compromis est acceptable pour les cas d'usage comme les rapports, la télémétrie ou les agrégations analytiques où la rapidité prime sur
la précision absolue.
- Idéale pour les requêtes analytiques sur de très larges tables : Dans un entrepôt de données, une simple requête avec COUNT(DISTINCT) peut devenir un
goulot d'étranglement. En remplaçant cette fonction par APPROX_COUNT_DISTINCT, on obtient des résultats en quelques secondes, même sur des milliards de lignes.
- Compatible avec les fonctions d'agrégation de groupe : Elle peut être utilisée avec GROUP BY pour estimer le nombre d'éléments distincts dans chaque
groupe. Cela permet d'analyser rapidement les tendances globales dans des ensembles de données segmentés, comme les visites uniques par région ou par produit.
- Moins coûteuse en mémoire et en CPU : L'algorithme sous-jacent de APPROX_COUNT_DISTINCT nécessite beaucoup moins de mémoire que l'algorithme
traditionnel. Cela réduit la pression sur le cache et améliore le parallélisme lors de l'exécution de la requête, surtout dans des environnements massivement
parallèles (MPP).
- Supportée uniquement à partir de SQL Server 2019 : Cette fonction est disponible depuis SQL Server 2019 (version 15.x). Si l'on tente de l'utiliser
sur une version antérieure, une erreur de syntaxe sera retournée. Il est donc essentiel de vérifier la compatibilité de la base de données avant d'intégrer cette fonction
dans une application.
- Utilisable dans les vues, procédures et requêtes en ligne : APPROX_COUNT_DISTINCT() s'intègre facilement dans des vues ou des STORED PROCEDURES. Elle
peut aussi être utilisée dans des tableaux de bord en temps réel où les performances priment sur la précision, comme dans Power BI connecté à SQL Server.
- Non destinée aux calculs réglementaires ou financiers précis : Puisqu'elle fournit une estimation, elle n'est pas adaptée aux situations nécessitant une
précision exacte, comme les calculs de facturation, d'audits ou de conformité. Dans ces cas-là, COUNT(DISTINCT ...) reste la référence obligatoire.
Dernière mise à jour : Mercredi, le 22 Septembre 2021