Das allgemeine Problem ist ein ganzer Teilbereich der Programmierung, der als Datenbereinigung bezeichnet wird und Teil eines größeren Teilbereichs ist, der als Datenintegration bezeichnet wird . Das Vermeiden dieser Art von Problemen ist wahrscheinlich ein großer Teil des Grundes für die Migration von Excel-Tabellen und warum der Senior-Entwickler nicht zulassen möchte, dass ein Feld nullwertfähig wird. Ich halte es nicht für unangemessen zu sagen, dass dies eine der Hauptursachen für Komplexität bei Datenmigrationen ist.
Es ist wahrscheinlich sehr falsch , NULL zu verwenden, wann immer dies möglich ist , geschweige denn, das Datenmodell zu ändern, um noch mehr Felder nullfähig zu machen. Excel verfügt über eine schwache oder keine Integritätsprüfung, die wahrscheinlich die Ursache für viele dieser Probleme ist. Das Falsche ist, die Integritätsprüfung in der neuen Datenbank zu entfernen und den Müll hinein zu werfen. Dies verewigt nur das Problem und erhöht die Komplexität zukünftiger Integrationen, die auf irgendeine Weise mit unsinnigen Daten umgehen müssen.
Ein Teil des Unterschieds ist wahrscheinlich auf die Nichtübereinstimmung des Datenmodells zurückzuführen. Der Umgang mit diesem Problem besteht hauptsächlich darin, beide Datenmodelle (genau) zu kennen und zu wissen, wie man das alte auf das neue abbildet. Solange der neue ist für den Fang von den alten fähig. (Wenn nicht, hat Ihr Team wahrscheinlich ein sehr großes Problem.) Dies kann leicht mehr Arbeit erfordern als nur das Kopieren von Spalten. Darkwing gibt ein hervorragendes Beispiel dafür (und warum das blinde Einfügen von NULL-Werten falsch ist). Wenn das alte Modell ein ReceivedDate
und ein InProgress
bisschen und das neue Modell ein StartDate
und hat ProcessingEndTime
, müssen Sie entscheiden, ob und wie Sie das einstellen möchten ProcessingEndTime
. Abhängig davon, wie es verwendet wird, kann es eine sinnvolle (aber willkürliche) Wahl sein, es so einzustellen, dass es dasselbe wie das istStartDate
(oder kurz danach, wenn dies zu Problemen führen würde).
Ein Teil des Unterschieds ist jedoch wahrscheinlich auf fehlende oder beschädigte Daten zurückzuführen, die vorhanden sein sollten. (Höchstwahrscheinlich aufgrund von Fehlern bei der Dateneingabe oder einer schlechten Behandlung früherer Migrationen oder Fehler in Datenverarbeitungssystemen.) Wenn dies niemand in Ihrem Team erwartet hat, haben Sie sich (gemeinsam) darauf eingestellt, 20% der Zeit des Projekts zu verbringen. " fast fertig. (Das war eine erfundene Nummer, aber es kann weit seinschlimmer als das oder besser. Es hängt davon ab, wie viele Daten falsch sind, wie wichtig sie sind, wie komplex sie sind, wie einfach es ist, die Verantwortlichen für die Daten einzubeziehen und andere Faktoren.) Sobald Sie festgestellt haben, dass die Daten "sollen" "da sein" fehlt aber. In der Regel versuchen Sie, das Ausmaß des Problems zu ermitteln, indem Sie die alten Datenquellen abfragen. Wenn es sich um Dutzende oder Hunderte von Einträgen handelt, handelt es sich wahrscheinlich um Dateneingabefehler, und die für die Daten verantwortlichen Kunden sollten diese manuell beheben (dh Ihnen mitteilen, wie hoch die Werte sein sollten). Dann müssen Sie möglicherweise überdenken, ob Sie richtig erkannt haben, dass es dort "sein sollte". Dies könnte auf einen Modellierungsfehler im neuen System hindeuten.
Stellen Sie sich zum Beispiel eine Rechnung vor, die Mengen und Stückzahlen (aber keinen Stückpreis) enthält, mit der Ausnahme, dass einige der Mengen unerklärlicherweise fehlten. Wenn Sie mit der Person sprechen, die solche Rechnungen verarbeitet, kann dies zu einem (oder mehreren) der folgenden Szenarien führen: 1) "Oh, eine leere Menge bedeutet eine Menge von 1", 2) "Oh, ich weiß, dass diese Artikel ungefähr 1.000 USD kosten. Dies ist eindeutig ein Befehl für 2 ", 3)", wenn das passiert, schaue ich nach dem Preis in diesem anderen System und teile und runde ", 4)" Ich schaue nach einem anderen System ", 5)" das sind keine echten Daten ", 6)" das habe ich noch nie gesehen ".
Wie vorgeschlagen, kann dies einige Möglichkeiten zur automatischen Behebung der Situation aufzeigen, Sie müssen jedoch darauf achten, dass die Lösung für alle Fälle gilt. Es ist üblich, dass andere Systeme beteiligt sind, die die Daten überprüfen können, und dies ist eine gute Sache. Es ist jedoch oft insofern eine schlechte Sache, als es schwierig sein kann, Zugang zu diesen Systemen zu erlangen und sich in sie zu integrieren, um die Gegenprüfung durchzuführen, und es stellt sich oft heraus, dass die Systeme miteinander in Konflikt stehen, nicht nur, weil einige Daten fehlen. Einige manuelle Eingriffe sind häufig erforderlich, und je nach Maßstab müssen möglicherweise Tools und Schnittstellen speziell für die Datenbereinigungsaufgabe erstellt werden. Oft werden die Daten teilweise importiert, aber Zeilen mit fehlenden Daten werden an eine separate Tabelle gesendet, in der sie überprüft werden können.