Materialize — trazendo dados para a memória¶
cs.materialize(rel) é o comando explícito de fim de pipeline quando o destino
é a RAM. Ele aceita qualquer DuckDBPyRelation — independente de quantas
etapas lazy foram encadeadas — e devolve o formato solicitado.
Sintaxe¶
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
rel |
DuckDBPyRelation |
— | Relação lazy a materializar |
how |
str |
"auto" |
Formato de saída (ver tabela abaixo) |
quiet |
bool |
False |
Suprime alertas de tamanho |
Formatos de saída¶
how |
Tipo retornado | Dependência extra | Notas |
|---|---|---|---|
"auto" |
GeoDataFrame ou DataFrame |
— | Auto-detecta geometry_wkt |
"pandas" |
pandas.DataFrame |
— | Sempre disponível |
"geopandas" |
geopandas.GeoDataFrame |
pip install climasus4py[spatial] |
Exige coluna geometry_wkt |
"polars" |
polars.DataFrame |
pip install climasus4py[polars] |
Via Arrow |
"pyarrow" |
pyarrow.Table |
— | Sempre disponível |
Exemplos¶
Alertas de tamanho¶
Por padrão, materialize emite um UserWarning quando a relação tem muitas
linhas, orientando o usuário a usar sus_export para evitar esgotamento de
memória:
| Linhas | Nível de alerta |
|---|---|
| < 100.000 | Silencioso |
| 100.000 – 999.999 | Nota informativa |
| 1.000.000 – 9.999.999 | Warning com sugestão de sus_export |
| ≥ 10.000.000 | Warning forte de risco de OOM |
Para suprimir os alertas quando a materialização é intencional:
Quando usar sus_export em vez de materialize¶
Use sus_export quando:
- O dataset tem mais de 1 milhão de linhas.
- O destino é um arquivo (ETL, pipeline de dados).
- Você não precisa manipular os dados em memória.
cs.sus_export(rel, "saida/sim_sp_2023.parquet") # Parquet
cs.sus_export(rel, "saida/sim_sp_2023.csv") # CSV
sus_export nunca coleta dados em pandas — usa streaming DuckDB direto
para disco.
auto — detecção de formato¶
how="auto" inspeciona as colunas da relação:
- Se houver
geometry_wkt→ retornageopandas.GeoDataFrame(CRS: EPSG:4674) - Caso contrário → retorna
pandas.DataFrame