- Categorias:
Funções de agregação (Estimativa de cardinalidade) , Funções de janela
APPROX_COUNT_DISTINCT¶
Utiliza HyperLogLog para retornar uma aproximação da cardinalidade distinta da entrada (isto é, HLL(col1, col2, ... )
devolve uma aproximação de COUNT(DISTINCT col1, col2, ... )
).
Para obter mais informações sobre HyperLogLog, consulte Estimativa do número de valores distintos.
- Aliases:
HLL.
- Consulte também:
Sintaxe¶
Função de agregação
APPROX_COUNT_DISTINCT( [ DISTINCT ] <expr1> [ , ... ] )
APPROX_COUNT_DISTINCT(*)
Função de janela
APPROX_COUNT_DISTINCT( [ DISTINCT ] <expr1> [ , ... ] ) OVER ( [ PARTITION BY <expr2> ] )
APPROX_COUNT_DISTINCT(*) OVER ( [ PARTITION BY <expr2> ] )
Argumentos¶
expr1
Esta é a expressão pela qual você quer saber o número de valores distintos.
expr2
Esta é a expressão opcional usada para agrupar linhas em partições.
Retornos¶
O tipo de dados do valor retornado é INTEGER.
Notas de uso¶
Embora o cálculo seja aproximado, ele é determinante. Quando esta função é chamada com os mesmos dados de entrada, esta função retorna os mesmos resultados.
Para obter mais informações sobre valores NULL e funções agregadas, consulte Funções de agregação e valores NULL.
Quando usado como uma função de janela:
Esta função não oferece suporte para:
Subcláusula ORDER BY na cláusula OVER().
Quadros de janela.
Exemplos¶
Este exemplo mostra como usar APPROX_COUNT_DISTINCT e seu alias HLL. Este exemplo chama tanto COUNT(DISTINCT i)
quanto APPROX_COUNT_DISTINCT(i)
para enfatizar que essas duas funções nem sempre coincidem exatamente.
A saída exata da seguinte consulta pode variar porque APPROX_COUNT_DISTINCT() retorna uma aproximação, não um valor exato.
SELECT COUNT(i), COUNT(DISTINCT i), APPROX_COUNT_DISTINCT(i), HLL(i) FROM sequence_demo; +----------+-------------------+--------------------------+--------+ | COUNT(I) | COUNT(DISTINCT I) | APPROX_COUNT_DISTINCT(I) | HLL(I) | |----------+-------------------+--------------------------+--------| | 1024 | 1024 | 1007 | 1007 | +----------+-------------------+--------------------------+--------+