-
Notifications
You must be signed in to change notification settings - Fork 0
clean.read.columns non deve aggiungere automaticamente __extra #7
Description
Problema
Quando clean.read.columns e' esplicito, il reader CSV aggiunge automaticamente una colonna __extra.
Questo rompe casi reali a schema fisso, perche' DuckDB riceve uno schema con una colonna in piu' rispetto a quelle effettivamente presenti nel file e fallisce in fase di sniff/parsing.
Come riprodurlo
- Configurare un dataset CLEAN con:
auto_detect: falsecolumnsesplicito- file CSV a schema fisso
- Eseguire
run allovalidate all - Osservare il fallimento del reader con mismatch tra colonne dichiarate e colonne trovate
Casi reali che lo hanno mostrato
stress-local/cases/case_03_siope_no_header_schemastress-local/cases/case_08_pnrr_progetti_m1
Comportamento osservato
Il reader costruisce uno schema effettivo con una colonna aggiuntiva __extra, anche se l'utente ha gia' dichiarato in modo esplicito tutte le colonne desiderate.
DuckDB fallisce con errori del tipo:
- mismatch tra colonne configurate e colonne trovate
- fallimento in sniff/parsing su file sporchi o a schema fisso
Comportamento atteso
Se clean.read.columns e' esplicito, il reader deve usare esattamente quelle colonne, senza iniettarne altre implicitamente.
Eventuali colonne extra o righe sporche vanno gestite con:
null_paddingignore_errors- schema esplicito corretto
ma non tramite una colonna implicita non richiesta.
Impatto
- rompe casi reali no-header a schema fisso
- rende ambiguo il contract di
clean.read.columns - complica il debug dei dataset sporchi
Fix proposto
Rimuovere l'iniezione automatica di __extra in toolkit/clean/duckdb_read.py quando columns e' gia' fornito.
Verifica
Test aggiunti:
- mantenere invariato
params_used["columns"]quando lo schema e' esplicito - leggere correttamente un CSV no-header a 5 colonne senza aggiungere colonne implicite
Verifica locale eseguita:
py -m pytest tests/test_clean_duckdb_read.py tests/test_clean_csv_columns.py tests/test_clean_input_selection.py -qEsito:
26 passed
Metadata
Metadata
Assignees
Labels
Type
Projects
Status