Pular para o conteúdo principal
O ClickHouse oferece vários métodos para trabalhar com dados de séries temporais, permitindo agregar, agrupar e analisar pontos de dados em diferentes períodos de tempo. Esta seção aborda as operações fundamentais mais usadas ao trabalhar com dados temporais. As operações mais comuns incluem agrupar dados por intervalos de tempo, lidar com lacunas em dados de séries temporais e calcular variações entre períodos. Essas operações podem ser realizadas com a sintaxe SQL padrão combinada com as funções de tempo nativas do ClickHouse. Vamos explorar os recursos de consulta para séries temporais do ClickHouse com o conjunto de dados Wikistat (dados de visualizações de páginas da Wikipedia):
Vamos preencher esta tabela com 1 bilhão de registros:

Agregação por bucket de tempo

A necessidade mais comum é agregar os dados com base em períodos, por exemplo, obter o total de acessos de cada dia:
Usamos a função toDate() aqui, que converte o horário especificado para um tipo de data. Como alternativa, podemos agrupar em intervalos de uma hora e filtrar pela data específica:
A função toStartOfHour() usada aqui converte o horário especificado para o início da hora. Você também pode agrupar por ano, trimestre, mês ou dia.

Intervalos personalizados de agrupamento

Podemos até agrupar por intervalos arbitrários, por exemplo, de 5 minutos, usando a função toStartOfInterval(). Digamos que queremos agrupar em intervalos de 4 horas. Podemos especificar o intervalo de agrupamento usando a cláusula INTERVAL:
Ou podemos usar a função toIntervalHour()
De qualquer forma, obtemos os resultados a seguir:

Preenchendo grupos vazios

Em muitos casos, lidamos com dados esparsos, com alguns intervalos ausentes. Isso gera buckets vazios. Vamos considerar o exemplo a seguir, em que agrupamos os dados em intervalos de 1 hora. Isso produzirá as estatísticas a seguir, com algumas horas sem valores:
O ClickHouse fornece o modificador WITH FILL para lidar com isso. Ele preencherá todas as horas sem dados com zeros, para que possamos entender melhor a distribuição ao longo do tempo:

Janelas de tempo móveis

Às vezes, não queremos lidar com o início dos intervalos (como o início de um dia ou de uma hora), mas com intervalos de janela. Digamos que queremos entender o total de acessos em uma janela, não com base em dias, mas em um período de 24 horas com deslocamento a partir das 18h. Podemos usar a função date_diff() para calcular a diferença entre um horário de referência e o horário de cada registro. Nesse caso, a coluna day representará a diferença em dias (por exemplo, 1 dia atrás, 2 dias atrás etc.):
Última modificação em 19 de junho de 2026