SummingMergeTree, o ClickHouse substitui todas as linhas com a mesma chave primária (ou, mais precisamente, com a mesma chave de ordenação) por uma única linha contendo os valores somados das colunas com tipo de dado numérico. Se a chave de ordenação for composta de modo que um único valor de chave corresponda a um grande número de linhas, isso reduz significativamente o volume de armazenamento e acelera a seleção de dados.
Recomendamos usar esse motor em conjunto com MergeTree. Armazene os dados completos em uma tabela MergeTree e use SummingMergeTree para armazenar dados agregados, por exemplo, na preparação de relatórios. Essa abordagem evita a perda de dados valiosos devido a uma chave primária composta incorretamente.
Criar uma tabela
Parâmetros do SummingMergeTree
Colunas
columns - uma tupla com os nomes das colunas cujos valores serão somados. Parâmetro opcional.
As colunas devem ser de tipo numérico e não devem estar na partição nem na chave de ordenação.
Se columns não for especificado, o ClickHouse soma os valores de todas as colunas com tipo de dado numérico que não estejam na chave de ordenação.
Cláusulas de consulta
SummingMergeTree, são necessárias as mesmas cláusulas exigidas na criação de uma tabela MergeTree.
Exemplo de uso
sum e a cláusula GROUP BY na consulta.
Processamento de dados
GROUP BY no (SELECT), conforme descrito no exemplo acima.
Regras comuns de soma
columns.
Se os valores forem 0 em todas as colunas de soma, a linha será excluída.
Se uma coluna não fizer parte da chave primária e não for somada, um valor arbitrário será selecionado entre os existentes.
Os valores não são somados nas colunas da chave primária.
A soma nas colunas do tipo AggregateFunction
Estruturas aninhadas
Map e ela contém pelo menos duas colunas que atendem aos seguintes critérios:
- a primeira coluna é numérica
(*Int*, Date, DateTime)ou uma string(String, FixedString), vamos chamá-la dekey, - as outras colunas são aritméticas
(*Int*, Float32/64), vamos chamá-las de(values...),
key => (values...) e, ao mesclar suas linhas, os elementos de dois conjuntos de dados são mesclados por key, somando os (values...) correspondentes.
Exemplos:
Map.
Para estruturas de dados aninhadas, não é necessário especificar suas colunas na tupla de colunas usada para a soma.