Optimización de Consultas
El Analytics Warehouse corre sobre ClickHouse, una base de datos columnar. Las consultas se comportan distinto que en una base de datos relacional tradicional — unos pocos hábitos las hacen dramáticamente más rápidas.Principios clave
1. Filtra siempre por fecha
Los datos están organizados físicamente por tiempo. Un filtro de fecha le permite a ClickHouse saltarse bloques enteros de historia sin leerlos — y como el warehouse ahora sirve historia completa (no solo 3 meses), los filtros de fecha importan más que nunca. Cada tabla tiene una columna de tiempo principal por la cual filtrar:2. No necesitas filtrar por company_id
Tu usuario tiene una row policy que filtra por tu empresa automáticamente, y los datos están ordenados primero por empresa — todas las consultas se benefician de esto sin que agregues nada.3. Selecciona solo las columnas que necesitas
ClickHouse lee únicamente las columnas que mencionas. Esto importa sobre todo en las columnas de texto anchas (text, content, ai_automator_instructions): dejarlas fuera de un SELECT puede reducir el costo de una consulta en un orden de magnitud.
4. Agrega en la base de datos, no en tu herramienta
Trae respuestas, no filas crudas. UnGROUP BY sobre millones de filas responde en bastante menos de un segundo; descargar esos millones de filas a una herramienta de BI, no.
5. Usa los agregados diarios cuando encajen
fact_campaign_daily y fact_agent_daily precalculan las métricas de dashboard más comunes. Un dashboard sobre un agregado lee miles de filas en lugar de millones.
6. Usa LIMIT cuando explores
Consejos para JOINs
- Une por ids, no por nombres:
session_id,agent_conversation_id,hsm_id— los nombres son para mostrar. - Pon la tabla pequeña en el lado derecho del JOIN — ClickHouse carga el lado derecho en memoria. Las dimensiones siempre son pequeñas; unir dos tablas de hechos grandes funciona mejor cuando ambos lados traen un filtro de fecha.
- Incluye
company_iden la clave del join al unir hechos con dimensiones (como hacen los ejemplos de esta documentación).
Límites del sistema
Tu usuario corre con límites de protección que mantienen la plataforma estable para todos:
Si un límite cancela una consulta:
- Agrega o ajusta el filtro de fecha (la solución en casi todos los casos)
- Elimina columnas innecesarias — especialmente las columnas de texto anchas
- Agrega con
GROUP BYen lugar de traer filas crudas - Divide las extracciones muy grandes en bloques de un mes (mira Sincronización Incremental para el patrón que evita las extracciones grandes por completo)