Tabela-resumo
1. Execução preguiçosa vs imediata
pandas (Execução imediata)
DataStore (preguiçoso)
Por que isso importa
- Otimização de consultas: 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 origem
- Eficiência no uso de memória: não carregue dados desnecessários
2. Tipos de retorno
pandas
DataStore
Convertendo para os tipos do pandas
3. Gatilhos de execução
Operações que permanecem preguiçosas
4. Ordem das linhas
pandas
DataStore
rowNumberInAllBlocks()) para garantir que a ordem permaneça consistente com o 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 o uso explícito de
sort()ousort_values() - Operações que definem a ordem (
nlargest(),nsmallest(),head(),tail())
Quando a ordem pode variar
- Após agregações
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 o parâmetro inplace
pandas
DataStore
inplace=True não é suportado. Sempre atribua o resultado:
Por que não inplace?
- Construção de consultas (lazy evaluation)
- Segurança em ambientes multithread
- Depuração facilitada
- Código mais limpo
6. Suporte a índices
pandas
DataStore
A origem do DataStore faz diferença
- Origem DataFrame: preserva o índice do pandas
- Origem File: usa um índice inteiro simples
7. Comportamento das comparações
Comparação com o pandas
Como usar equals()
8. Inferência de tipos
pandas
DataStore
Conversão de tipo explícita
9. Modelo de memória
pandas
DataStore
10. Mensagens de erro
Diferentes fontes de erros
- 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