uniqCombined
Comme cette fonction utilise un hachage sur 32 bits pour les types autres que
String, le résultat présentera une erreur très élevée pour des cardinalités nettement supérieures à UINT_MAX (l’erreur augmentera rapidement au-delà de quelques dizaines de milliards de valeurs distinctes).
Si les cardinalités dépassent UINT_MAX, vous devez utiliser uniqCombined64 à la place.- Consomme plusieurs fois moins de mémoire
- Offre une précision plusieurs fois supérieure
- Présente généralement des performances légèrement inférieures. Dans certains cas, uniqCombined peut être plus performant que uniq, par exemple avec des requêtes distribuées qui transmettent un grand nombre d’états d’agrégation sur le réseau
Détails d’implémentation
Détails d’implémentation
Cette fonction calcule un hachage (sur 64 bits pour
String, sinon sur 32 bits) pour tous les paramètres de l’agrégat, puis l’utilise dans les calculs.
Elle combine trois algorithmes : tableau, table de hachage et HyperLogLog avec une table de correction des erreurs :- Pour un petit nombre d’éléments distincts, un tableau est utilisé
- Lorsque la taille de l’ensemble augmente, une table de hachage est utilisée
- Pour un plus grand nombre d’éléments, HyperLogLog est utilisé, ce qui occupe une quantité fixe de mémoire
HLL_precision— Facultatif. Le logarithme en base 2 du nombre de cellules dans HyperLogLog. La valeur par défaut est 17, ce qui correspond en pratique à 96 KiB d’espace (2^17 cellules, 6 bits chacune). Plage : [12, 20].UInt8
x— Un nombre variable d’arguments.Tuple(T)ouArray(T)ouDateouDateTimeouStringou(U)Int*ouFloat*ouDecimal
UInt64
Exemples
Utilisation de base
Query
Response
Query
Response