Descrição
AggregateFunction e armazenado em uma tabela. Isso geralmente é feito por
meio de uma visão materializada.
Há dois combinadores de função de agregação
comumente usados com o tipo AggregateFunction:
- O combinador de função de agregação
-State, que, quando anexado ao nome de uma função de agregação, produz estados intermediáriosAggregateFunction. - O combinador de função de agregação
-Merge, usado para obter o resultado final de uma agregação a partir dos estados intermediários.
Sintaxe
aggregate_function_name- O nome de uma função de agregação. Se a função for paramétrica, seus parâmetros também deverão ser especificados.types_of_arguments- Os tipos dos argumentos da função de agregação.
Uso
Inserção de dados
AggregateFunction, você pode
usar INSERT SELECT com funções de agregação e o
combinador de funções de agregação
-State.
Por exemplo, para inserir dados em colunas do tipo AggregateFunction(uniq, UInt64) e
AggregateFunction(quantiles(0.5, 0.9), UInt64), use as seguintes
funções de agregação com combinadores.
uniq e quantiles, uniqState e quantilesState
(com o combinador -State anexado) retornam o estado, em vez do valor final.
Em outras palavras, elas retornam um valor do tipo AggregateFunction.
Nos resultados da consulta SELECT, valores do tipo AggregateFunction têm
representações binárias específicas da implementação em todos os formatos de saída
do ClickHouse.
Há uma configuração especial no nível da sessão, aggregate_function_input_format, que permite construir o estado a partir dos valores de entrada.
Ela oferece suporte aos seguintes formatos:
state- string binária com o estado serializado (o padrão). Se você exportar dados para, por exemplo, o formatoTabSeparatedcom uma consultaSELECT, esse dump poderá ser carregado novamente usando a consultaINSERT.value- o formato esperará um único valor do argumento da função de agregação ou, no caso de vários argumentos, uma tupla deles; isso será desserializado para formar o estado correspondentearray- o formato esperará um Array de valores, conforme descrito na opçãovalueacima; todos os elementos do array serão agregados para formar o estado
Seleção de dados
AggregatingMergeTree, use a cláusula GROUP BY
e as mesmas funções de agregação usadas na inserção dos dados, mas com o
combinador -Merge.
Uma função de agregação com o combinador -Merge adicionado recebe um conjunto de
estados, combina esses estados e retorna o resultado da agregação completa dos dados.
Por exemplo, as duas consultas a seguir retornam o mesmo resultado:
Exemplo de uso
- Blog: Como usar combinadores de agregação no ClickHouse
- MergeState combinador.
- State combinador.