Общая проблема - это целая область программирования, называемая очисткой данных, которая является частью более широкой области, называемой интеграцией данных. . Избежание подобных проблем, вероятно, является основной причиной перехода с листов Excel и того, почему старший разработчик не хочет, чтобы поле стало обнуляемым. Я не думаю, что неразумно говорить, что это один из самых больших источников сложности при переносе данных.
Просто предпочитаю использовать NULL , когда вы могли бы, вероятно , очень уж неправильно , не говоря уже об изменении модели данных, чтобы сделать еще больше полей обнуляемыми. В Excel слабая проверка или проверка целостности отсутствует, что, вероятно, является причиной многих из этих проблем. Неправильное действие - удалить проверку целостности в новой базе данных и выбросить в нее мусор. Это только увековечивает проблему и значительно усложняет будущие интеграции, которые должны как-то иметь дело с бессмысленными данными.
Некоторая разница, вероятно, связана с несоответствием модели данных. Работа с этим во многом зависит от того, насколько хорошо вы знакомы с обеими моделями данных и как сопоставить старую и новую. До тех пор , как новый один является способным захватывать старый. (Если нет, ваша команда, вероятно, столкнулась с очень большой проблемой.) Для этого может потребоваться больше работы, чем просто копирование столбцов. Darkwing дает превосходный пример этого (а также, почему слепая вставка NULLs является неправильной вещью). Разбираясь с этим, если у старой модели было «а» ReceivedDate
и « InProgress
немного», а у новой модели есть « StartDate
и» ProcessingEndTime
, вам нужно будет решить, следует ли устанавливать и как ProcessingEndTime
. В зависимости от того, как он используется, разумным (но произвольным) выбором может быть его установка таким же, какStartDate
(или вскоре после этого, если это вызовет проблемы).
Однако некоторая разница, вероятно, связана с тем, что данные, которые «должны» быть, отсутствуют или повреждены. (Скорее всего, из-за ошибок ввода данных или плохо обработанных прошлых миграций или ошибок в системах обработки данных.) Если никто в вашей команде не ожидал этого, то вы (в совокупности) настроили себя на то, чтобы тратить 20% времени проекта » почти сделано. (Это был выдуманный номер, но это может быть далекохуже этого или лучше. Это зависит от того, какой объем данных неверен, насколько он важен, насколько он сложен, насколько легко привлечь тех, кто отвечает за данные, и других факторов.) Как только вы определили, что данные «должны быть "там, но отсутствует. Обычно вы пытаетесь определить масштаб проблемы, запрашивая старые источники данных. Если это десятки или сотни записей, то, вероятно, это ошибки ввода данных, и клиенты, ответственные за данные, должны вручную разрешить их (то есть сообщить, какими должны быть значения.) Если это миллионы записей (или значительная часть данных) тогда вам может понадобиться пересмотреть, правильно ли вы определили, что это «должно быть» там. Это может указывать на ошибку моделирования в новой системе.
Например, представьте счет-фактуру, в котором были указаны количества и итоги по каждой позиции (но не цена за единицу), за исключением того, что некоторые количества по необъяснимым причинам отсутствовали. Разговор с человеком, который обрабатывает такие счета, может привести к одному (или нескольким) из следующих сценариев: 1) «о, пустое количество означает количество 1», 2) «о, я знаю, что эти товары стоят около 1000 долларов, ясно, что это заказ на 2 ", 3)", когда это происходит, я смотрю цену в этой другой системе и делю и округляю ", 4)" Я смотрю это в другой системе ", 5)" это не реальные данные ", 6)" никогда раньше не видел ".
Как предполагается, это может указывать на некоторые способы автоматического разрешения ситуации, но вы должны быть осторожны, чтобы решение применимо ко всем случаям. Обычно другие системы участвуют в перекрестной проверке данных, и это хорошо. Однако зачастую это плохо, поскольку может быть сложно получить доступ к этим системам и интегрироваться с ними для выполнения перекрестной проверки, и часто обнаруживается, что системы конфликтуют друг с другом, а не только из-за отсутствия некоторых данных. Часто требуется какое-то ручное вмешательство, и в зависимости от масштаба может потребоваться создание инструментов и интерфейсов специально для задачи очистки данных. Часто делается то, что данные частично импортируются, но строки с отсутствующими данными отправляются в отдельную таблицу, где их можно просмотреть.