El problema general es toda una subárea de programación llamada limpieza de datos que forma parte de una subárea más grande llamada integración de datos . Evitar este tipo de problemas es probablemente una gran parte de la razón de la migración desde las hojas de Excel y por qué el desarrollador principal no quiere permitir que un campo se vuelva anulable. No creo que sea irrazonable decir que esta es una de las mayores fuentes de complejidad en las migraciones de datos.
Simplemente elegir usar NULL siempre que pueda es muy probable que sea algo incorrecto , y mucho menos cambiar el modelo de datos para que aún más campos sean anulables. Excel tiene una comprobación de integridad débil o nula, que probablemente sea la causa de muchos de estos problemas. Lo incorrecto es eliminar la comprobación de integridad en la nueva base de datos y volcar basura en ella. Esto simplemente perpetúa el problema y agrega una complejidad significativa a las integraciones futuras que de alguna manera tienen que tratar con datos sin sentido.
Es probable que parte de la diferencia se deba al desajuste del modelo de datos. Tratar con esto es en gran medida una cuestión de estar (íntimamente) familiarizado con ambos modelos de datos y saber cómo asignar el antiguo al nuevo. Mientras el nuevo sea capaz de capturar al anterior. (Si no, es probable que su equipo tenga un problema muy grande). Esto puede requerir fácilmente hacer más trabajo que simplemente copiar columnas. Darkwing da un excelente ejemplo de esto (así como por qué insertar ciegamente NULL es lo incorrecto). Si lo desarrollamos, si el modelo anterior tenía un ReceivedDate
y un InProgress
poco y el nuevo modelo tiene un StartDate
y ProcessingEndTime
, tendrá que decidir si y cómo configurarlo ProcessingEndTime
. Dependiendo de cómo se use, una opción razonable (pero arbitraria) podría ser configurarlo para que sea el mismo que elStartDate
(o poco después si eso causaría problemas).
Sin embargo, parte de la diferencia probablemente se deba a los datos que "deberían" estar allí que faltan o están dañados. (Lo más probable es que se deba a errores de entrada de datos o migraciones pasadas mal o errores en los sistemas de procesamiento de datos). Si nadie en su equipo lo anticipó, entonces (colectivamente) se han comprometido a pasar el 20% del tiempo del proyecto " casi termino. (Ese era un número inventado, pero puede estar lejospeor que eso, o mejor. Depende de cuántos datos sean incorrectos, cuán importantes sean, cuán complejos sean, cuán fácil sea involucrar a los responsables de los datos y otros factores). Una vez que haya determinado que los datos "deben" estar "allí pero falta. Por lo general, intentará determinar el alcance del problema consultando las fuentes de datos antiguas. Si se trata de docenas o cientos de entradas, entonces es probable que se trate de errores de entrada de datos y los clientes responsables de la información deberían resolverla manualmente (es decir, decirle cuáles deberían ser los valores). Si se trata de millones de entradas (o una fracción significativa de los datos) , entonces es posible que deba reconsiderar si identificó correctamente que "debería estar" allí. Esto podría indicar un error de modelado en el nuevo sistema.
Por ejemplo, imagine una factura que tenía cantidades y totales por artículo (pero no precio unitario), excepto que algunas de las cantidades faltaban inexplicablemente. Hablar con la persona que procesa tales facturas podría producir uno (o más) de los siguientes escenarios: 1) "oh, una cantidad en blanco significa una cantidad de 1", 2) "oh, sé que esos artículos cuestan alrededor de $ 1,000, así que, claramente este es un pedido de 2 ", 3)" cuando eso sucede, busco el precio en este otro sistema y divido y redondeo ", 4)" Lo busco en otro sistema ", 5)" eso no es información real ", 6)" nunca había visto eso antes ".
Como se sugiere, esto puede indicar algunas formas de resolver automáticamente la situación, pero debe tener cuidado de que la solución se aplique a todos los casos. Es común que otros sistemas se involucren y puedan verificar los datos, y esto es algo bueno. Sin embargo, a menudo es algo malo en la medida en que puede ser difícil obtener acceso e integrarse con estos sistemas para realizar la verificación cruzada, y a menudo sale a la luz que los sistemas entran en conflicto entre sí, no solo por la falta de algunos datos. A menudo se requiere alguna intervención manual, y dependiendo de la escala, bien puede requerir herramientas e interfaces para ser creadas específicamente para la tarea de limpieza de datos. A menudo, lo que se hace es que los datos se importan parcialmente, pero las filas con datos faltantes se envían a una tabla separada donde se pueden revisar.