Загальна проблема - це ціла підрайон програмування, який називається очищенням даних, який є частиною більшого підрайону, який називається інтеграцією даних . Уникнення подібних питань, ймовірно, є значною частиною причини міграції з аркушів Excel, і чому старший розробник не хоче дозволити полю стати нульовим. Я не думаю, що це нерозумно говорити, що це одне з великих джерел складності міграції даних.
Просто вибираючи використовувати NULL, коли ви можете, швидше за все, неправильно це зробити, не кажучи вже про зміну моделі даних, щоб зробити ще без змін поля. Excel має слабку перевірку цілісності або її відсутність, що, ймовірно, є причиною багатьох цих проблем. Неправильне, що потрібно робити, - видалити перевірку цілісності в новій базі даних і скинути сміття в неї. Це лише продовжує проблему і додає значної складності майбутнім інтеграціям, яким якимось чином слід мати справу з безглуздими даними.
Певна різниця, ймовірно, пов'язана з невідповідністю моделі даних. Справа з цим значною мірою полягає в тому, щоб (тісно) ознайомитись з обома моделями даних та знати, як віднести стару до нової. До тих пір , як новий один є здатним захоплювати старий. (Якщо ні, у вашої команди, швидше за все, є дуже велика проблема.) Це може зажадати більше роботи, ніж просто копіювання стовпців. Darkwing дає чудовий приклад цього (а також, чому сліпо вставляти NULLs - це неправильно). Розвиваючи це, якщо у старої моделі було ReceivedDate
і InProgress
трохи, а в новій моделі є StartDate
і ProcessingEndTime
, вам потрібно буде вирішити, чи і як встановити ProcessingEndTime
. Залежно від способу його використання, розумним (але довільним) вибором може бути встановлення його таким же, як іStartDate
(або незабаром після цього, якщо це спричинить проблеми).
Однак певна різниця, ймовірно, пов'язана з даними, які "повинні" бути там, які відсутні або пошкоджені. (Швидше за все, через помилки введення даних або погано оброблені минулі міграції чи помилки в системах обробки даних.) Якщо ніхто з вашої команди цього не передбачив, то ви (колективно) поклали на себе витратити 20% часу, коли проект буде "." майже зроблено. (Це було вигадане число, але це може бути далекогірше за це, або краще. Це залежить від того, скільки даних є невірними, наскільки вони важливі, наскільки вони складні, наскільки легко залучити осіб, відповідальних за дані, та інших факторів.) Після того, як ви визначите, що дані "повинні бути "там, але відсутня. Зазвичай ви намагаєтеся визначити масштаб проблеми, запитуючи старі джерела даних. Якщо це десятки або сотні записів, то, ймовірно, це помилки введення даних, і клієнти, відповідальні за дані, повинні їх усунути вручну (тобто сказати, якими мають бути значення.) Якщо це мільйони записів (або значна частина даних) , то вам може знадобитися переглянути, чи правильно ви визначили, що це "повинно бути" там. Це може вказувати на помилку моделювання в новій системі.
Наприклад, уявіть рахунок-фактуру, який мав кількість та загальну кількість одиниць товару (але не одиницю ціни), за винятком того, що деякі кількості були незрозуміло відсутніми. Розмовляючи з особою, яка обробляє такі рахунки, може створити один (або більше) з наступних сценаріїв: 1) "о, порожня кількість означає кількість 1", 2) "о, я знаю, що ці товари коштують приблизно за 1000 доларів, Очевидно, це замовлення на 2 ", 3)" коли це трапляється, я шукаю ціну в цій іншій системі і розділяю і округляю ", 4)" Я шукаю її в іншій системі ", 5)" це не реальні дані ", 6)" ніколи раніше цього не бачив ".
Як було запропоновано, це може вказувати на деякі способи автоматичного вирішення ситуації, але ви повинні бути обережними, щоб рішення стосувалося всіх випадків. Для інших систем прийнято брати участь у перехресній перевірці даних, і це добре. Однак часто буває погано, оскільки для перехресної перевірки може бути важко отримати доступ до цих інтегрованих систем та їх інтеграцію, і часто виявляється, що системи конфліктують одна з одною не лише через відсутність деяких даних. Часто потрібне певне втручання вручну, і, залежно від масштабу, цілком може знадобитися створення інструментів та інтерфейсів, створених спеціально для завдання очищення даних. Часто для цього дані частково імпортуються, але рядки з відсутніми даними надсилаються в окрему таблицю, де їх можна переглянути.