Validación y depuración de transformaciones de datos

Los desarrolladores de software y otros profesionales de los datos a menudo necesitan transformar datos de un formato a otro. Estas transformaciones pueden ser conversiones simples y directas, o pueden requerir manipulaciones más complejas. Por ejemplo, es necesario generar relaciones al importar archivos CSV planos en una base de datos, o los datos de origen pueden necesitar ser divididos para el destino, como en el caso del nombre completo frente al nombre, segundo nombre, apellido y sufijo opcional. La validación de la transformación de datos es fundamental para evitar la pérdida o corrupción de datos.

En una publicación anterior sobre la integración de datos de servicios web, combinamos un valor de texto que representaba la hora GMT con un valor numérico que indicaba la diferencia en segundos para generar la hora local utilizada en los pronósticos del tiempo. Creamos una función de usuario que realizaba todos los pasos necesarios para completar esta operación. MapForce incluye un potente depurador interactivo de mapeo de datos que permite rastrear y validar fácilmente esta transformación. Veamos cómo funciona.

Aquí se muestra la función del usuario "calc-local-time" en nuestro proyecto de transformación de datos. Como pueden ver, MapForce permite la asignación de datos sin necesidad de código, a través de una interfaz visual de arrastrar y soltar.

La función acepta dt_txt, que es un valor de tipo cadena que representa una fecha y hora en el formato "2020-02-22 18:00:00", y el valor numérico de la zona horaria, que indica la diferencia en segundos con respecto a GMT para la ubicación de la predicción.

Una vez que los datos se transforman, el resultado de la función se asigna a la columna A de una hoja de cálculo de Excel. Dentro de la hoja de cálculo, el formato de la columna A se define como "Fecha", e incluye la hora, como en el ejemplo 20/5/2020 16:00.

Hacer doble clic en el encabezado de la función del usuario la expande para mostrar las operaciones individuales

Los dos valores de entrada se encuentran a la derecha, y el resultado final, etiquetado como "A", está en el extremo izquierdo. Explicado de forma sencilla, la función suma los segundos de la zona horaria a la fecha y hora "dt_txt" para calcular la hora local. MapForce incluye una función integrada para sumar fechas y horas que realiza esta operación, como se muestra en la imagen de arriba, justo a la izquierda del valor de salida "A". Pero, ¡nada es tan simple como parece! Los valores de entrada que se reciben del servicio web pueden estar en diferentes formatos y deben ajustarse al formato y la sintaxis de la función de suma de fechas y horas.

Validación de la transformación de datos utilizando el depurador de MapForce

Podemos utilizar MapForce depurador de transformación de datos Para verificar que la función del usuario produce el resultado deseado, vamos a seguir los pasos de su ejecución. Primero, estableceremos un punto de interrupción para la depuración haciendo clic derecho en el campo de entrada de la zona horaria:

Se abren varias ventanas de ayuda para la depuración, y la ejecución continúa hasta que se alcanza el punto de interrupción. El valor procesado en el punto de interrupción se resalta:

Tenemos varias opciones para continuar la ejecución. La opción "Paso mínimo" proporciona la visión más detallada de cada etapa de transformación de datos.

Este comando subdivide un paso y, normalmente, se detendrá dos veces para cada conexión: una vez cuando su origen produce un valor y otra vez cuando su destino lo consume. Al hacer clic repetidamente en "Paso mínimo", la transformación continúa ejecutándose y nos permite ver exactamente lo que sucede mientras la función "calc-local-time" procesa los datos

A medida que continuamos con la ejecución, los valores de cada conexión se añaden a la ventana.

La función integrada "datetime-add" requiere un valor de fecha y hora como primer argumento y un valor de texto que especifique el período de tiempo a añadir como segundo argumento. En la imagen que se muestra a continuación, se muestra el proceso completo, desde la entrada de los datos hasta la obtención del valor final. Se destacan los argumentos de entrada de la función "datetime-add" y el resultado final obtenido:

El valor de desplazamiento original para los segundos es de 28.800 segundos, lo que equivale a ocho horas. El resultado obtenido es ocho horas posterior a la hora de referencia dt_txt, por lo que la salida es válida.

Considerando otros casos

La diferencia con la hora GMT solo será positiva para las ubicaciones que se encuentran al este de GMT. Las ubicaciones que se encuentran al oeste de GMT deben tener una diferencia negativa. En otras palabras, Nueva York está al oeste de Londres, por lo que la hora local es anterior. Pekín está al este de GMT, por lo que la hora local es posterior.

Necesitamos validar la función "calc-local-time" para un caso en el que la diferencia horaria sea negativa.

Existen varias formas de lograrlo. Nuestra lista de ubicaciones contiene algunos lugares al este del huso horario GMT y otros al oeste. Podríamos seguir avanzando en la ejecución hasta encontrar una ubicación con una zona horaria negativa.

El servicio web devuelve 40 pronósticos para cada ciudad, por lo que revisar todos los pronósticos de las primeras cuatro ciudades sería tedioso.

Podríamos modificar la lista de ciudades para insertar una nueva ciudad del hemisferio occidental al principio de la lista, o podríamos crear un nuevo archivo de entrada para un caso de prueba. En muchas situaciones, esa es una estrategia de prueba razonable.

O bien, podemos establecer una condición para el punto de interrupción. Si podemos configurar el punto de interrupción para que se active solo cuando el valor encontrado sea negativo, podemos continuar con nuestro archivo de entrada original. Esa será la forma más rápida de llegar a una conclusión final.

Volviendo al mapeo de datos, hacemos clic derecho en el punto de interrupción para modificar sus propiedades:

Esto abre un diálogo donde podemos establecer una propiedad para que el punto de interrupción sea condicional. En la imagen que se muestra a continuación, se muestra la condición para detener la ejecución si el valor de la zona horaria es negativo:

Ahora podemos volver a ejecutar la configuración en modo de depuración. Las primeras ciudades de la lista de entrada que se encuentran todas al este del huso horario GMT son procesadas. Cuando se encuentra el primer valor de zona horaria negativo, se activa el punto de interrupción y la ejecución se detiene.

Utilizando la misma técnica de seguimiento descrita anteriormente, podemos analizar cómo evoluciona el valor negativo a medida que la función "calc-local-time" la procesa.

El valor de la zona horaria, que es de -25.200 segundos, se convierte a una cadena de texto. Luego, la función de concatenación integrada añade caracteres al principio y al final para construir la cadena de texto que representa la duración, la cual se utiliza en la función "datetime-add".

Añadir un valor negativo es lo mismo que la resta, pero en este momento la sintaxis para la duración no es del todo correcta. El signo menos (guion) debe ser el primer carácter de la cadena de duración, por lo que la función de reemplazo busca en la cadena la secuencia "PT-" y, si la encuentra, la reemplaza con "-PT".

El valor de 25.200 segundos equivale a siete horas. Si restamos siete horas al valor de entrada 2020-05-23T00:00:00, obtenemos 2020-05-22T17:00:00, o el 22 de mayo de 2020 a las 5:00 PM. Ahora hemos validado la función del usuario para casos con desplazamientos positivos y negativos.

Ya sea que esté validando la transformación de datos para verificar su precisión o rastreando un resultado inesperado, depuración de la conversión de datos Y la función de transformación en MapForce ofrece una comprensión profunda del funcionamiento interno de los proyectos de integración de datos y ETL, de una manera que antes era imposible, incluso en productos de mapeo de datos mucho más costosos.

Vea un video breve demostración en video de MapForce, o Descargue una versión de prueba gratuita incluyendo tutoriales, ayuda y muchos más ejemplos para que pueda comenzar con su propio proyecto de integración de datos JSON y de servicios web, o para otras necesidades de mapeo, conversión y transformación de datos.