Tabela resumida
1. Execução lazy vs imediata
pandas (Execução imediata)
DataStore (Lazy)
Por que isso importa
- Otimização de consulta: várias operações são compiladas em uma única consulta SQL
- Poda de colunas: apenas as colunas necessárias são lidas
- Pushdown de filtros: os filtros são aplicados na fonte
- Eficiência no uso de memória: não carrega dados desnecessários
2. Tipos de retorno
pandas
DataStore
Convertendo para os tipos do pandas
3. Gatilhos de execução
Operações que permanecem lazy
4. Ordem das linhas
pandas
DataStore
rowNumberInAllBlocks()) para garantir a consistência da ordem em relação ao pandas.
Quando a ordem é preservada
- Fontes de arquivo (CSV, Parquet, JSON etc.)
- Fontes de DataFrame do pandas
- Operações de filtro
- Seleção de colunas
- Após
sort()ousort_values()executados explicitamente - Operações que definem a ordem (
nlargest(),nsmallest(),head(),tail())
Quando a ordem pode variar
- Após agregações com
groupby()(usesort_values()para garantir uma ordem consistente) - Após
merge()/join()com determinados tipos de join - No modo de desempenho (
config.use_performance_mode()): a ordem das linhas não é garantida em nenhuma operação. Veja Modo de desempenho.
5. Sem parâmetro inplace
pandas
DataStore
inplace=True não é suportado. Sempre atribua o resultado:
Por que não existe inplace?
- Construção de consultas (avaliação lazy)
- Segurança entre threads
- Depuração mais fácil
- Código mais limpo
6. Suporte a índices
pandas
DataStore
A fonte do DataStore faz diferença
- Fonte DataFrame: Preserva o índice do pandas
- Fonte File: Usa um índice inteiro simples
7. Comportamento das comparações
Comparando com o pandas
Como usar equals()
8. Inferência de tipos
pandas
DataStore
Conversão explícita de tipo
9. Modelo de memória
pandas
DataStore
10. Mensagens de erro
Diferentes Fontes de Erro
- erros do pandas: Da biblioteca pandas
- erros do DataStore: Do chDB ou do ClickHouse
Dicas de depuração
Checklist de migração
- Altere a instrução de importação
- Remova os parâmetros
inplace=True - Adicione
to_df()explicitamente onde um DataFrame do pandas for necessário - Adicione ordenação se a ordem das linhas for importante
- Use
to_pandas()em testes de comparação - Teste com volumes de dados representativos