Il problema generale è un'intera sottozona di programmazione chiamata pulizia dei dati che fa parte di una sottozona più ampia chiamata integrazione dei dati . Evitare questo tipo di problemi è probabilmente una grande parte del motivo della migrazione dai fogli di Excel e perché lo sviluppatore senior non vuole consentire che un campo diventi nulla. Non credo sia irragionevole affermare che questa è una delle maggiori fonti di complessità nelle migrazioni dei dati.
Scegliere semplicemente di utilizzare NULL ogni volta che è possibile è probabilmente la cosa sbagliata , per non parlare della modifica del modello di dati per rendere ancora più nulli i campi. Excel ha un controllo di integrità debole o assente che è probabilmente la causa di molti di questi problemi. La cosa sbagliata da fare è rimuovere il controllo di integrità nel nuovo database e scaricare la spazzatura in esso. Ciò perpetua il problema e aggiunge una notevole complessità alle integrazioni future che devono in qualche modo occuparsi di dati senza senso.
Parte della differenza è probabilmente dovuta alla mancata corrispondenza del modello di dati. Affrontare questo è in gran parte una questione di familiarità (intima) con entrambi i modelli di dati e sapere come mappare quello vecchio a quello nuovo. Finché il nuovo è in grado di catturare quello vecchio. (In caso contrario, è probabile che il tuo team abbia un grosso problema.) Ciò può facilmente richiedere più lavoro rispetto alla semplice copia di colonne. Darkwing fornisce un eccellente esempio di questo (oltre al perché l'inserimento cieco di NULL è la cosa sbagliata da fare). Elaborandolo, se il vecchio modello aveva un ReceivedDate
e un InProgress
po 'e il nuovo modello ha un StartDate
e ProcessingEndTime
, dovrai decidere se e come impostare il ProcessingEndTime
. A seconda di come viene utilizzato, una scelta ragionevole (ma arbitraria) potrebbe essere quella di impostarla come la stessaStartDate
(o poco dopo se ciò potrebbe causare problemi).
Tuttavia, una parte della differenza è probabilmente dovuta ai dati che "dovrebbero" essere mancanti o danneggiati. (Molto probabilmente a causa di errori di immissione dei dati o migrazioni passate o bug scarsamente gestiti nei sistemi di elaborazione dei dati.) Se nessuno nel tuo team lo ha anticipato, allora (collettivamente) ti sei impegnato a spendere il 20% del tempo del progetto " quasi fatto. (Era un numero inventato, ma può essere lontanopeggio di così, o meglio. Dipende da quanti dati non sono corretti, da quanto è importante, da quanto sia complessa, da quanto sia facile ottenere il coinvolgimento dei responsabili dei dati e da altri fattori.) Una volta stabilito che i dati "dovrebbero essere "lì ma manca. Di solito tenterai di determinare l'entità del problema interrogando le vecchie origini dati. Se si tratta di dozzine o centinaia di voci, allora probabilmente sono errori di immissione dei dati e i clienti responsabili dei dati dovrebbero risolverli manualmente (cioè dirti quali dovrebbero essere i valori.) Se sono milioni di voci (o una frazione significativa dei dati) , potrebbe essere necessario riconsiderare se hai correttamente identificato che "dovrebbe essere" lì. Ciò potrebbe indicare un errore di modellazione nel nuovo sistema.
Ad esempio, immagina una fattura con quantità e totali per articolo (ma non prezzo unitario), tranne per il fatto che alcune delle quantità erano inspiegabilmente mancanti. Parlare con la persona che elabora tali fatture potrebbe produrre uno (o più) dei seguenti scenari: 1) "oh, una quantità vuota significa una quantità di 1", 2) "oh, so che quegli articoli costano circa $ 1.000, quindi chiaramente questo è un ordine per 2 ", 3)" quando ciò accade, io cerco il prezzo in questo altro sistema e lo divido e giro ", 4)" lo cerco in un altro sistema ", 5)" non sono dati reali ", 6)" mai visto prima ".
Come suggerito, questo può indicare alcuni modi per risolvere automaticamente la situazione, ma devi stare attento che la soluzione si applichi a tutti i casi. È comune coinvolgere altri sistemi che possono effettuare controlli incrociati dei dati, e questa è una buona cosa. Tuttavia, spesso è una cosa negativa in quanto può essere difficile ottenere l'accesso e integrarsi con questi sistemi per eseguire il controllo incrociato, e spesso viene alla luce che i sistemi sono in conflitto tra loro non solo perché mancano alcuni dati. Spesso è necessario un intervento manuale e, a seconda della scala, potrebbe essere necessario creare strumenti e interfacce specificamente per l'attività di pulizia dei dati. Spesso ciò che viene fatto è che i dati vengono parzialmente importati ma le righe con dati mancanti vengono inviate a una tabella separata dove possono essere riviste.