Avaliação preguiçosa
Exemplo: Lazy vs Imediato
Benefícios da avaliação preguiçosa
- Otimização de consultas: várias operações são compiladas em uma única consulta SQL otimizada
- Pushdown de filtros: os filtros são aplicados no nível da fonte de dados
- Poda de colunas: apenas as colunas necessárias são lidas
- Decisões adiadas: o mecanismo de execução pode ser escolhido em tempo de execução
- Inspeção do plano: você pode visualizar/depurar a consulta antes de executá-la
Gatilhos de execução
Gatilhos automáticos
Exemplos:
Operações que permanecem lazy
Exemplos:
Execução em três fases
Fase 1: Construção da consulta SQL (lazy)
Fase 2: Momento da execução
Fase 3: Operações com DataFrame (se houver)
Visualizando planos de execução
explain() para ver o que será executado:
Query
Response
verbose=True para obter mais detalhes:
Cache
Como o cache funciona
Invalidação do cache
Controle manual do cache
Combinando operações SQL e do Pandas
Operações compatíveis com SQL
filter(),where()select()groupby(),agg()sort(),orderby()limit(),offset()join(),union()distinct()- Operações em colunas (matemática, comparação, métodos de texto)
Operações exclusivas do Pandas
apply()com funções personalizadaspivot_table()com agregações complexasstack(),unstack()- Operações em DataFrames já executados
Pipelines híbridos
Seleção do mecanismo de execução
Modo Automático (Padrão)
Forçar o engine chDB
Forçar o engine do pandas
Implicações no desempenho
Bom: Filtrar logo no início
Ruim: filtrar tarde
Bom: selecione as colunas logo no início
Bom: deixe o SQL fazer o trabalho
Resumo de boas práticas
- Encadeie as operações antes de executar - Monte a consulta completa e só então a execute uma vez
- Filtre o quanto antes - Reduza os dados na origem
- Selecione apenas as colunas necessárias - A poda de colunas melhora o desempenho
- Use
explain()para entender a execução - Faça a depuração antes de executar - Deixe o SQL cuidar das agregações - O ClickHouse é otimizado para isso
- Fique atento aos gatilhos de execução - Evite execuções antecipadas acidentais
- Use o cache com critério - Entenda quando o cache é invalidado