Otimização de Consultas
O Analytics Warehouse roda em ClickHouse, um banco de dados colunar. As queries se comportam de forma diferente de um banco de dados relacional tradicional — alguns hábitos as tornam dramaticamente mais rápidas.Princípios-chave
1. Sempre filtre por data
Os dados são organizados fisicamente por tempo. Um filtro de data permite que o ClickHouse pule blocos inteiros de histórico sem lê-los — e como o warehouse agora serve o histórico completo (não apenas 3 meses), os filtros de data importam mais do que nunca. Cada tabela tem uma coluna de tempo principal para filtrar:2. Você não precisa filtrar por company_id
Seu usuário tem uma row policy que filtra pela sua empresa automaticamente, e os dados são ordenados primeiro por empresa — todas as queries se beneficiam disso sem que você precise adicionar nada.3. Selecione apenas as colunas de que você precisa
O ClickHouse lê apenas as colunas que você menciona. Isso importa principalmente nas colunas de texto largas (text, content, ai_automator_instructions): deixá-las fora de um SELECT pode reduzir o custo de uma query em uma ordem de magnitude.
4. Agregue no banco de dados, não na sua ferramenta
Extraia respostas, não linhas brutas. UmGROUP BY sobre milhões de linhas retorna em bem menos de um segundo; baixar esses milhões de linhas para uma ferramenta de BI, não.
5. Use os resumos diários quando eles atenderem
fact_campaign_daily e fact_agent_daily pré-calculam as métricas de dashboard mais comuns. Um dashboard sobre um resumo diário lê milhares de linhas em vez de milhões.
6. Use LIMIT ao explorar
Dicas de JOIN
- Faça join por ids, não por nomes:
session_id,agent_conversation_id,hsm_id— os nomes são para exibição. - Coloque a tabela pequena do lado direito do JOIN — o ClickHouse carrega o lado direito na memória. As dimensões são sempre pequenas; o join entre duas tabelas de fatos grandes funciona melhor quando os dois lados carregam um filtro de data.
- Inclua
company_idna chave do join ao juntar fatos com dimensões (como fazem os exemplos desta documentação).
Limites do sistema
Seu usuário roda com limites de proteção que mantêm a plataforma estável para todos:
Se uma query for cancelada por um limite:
- Adicione ou restrinja o filtro de data (a solução em quase todos os casos)
- Remova colunas desnecessárias — especialmente colunas de texto largas
- Agregue com
GROUP BYem vez de extrair linhas brutas - Divida extrações muito grandes em blocos de um mês (veja Sincronização Incremental para o padrão que evita extrações grandes por completo)