O problema geral é toda uma subárea de programação chamada limpeza de dados, que faz parte de uma subárea maior chamada integração de dados . Evitar esse tipo de problema provavelmente é uma grande parte do motivo da migração das planilhas do Excel e o motivo pelo qual o desenvolvedor sênior não deseja permitir que um campo se torne anulável. Não acho razoável dizer que essa é uma das maiores fontes de complexidade nas migrações de dados.
Apenas optar por usar NULL sempre que possível é provavelmente a coisa errada a fazer, e muito menos alterar o modelo de dados para tornar ainda mais nulos os campos. O Excel tem uma verificação de integridade fraca ou inexistente, o que provavelmente é a causa de muitos desses problemas. A coisa errada a fazer é remover a verificação de integridade no novo banco de dados e despejar lixo nele. Isso apenas perpetua o problema e adiciona complexidade significativa a integrações futuras que, de alguma forma, precisam lidar com dados sem sentido.
Parte da diferença provavelmente ocorre devido à incompatibilidade do modelo de dados. Lidar com isso é basicamente uma questão de estar (intimamente) familiarizado com os dois modelos de dados e saber como mapear o antigo para o novo. Desde que o novo seja capaz de capturar o antigo. (Caso contrário, sua equipe provavelmente terá um grande problema.) Isso pode exigir mais trabalho do que apenas copiar colunas. Darkwing dá um excelente exemplo disso (e também por que a inserção cega de NULLs é a coisa errada a se fazer). Elaborando sobre ele, se o modelo antigo tinha um ReceivedDate
e um InProgress
pouco e o novo modelo tem um StartDate
e ProcessingEndTime
, você precisará decidir se e como definir o ProcessingEndTime
. Dependendo de como é usado, uma escolha razoável (mas arbitrária) pode ser configurá-la como a mesmaStartDate
(ou logo depois, se isso causaria problemas).
No entanto, parte da diferença provavelmente se deve a dados que "deveriam" estar ausentes ou corrompidos. (Provavelmente devido a erros de entrada de dados ou migrações ou erros anteriores mal tratados nos sistemas de processamento de dados.) Se ninguém da sua equipe previu isso, você (coletivamente) se dedicou a gastar 20% do tempo do projeto " quase pronto. (Esse era um número inventado, mas pode estar longepior que isso, ou melhor. Depende da quantidade de dados incorretos, de quão importante é, de quão complexo é, de como é fácil obter o envolvimento dos responsáveis pelos dados e de outros fatores.) Depois de determinar que os dados "devem" estar "lá, mas está faltando. Geralmente, você tenta determinar a extensão do problema consultando as fontes de dados antigas. Se são dezenas ou centenas de entradas, provavelmente são erros de entrada de dados e os clientes responsáveis pelos dados devem resolvê-los manualmente (por exemplo, informar quais devem ser os valores.) Se são milhões de entradas (ou uma fração significativa dos dados) , talvez seja necessário reconsiderar se você identificou corretamente que "deveria estar" lá. Isso pode indicar um erro de modelagem no novo sistema.
Por exemplo, imagine uma fatura com quantidades e totais por item (mas não preço unitário), exceto que algumas dessas quantidades estavam inexplicavelmente ausentes. Conversar com a pessoa que processa essas faturas pode produzir um (ou mais) dos seguintes cenários: 1) "oh, uma quantidade em branco significa uma quantidade de 1", 2) "oh, eu sei que esses itens custam cerca de US $ 1.000, então, claramente esta é uma ordem para 2 ", 3)" quando isso acontece, procuro o preço nesse outro sistema e divido e arredondo ", 4)" procuro em outro sistema ", 5)" que não são dados reais ", 6)" nunca vi isso antes ".
Conforme sugerido, isso pode indicar algumas maneiras de resolver a situação automaticamente, mas você deve ter cuidado para que a solução se aplique a todos os casos. É comum que outros sistemas estejam envolvidos que possam verificar os dados, e isso é uma coisa boa. No entanto, muitas vezes é uma coisa ruim, pois pode ser difícil obter acesso e integrar-se a esses sistemas para realizar a verificação cruzada, e geralmente vem à luz que os sistemas entram em conflito entre si, não apenas por falta de alguns dados. Muitas vezes, é necessária alguma intervenção manual e, dependendo da escala, pode ser necessário criar ferramentas e interfaces especificamente para a tarefa de limpeza de dados. Geralmente, o que é feito é que os dados são parcialmente importados, mas as linhas com dados ausentes são enviadas para uma tabela separada, onde podem ser revisadas.