uniqCombined64
uniqCombined, mas usa um hash de 64 bits para todos os tipos de dados, em vez de apenas para o tipo de dado String.
Esta função fornece o resultado de forma determinística (não depende da ordem de processamento da consulta).
Como usa hash de 64 bits para todos os tipos, o resultado não apresenta erro muito alto para cardinalidades significativamente maiores que
UINT_MAX, como acontece com uniqCombined, que usa um hash de 32 bits para tipos que não são String.- Consome várias vezes menos memória
- Calcula com precisão várias vezes maior
Detalhes de implementação
Detalhes de implementação
Esta função calcula um hash de 64 bits para todos os tipos de dados de todos os parâmetros da agregação e, em seguida, o usa nos cálculos.
Ela usa uma combinação de três algoritmos: array, tabela hash e HyperLogLog com uma tabela de correção de erros:
- Para um pequeno número de elementos distintos, usa-se um array
- Quando o tamanho do conjunto é maior, usa-se uma tabela hash
- Para um número maior de elementos, usa-se HyperLogLog, que ocupará uma quantidade fixa de memória
HLL_precision— Opcional. O logaritmo de base 2 do número de células no HyperLogLog. O valor padrão é 17, o que equivale, na prática, a 96 KiB de espaço (2^17 células, 6 bits cada). Intervalo: [12, 20].UInt8
x— Um número variável de argumentos.Tuple(T)ouArray(T)ouDateouDateTimeouStringou(U)Int*ouFloat*ouDecimal
UInt64
Exemplos
Exemplo com grande volume de dados
Query
Response
Query
Response