As funções HyperLogLog são funções de agregação aproximada, semelhantes à approx_distinct. Elas retornam rapidamente resultados estimados na análise de grandes conjuntos de dados.
Estão disponíveis as seguintes funções HyperLogLog.
Para usar strings em instruções analíticas, coloque-as entre aspas simples (''). Strings sem aspas ou entre aspas duplas ("") indicam nomes de campos ou colunas. Por exemplo:
'status'
indica a string status, enquanto
status
ou
"status"
indica o campo de log status.
|
Função |
Sintaxe |
Descrição |
Suporte SQL |
Suporte SPL |
|
approx_set(x) |
Estima o número de valores distintos em x. O erro padrão máximo é 0,01625. |
√ |
× |
|
|
cardinality(x) |
Converte um valor HyperLogLog em um valor bigint. |
√ |
× |
|
|
empty_approx_set() |
Retorna um conjunto HyperLogLog vazio. O erro padrão máximo é 0,01625. |
√ |
× |
|
|
merge(x) |
Combina vários conjuntos HyperLogLog em um único conjunto. |
√ |
× |
Função approx_set
A função approx_set estima o número de valores distintos em x. O erro padrão máximo é 0,01625.
Syntax
approx_set(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Uma expressão de qualquer tipo de dado. |
Return value type
HyperLogLog
Examples
Estime os visitantes únicos (UVs) por minuto de um site. O resultado vem no formato HyperLogLog.
-
Instrução de consulta e análise
* | SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM website_log GROUP BY Time ORDER BY Time Resultados da consulta e análise: Retorna
Time(timestamp truncado ao minuto) eUV(conjunto aproximado codificado da funçãoapprox_set). Total: 16 registros.
Função cardinality
A função cardinality converte um valor HyperLogLog em um valor bigint.
Syntax
cardinality(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Uma expressão HyperLogLog. |
Return value type
bigint
Examples
Use approx_set para estimar os UVs por minuto (retorna um valor HyperLogLog) e, em seguida, use cardinality para converter esse valor em bigint.
-
Instrução de consulta e análise
* | SELECT Time, cardinality(UV) AS UV FROM ( SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM website_log GROUP BY Time ORDER BY Time ) AS UV Os resultados mostram as contagens de UV por minuto nas colunas Time e UV. Por exemplo, 78 UVs às 2021-09-09 15:12:00 e 561 às 15:13:00.
Função empty_approx_set
A função empty_approx_set retorna um conjunto HyperLogLog vazio. O erro padrão máximo é 0,01625.
Syntax
empty_approx_set()
Return value type
HyperLogLog
Examples
Retorna um conjunto HyperLogLog vazio.
-
Instrução de consulta e análise
* | SELECT empty_approx_set() Retorna uma única coluna
_col0com o valorAgwAAA==, que representa um conjunto aproximado vazio codificado em Base64.
Função merge
A função merge agrega vários conjuntos HyperLogLog em um único conjunto.
Syntax
merge(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Uma expressão HyperLogLog. |
Return value type
HyperLogLog
Examples
Use approx_set para estimar os UVs por minuto, merge para agregar os conjuntos de UV e cardinality para converter o valor final em bigint.
-
Instrução de consulta e análise
* | SELECT Time, cardinality(UV) AS UV, cardinality(merge(UV) over()) AS Total_UV FROM ( SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM log GROUP BY Time ORDER BY Time ) Resultados da consulta e análise: As contagens de UV por minuto variam (561, 658, 625), enquanto Total_UV exibe o total acumulado (8564) em todas as linhas.