En informática , la transformación de datos es el proceso de convertir datos de un formato o estructura a otro formato o estructura. Es un aspecto fundamental de la mayoría de las tareas de integración de datos [1] y gestión de datos , como la manipulación de datos , el almacenamiento de datos , la integración de datos y la integración de aplicaciones.
La transformación de datos puede ser simple o compleja, según los cambios necesarios en los datos entre los datos de origen (iniciales) y los datos de destino (finales). La transformación de datos se realiza normalmente mediante una combinación de pasos manuales y automatizados. [2] Las herramientas y tecnologías utilizadas para la transformación de datos pueden variar ampliamente en función del formato, la estructura, la complejidad y el volumen de los datos que se transforman.
Una reestructuración de datos maestros es otra forma de transformación de datos en la que toda la base de datos de valores de datos se transforma o se reformula sin extraer los datos de la base de datos. Todos los datos de una base de datos bien diseñada están relacionados directa o indirectamente con un conjunto limitado de tablas de base de datos maestra mediante una red de restricciones de clave externa . Cada restricción de clave externa depende de un índice de base de datos único de la tabla de base de datos principal. Por lo tanto, cuando la tabla de base de datos maestra adecuada se reformula con un índice único diferente, los datos relacionados directa e indirectamente también se reformulan o se replantean. Los datos relacionados directa e indirectamente también se pueden ver en la forma original, ya que el índice único original todavía existe con los datos maestros. Además, la reestructuración de la base de datos debe realizarse de tal manera que no afecte al software de arquitectura de aplicaciones .
Cuando el mapeo de datos es indirecto a través de un modelo de datos mediador , el proceso también se denomina mediación de datos .
La transformación de datos se puede dividir en los siguientes pasos, cada uno aplicable según sea necesario en función de la complejidad de la transformación requerida.
Estos pasos suelen ser el foco de atención de los desarrolladores o analistas de datos técnicos que pueden utilizar múltiples herramientas especializadas para realizar sus tareas.
Los pasos se pueden describir de la siguiente manera:
El descubrimiento de datos es el primer paso en el proceso de transformación de datos. Normalmente, los datos se perfilan utilizando herramientas de creación de perfiles o, en ocasiones, utilizando scripts de creación de perfiles escritos manualmente para comprender mejor la estructura y las características de los datos y decidir cómo deben transformarse.
El mapeo de datos es el proceso de definir cómo se mapean, modifican, unen, filtran, agregan, etc. los campos individuales para producir el resultado final deseado. Los desarrolladores o analistas de datos técnicos tradicionalmente realizan el mapeo de datos, ya que trabajan en tecnologías específicas para definir las reglas de transformación (por ejemplo, herramientas ETL visuales , [3] lenguajes de transformación).
La generación de código es el proceso de generar código ejecutable (por ejemplo, SQL, Python, R u otras instrucciones ejecutables) que transformará los datos en función de las reglas de mapeo de datos deseadas y definidas. [4] Normalmente, las tecnologías de transformación de datos generan este código [5] en función de las definiciones o metadatos definidos por los desarrolladores.
La ejecución de código es el paso mediante el cual se ejecuta el código generado con los datos para crear el resultado deseado. El código ejecutado puede estar integrado de forma precisa en la herramienta de transformación o puede requerir pasos separados por parte del desarrollador para ejecutar manualmente el código generado.
La revisión de datos es el paso final del proceso, que se centra en garantizar que los datos de salida cumplan con los requisitos de transformación. Normalmente, es el usuario empresarial o el usuario final de los datos quien realiza este paso. Cualquier anomalía o error en los datos que se encuentre se comunica al desarrollador o analista de datos como nuevos requisitos que se deben implementar en el proceso de transformación. [1]
Tradicionalmente, la transformación de datos ha sido un proceso masivo o por lotes, [6] mediante el cual los desarrolladores escriben código o implementan reglas de transformación en una herramienta de integración de datos y luego ejecutan ese código o esas reglas en grandes volúmenes de datos. [7] Este proceso puede seguir el conjunto lineal de pasos descrito en el proceso de transformación de datos anterior.
La transformación de datos por lotes es la piedra angular de prácticamente todas las tecnologías de integración de datos, como el almacenamiento de datos, la migración de datos y la integración de aplicaciones. [1]
Cuando los datos deben transformarse y entregarse con baja latencia, a menudo se utiliza el término "microlote". [6] Esto se refiere a pequeños lotes de datos (por ejemplo, una pequeña cantidad de filas o un pequeño conjunto de objetos de datos) que se pueden procesar muy rápidamente y entregar al sistema de destino cuando sea necesario.
Los procesos tradicionales de transformación de datos han sido de gran utilidad para las empresas durante décadas. Las distintas herramientas y tecnologías (elaboración de perfiles de datos, visualización de datos, limpieza de datos, integración de datos, etc.) han madurado y la mayoría de las empresas (si no todas) transforman enormes volúmenes de datos que alimentan aplicaciones internas y externas, almacenes de datos y otros tipos de almacenamiento de datos. [8]
Este proceso tradicional también tiene limitaciones que dificultan su eficiencia y eficacia generales. [1] [2] [7]
Las personas que necesitan utilizar los datos (por ejemplo, los usuarios comerciales) no desempeñan un papel directo en el proceso de transformación de datos. [9] Normalmente, los usuarios delegan la tarea de transformación de datos a los desarrolladores que tienen las habilidades técnicas o de codificación necesarias para definir las transformaciones y ejecutarlas en los datos. [8]
Este proceso deja la mayor parte del trabajo de definir las transformaciones necesarias al desarrollador, que a menudo no tiene el mismo conocimiento del dominio que el usuario empresarial. El desarrollador interpreta los requisitos del usuario empresarial e implementa el código o la lógica relacionados. Esto tiene el potencial de introducir errores en el proceso (a través de requisitos mal interpretados) y también aumenta el tiempo necesario para llegar a una solución. [9] [10]
Este problema ha dado lugar a la necesidad de agilidad y autoservicio en la integración de datos (es decir, empoderar al usuario de los datos y permitirle transformarlos por sí mismo de forma interactiva). [7] [10]
Existen empresas que ofrecen herramientas de transformación de datos de autoservicio. Su objetivo es analizar, mapear y transformar de manera eficiente grandes volúmenes de datos sin el conocimiento técnico y la complejidad de procesos que existen actualmente. Si bien estas empresas utilizan la transformación por lotes tradicional, sus herramientas permiten una mayor interactividad para los usuarios a través de plataformas visuales y scripts que se repiten fácilmente. [11]
Aun así, puede haber algunos problemas de compatibilidad (por ejemplo, las nuevas fuentes de datos como IoT pueden no funcionar correctamente con herramientas más antiguas) y limitaciones de cumplimiento debido a la diferencia en las prácticas de gobernanza , preparación y auditoría de datos. [12]
La transformación interactiva de datos (IDT) [13] es una capacidad emergente que permite a los analistas y usuarios comerciales interactuar directamente con grandes conjuntos de datos a través de una interfaz visual, [9] comprender las características de los datos (a través de la creación de perfiles o la visualización de datos automatizados) y cambiar o corregir los datos a través de interacciones simples como hacer clic o seleccionar ciertos elementos de los datos. [2]
Aunque la transformación de datos interactiva sigue los mismos pasos del proceso de integración de datos que la integración de datos por lotes, la diferencia clave es que los pasos no se siguen necesariamente de manera lineal y normalmente no requieren habilidades técnicas significativas para completarlos. [14]
Existen varias empresas que ofrecen herramientas de transformación de datos interactivas, entre ellas Trifacta, Alteryx y Paxata. Su objetivo es analizar, mapear y transformar de manera eficiente grandes volúmenes de datos, al mismo tiempo que se eliminan parte de la complejidad técnica y los procesos que se llevan a cabo en segundo plano.
Las soluciones de transformación de datos interactivas proporcionan una interfaz visual integrada que combina los pasos, hasta ahora dispares, de análisis de datos, mapeo de datos y generación/ejecución de código e inspección de datos. [8] Es decir, si se realizan cambios en un paso (como, por ejemplo, un cambio de nombre), el software actualiza automáticamente los pasos anteriores o posteriores en consecuencia. Las interfaces para la transformación de datos interactiva incorporan visualizaciones para mostrar al usuario patrones y anomalías en los datos, de modo que pueda identificar valores erróneos o atípicos. [9]
Una vez que han terminado de transformar los datos, el sistema puede generar código/lógica ejecutable, que puede ejecutarse o aplicarse a conjuntos de datos similares posteriores.
Al eliminar al desarrollador del proceso, los sistemas de transformación de datos interactivos acortan el tiempo necesario para preparar y transformar los datos, eliminan errores costosos en la interpretación de los requisitos del usuario y permiten a los usuarios comerciales y analistas controlar sus datos e interactuar con ellos según sea necesario. [10]
Existen numerosos lenguajes disponibles para realizar transformaciones de datos. Muchos de ellos requieren que se proporcione una gramática . En muchos casos, la gramática se estructura utilizando algo muy parecido a la forma Backus-Naur (BNF). Existen numerosos lenguajes disponibles para tales fines que varían en su accesibilidad (costo) y utilidad general. [15] Algunos ejemplos de dichos lenguajes incluyen:
Además, empresas como Trifacta y Paxata han desarrollado lenguajes transformacionales específicos de dominio (DSL) para dar servicio y transformar conjuntos de datos. El desarrollo de lenguajes específicos de dominio se ha relacionado con una mayor productividad y accesibilidad para usuarios no técnicos. [16] “Wrangle” de Trifacta es un ejemplo de este tipo de lenguaje específico de dominio. [17]
Otra ventaja de la reciente tendencia de los lenguajes transformacionales específicos de dominio es que un lenguaje transformacional específico de dominio puede abstraer la ejecución subyacente de la lógica definida en el lenguaje transformacional específico de dominio. También pueden utilizar esa misma lógica en varios motores de procesamiento, como Spark , MapReduce y Dataflow . En otras palabras, con un lenguaje transformacional específico de dominio, el lenguaje de transformación no está vinculado al motor subyacente. [17]
Aunque los lenguajes transformacionales suelen ser los más adecuados para la transformación, se puede utilizar algo tan simple como las expresiones regulares para lograr una transformación útil. Un editor de texto como vim , emacs o TextPad admite el uso de expresiones regulares con argumentos. Esto permitiría que todas las instancias de un patrón en particular se reemplacen con otro patrón que utilice partes del patrón original. Por ejemplo:
foo ("alguna cadena", 42, gCommon);bar (algunObjeto, otroObjeto);foo ("otra cadena", 24, gCommon);barra (miObjeto, miOtroObjeto);
Ambos podrían transformarse en una forma más compacta como:
foobar("alguna cadena", 42, someObj, anotherObj);foobar("otra cadena", 24, myObj, myOtherObj);
En otras palabras, todas las instancias de una invocación de función foo con tres argumentos, seguida de una invocación de función con dos argumentos, se reemplazarían con una única invocación de función utilizando parte o la totalidad del conjunto original de argumentos.
Otra ventaja de usar expresiones regulares es que no fallarán la prueba de transformación nula. Es decir, usando el lenguaje de transformación de su elección, ejecute un programa de muestra a través de una transformación que no realice ninguna transformación. Muchos lenguajes de transformación fallarán esta prueba.
{{cite web}}
: CS1 maint: multiple names: authors list (link)