Dati e fogli di calcolo · CSV Pulitore
Perché le stringhe vuote, NULL e i campi mancanti non sono la stessa cosa in CSV
· Perché è importante
csv json formati di dati
CSV non ha modo di dire "nessun valore"; ha solo testo. Questo post spiega come differiscono i campi vuoti, le stringhe vuote tra virgolette, il NULL letterale e le righe brevi, perché i caricatori non sono d'accordo su di essi e come la conversione in JSON forza la domanda.
La stessa cella vuota diventa NULL in un sistema e una stringa vuota in un altro: perché ciò cambia join, conteggi e medie
Le celle di origine dall'aspetto vuoto possono contenere diverse storie, ma ToolAcre'S JSON l'output li restringe deliberatamente a una rappresentazione. Un campo vuoto, un campo vuoto tra virgolette e una breve riga riempita dal parser diventano tutti la stringa vuota sotto una chiave presente. Dall'apparenza non si deduce nulla.
Quella coerenza è utile solo quando il consumatore lo sa. Il test del codice specifico per null non sostituirà il valore predefinito per "". Decidere il contratto con valori mancanti al limite di ricezione invece di presupporre che il convertitore abbia conservato le distinzioni che la sintassi CSV o il modello di analisi scelto non hanno mantenuto.
In ToolAcre, una cella vuota e una cella mancante riempita diventano entrambe stringhe vuote a meno che un consumatore non le reinterpreti
CSV può contenere due delimitatori senza nulla tra loro, una stringa vuota racchiusa esplicitamente tra virgolette, testo letterale come NULL o NA e una riga che termina prima della larghezza dell'intestazione. ToolAcre analizza i primi due come stringhe vuote e lascia intatti i token letterali come testo normale.
Per una riga breve, emette un avviso `RAGGED_ROW` e riempie le celle finali assenti con stringhe vuote. Per una riga lunga, mantiene le celle extra nella tabella, ma la conversione JSON non ha una chiave di intestazione per esse e le omette. Questa asimmetria è il motivo per cui l’allarme strutturale richiede un’azione prima della conversione.
Come i caricatori comuni li interpretano: le diverse impostazioni predefinite nei fogli di calcolo, nei database e nelle librerie di frame di dati
Diversi client di database e librerie di analisi espongono i propri token null configurabili e policy di campo vuoto. Questo repository non può stabilire tali valori predefiniti, quindi l'articolo non afferma che tutti i fogli di calcolo o caricatori siano d'accordo. Documenta l'implementazione di cui sono disponibili la fonte e i test.
Quando passi il file a un altro sistema, leggi le impostazioni dell'importatore e crea dispositivi per ``, `""`, NULL e una riga breve. Un contratto affidabile è dimostrato al confine effettivo. Il folklore generale su cosa significa normalmente "CSV" è troppo debole per i valori mancanti.
Le impostazioni predefinite del caricatore variano; questo articolo documenta ToolAcre anziché generalizzare il comportamento del foglio di calcolo o del database
Il testo NULL è particolarmente pericoloso perché può essere contenuto autentico o sentinella del mittente. ToolAcre non ha un elenco sentinella configurato e pertanto lo conserva come stringa di quattro caratteri "NULL". Lo stesso vale per NA, N/A, zero e qualsiasi altro token che un produttore potrebbe utilizzare.
Non sostituire globalmente tali stringhe senza una regola specifica per il campo. Una colonna di note potrebbe contenere legittimamente "NULL" e una colonna di codice potrebbe utilizzare NA. Risolvi il significato con la documentazione del produttore o uno schema, quindi trasforma solo le colonne appropriate in fase di revisione.
JSON ti fa decidere: null, stringa vuota e chiave assente sono tre cose diverse una volta convertito il file
JSON distingue null, una stringa vuota e una proprietà assente, ma ToolAcre sceglie le chiavi presenti con valori stringa per ogni colonna di intestazione. Le celle mancanti o riempite diventano "". Il convertitore non produce JSON null e non omette una chiave semplicemente perché una cella è vuota.
Una cella in surplus è diversa: senza intestazione corrispondente, non c'è chiave da assegnare, quindi è assente dagli oggetti generati. L'avviso di riga ti dice che la perdita è possibile. Correggi l'intestazione o la larghezza della riga prima del download anziché leggere l'assenza come una politica nulla significativa.
ToolAcre emette stringhe vuote e chiavi presenti, non chiavi nulle o assenti
Utilizza ID intestazioni, nota, codice e quattro record: `1,,A`, `2,"",NULL`, `3,hello` e `4,world,B,extra`. Le prime due note diventano corde vuote; il codice nella riga due rimane "NULL". La riga tre riceve il codice "" dopo il riempimento, mentre la riga quattro avverte che una cella aggiuntiva non ha chiave.
Gli oggetti risultanti portano visibilmente le stesse tre chiavi per le colonne rappresentate. Questo caso risolto è più informativo di uno screenshot di celle vuote perché collega gli avvisi di analisi alla forma JSON. Mostra anche perché i token letterali richiedono una decisione di dominio separata.
Ciò che questo non copre: imputazione e regole aziendali per il valore predefinito a cui dovrebbe corrispondere un valore mancante
L'imputazione è fuori dal percorso. Il convertitore non inserisce i prezzi mancanti, non copia i valori precedenti né deduce valori predefiniti dalle righe vicine. Tali modifiche dipendono dal significato aziendale e dovrebbero verificarsi dopo che uno schema distingue valori sconosciuti, inapplicabili e intenzionalmente vuoti.
Inoltre non preserva la distinzione sintattica tra un campo vuoto senza virgolette e `""`; entrambi analizzano la stessa stringa di cella. Se questa distinzione è importante, CSV non la sta portando attraverso il modello di tabella di questo parser. Scegli una rappresentazione con uno stato esplicito o conserva la fonte grezza insieme ai dati derivati.
Decidi cosa significa vuoto prima di caricare: in che modo la conversione ToolAcre CSV Cleaner da CSV-a-JSON rende visibile la rappresentazione
Decidere cosa significa lo spazio vuoto prima di caricare JSON nel codice digitato. ToolAcre fornisce una linea di base trasparente: valori di stringa ovunque, stringhe vuote per celle rappresentate mancanti, parole sentinella letterali invariate e avvisi in cui la forma della riga supera le chiavi disponibili.
Esaminare tali avvertimenti e documentare qualsiasi coercizione successiva. Un convertitore non può creare una semantica di valori mancanti dal solo testo, ma può evitare di nascondere le proprie scelte. Questo comportamento prevedibile rende il confine successivo responsabile della politica che è effettivamente qualificato a far rispettare.