Saltar al contenido principal
ClickHouse ofrece varios métodos para trabajar con series temporales, que permiten agregar, agrupar y analizar puntos de datos en distintos períodos de tiempo. Esta sección abarca las operaciones fundamentales que se usan habitualmente al trabajar con datos temporales. Entre las operaciones más comunes se incluyen agrupar datos por intervalos de tiempo, gestionar huecos en las series temporales y calcular cambios entre distintos períodos de tiempo. Estas operaciones pueden realizarse con sintaxis SQL estándar combinada con las funciones temporales integradas de ClickHouse. Vamos a explorar las capacidades de consulta para series temporales de ClickHouse con el conjunto de datos Wikistat (datos de vistas de páginas de Wikipedia):
Vamos a llenar esta tabla con 1.000 millones de registros:

Agregación por intervalos de tiempo

Lo más habitual es agregar los datos por períodos; por ejemplo, obtener la cantidad total de hits de cada día:
Aquí hemos usado la función toDate(), que convierte la hora especificada en un tipo de fecha. Como alternativa, podemos agrupar en intervalos de una hora y filtrar por una fecha concreta:
La función toStartOfHour() que se utiliza aquí convierte la hora indicada al inicio de la hora. También puedes agrupar por año, trimestre, mes o día.

Intervalos de agrupación personalizados

Incluso podemos agrupar por intervalos arbitrarios, por ejemplo, de 5 minutos, usando la función toStartOfInterval(). Supongamos que queremos agrupar por intervalos de 4 horas. Podemos especificar el intervalo de agrupación mediante la cláusula INTERVAL:
O bien, podemos usar la función toIntervalHour()
En cualquier caso, obtenemos los siguientes resultados:

Rellenar grupos vacíos

En muchos casos trabajamos con datos dispersos y con algunos intervalos ausentes. Esto da lugar a intervalos vacíos. Veamos el siguiente ejemplo, en el que agrupamos los datos en intervalos de 1 hora. Esto generará las siguientes estadísticas, con valores faltantes en algunas horas:
ClickHouse proporciona el modificador WITH FILL para solucionar esto. Esto rellenará con ceros todas las horas vacías, para que podamos entender mejor la distribución a lo largo del tiempo:

Ventanas de tiempo deslizantes

A veces, no queremos trabajar con el inicio de los intervalos (como el comienzo de un día o de una hora), sino con ventanas de tiempo. Supongamos que queremos conocer el total de hits de una ventana, no en función de los días, sino de un período de 24 horas desplazado desde las 6 p. m. Podemos usar la función date_diff() para calcular la diferencia entre una hora de referencia y la hora de cada registro. En este caso, la columna day representará la diferencia en días (p. ej., hace 1 día, hace 2 días, etc.):
Última modificación el 10 de junio de 2026