Ogólnym problemem jest cały podobszar programowania zwany czyszczeniem danych, który jest częścią większego podobszaru zwanego integracją danych . Unikanie tego rodzaju problemów jest prawdopodobnie dużą przyczyną migracji z arkuszy Excela i dlaczego starszy programista nie chce, aby pole stało się zerowalne. Nie sądzę, aby mówienie, że jest to jedno z większych źródeł złożoności migracji danych, jest nierozsądne.
Samo użycie NULL, gdy tylko jest to możliwe, jest bardzo niewłaściwym posunięciem, nie mówiąc już o zmianie modelu danych, aby jeszcze więcej pól było null. Program Excel ma słabe sprawdzanie integralności lub nie ma go wcale, co jest prawdopodobnie przyczyną wielu z tych problemów. Złą rzeczą jest usunięcie sprawdzania integralności w nowej bazie danych i zrzucenie do niej śmieci. To tylko utrwala problem i dodaje znaczną złożoność przyszłym integracjom, które w jakiś sposób muszą radzić sobie z bezsensownymi danymi.
Pewna różnica prawdopodobnie wynika z niedopasowania modelu danych. Radzenie sobie z tym jest w dużej mierze kwestią znajomości obu modeli danych i umiejętności mapowania starego na nowy. Tak długo, jak nowy jest w stanie uchwycić stary. (Jeśli nie, Twój zespół prawdopodobnie ma bardzo duży problem.) Może to z łatwością wymagać więcej pracy niż kopiowanie kolumn. Darkwing daje doskonały przykład tego (a także dlaczego ślepe wstawianie wartości NULL jest niewłaściwe). Opracowanie na nią, jeśli stary model miał ReceivedDate
i InProgress
nieco i nowy model ma StartDate
i ProcessingEndTime
, trzeba będzie zdecydować, czy i jak ustawić ProcessingEndTime
. W zależności od tego, jak jest używany, rozsądnym (ale arbitralnym) wyborem może być ustawienie go tak samo jakStartDate
(lub krótko potem, jeśli spowodowałoby to problemy).
Jednak pewna różnica prawdopodobnie wynika z danych, które „powinny” tam być, których brakuje lub są uszkodzone. (Najprawdopodobniej z powodu błędów wprowadzania danych lub źle obsłużonych wcześniejszych migracji lub błędów w systemach przetwarzania danych.) Jeśli nikt z twojego zespołu tego nie przewidywał, to (wspólnie) postanowiłeś spędzić 20% czasu projektu „ prawie skończone. (To był wymyślony numer, ale może być dalekogorzej lub lepiej. Zależy to od tego, ile danych jest niepoprawnych, jak ważne są, jak skomplikowane, jak łatwo jest zaangażować osoby odpowiedzialne za dane i inne czynniki.) Po ustaleniu, że dane powinny „ być ”, ale brakuje. Zwykle próbujesz określić zakres problemu, sprawdzając stare źródła danych. Jeśli są to dziesiątki lub setki wpisów, to prawdopodobnie są to błędy wprowadzania danych, a klienci odpowiedzialni za dane powinni je ręcznie rozwiązać (tj. Powiedzieć, jakie powinny być wartości.) Jeśli to miliony wpisów (lub znaczna część danych) , może być konieczne ponowne zastanowienie się, czy poprawnie zidentyfikowano, że „powinno tam być”. Może to wskazywać na błąd modelowania w nowym systemie.
Wyobraźmy sobie na przykład fakturę, która zawierała ilości i sumy na sztukę (ale nie cenę jednostkową), z tym wyjątkiem, że niektórych ilości w niewytłumaczalny sposób brakowało. Rozmowa z osobą, która przetwarza takie faktury, może dać jeden (lub więcej) z następujących scenariuszy: 1) „och, pusta ilość oznacza ilość 1”, 2) „och, wiem, że te przedmioty kosztują około 1000 $, więc najwyraźniej jest to zamówienie na 2 „, 3)” kiedy to się dzieje, sprawdzam cenę w tym innym systemie i dzielę i zaokrąglam ”, 4)„ Patrzę na to w innym systemie ”, 5)„ to nie są prawdziwe dane ”, 6)„ nigdy wcześniej tego nie widziałem ”.
Jak sugerowano, może to wskazywać na niektóre sposoby automatycznego rozwiązania sytuacji, ale należy uważać, aby rozwiązanie dotyczyło wszystkich przypadków. Często w grę wchodzą inne systemy, które mogą sprawdzać dane, i to dobrze. Jednak często jest to zła rzecz, ponieważ uzyskanie dostępu do tych systemów i ich integracja może być trudna do przeprowadzenia kontroli krzyżowej, a często wychodzi na jaw, że systemy kolidują ze sobą nie tylko przez brak niektórych danych. Często wymagana jest pewna ręczna interwencja, a w zależności od skali może również wymagać stworzenia oprzyrządowania i interfejsów specjalnie dla zadania czyszczenia danych. Często zdarza się, że dane są częściowo importowane, ale wiersze z brakującymi danymi są wysyłane do osobnej tabeli, gdzie można je przejrzeć.