Cuentos y consejos desde las trincheras: Agile Data Transformation using MDOX

COL03x - feature image oneil already 300x300¿Qué es la agilidad? Yo la definiría como la capacidad de moverse con rapidez, fluidez y eficacia en cualquier dirección. En la transformación de datos, la información se mueve a través de un proceso que consiste en una secuencia de operaciones. Idealmente, los procesos deberían ser reversibles, asegurando así que no se pierda información.

Al modelar las operaciones de transformación genéricamente en tabla , MDOX permite la creación de transformaciones de datos ágiles que pueden ser fácilmente ejecutadas, revertidas, revisadas y repetidas, o eliminadas.

En nuestro artículo anterior, Introducing MDOX, nos centramos en los Meta-Data Objects (MDO) como un modelo de datos universal que almacena la información como objetos: colecciones estructuradas jerárquicamente de Elementos y Atributos de datos, relacionados con una jerarquía de Términos de metadatos con Propiedades opcionales. En este artículo, nos centraremos en los Procesos que implementan transformaciones ágiles de datos, poniendo así la “X” en MDOX.

La tabla 5 del artículo anterior, “Introducción al MDOX” muestra los principales campos de la tabla:

Picture1

La tabla también contiene varios campos que controlan cómo se aplica la expresión regular opcional a los elementos del término padre, para permitir el análisis recursivo de los elementos hijos a partir del texto padre:

Picture2

Las coincidencias de la expresión regular del campo se almacenan temporalmente en la tabla :

Picture3Cada registro de la tabla define una única operación de transformación:

  1. Si el campo contiene una expresión regular válida, esa expresión se aplica al texto largo . para todos los elementos relacionados con el término padre de .. Las coincidencias de Regex se almacenan temporalmente en la tabla.
  2. Si el campo contiene una sentencia SQL válida, entonces la sentencia es ejecutada por la aplicación. Las consultas Select y Transform se muestran en pantalla o, si el proceso está automatizado, se exportan como hojas de cálculo al directorio actual de la aplicación. Las sentencias Insert añaden nuevos registros a una tabla o vista actualizable. Las sentencias Update o Delete afectan al registro seleccionado.

Tenga en cuenta que la presencia de una expresión regular o sentencia SQL no válida hará que el proceso falle. El desarrollador debe probar repetidamente cada operación hasta que todo el proceso se ejecute sin problemas.

Las operaciones para un término determinado se ejecutan en orden de Si un término tiene términos hijos y se selecciona la opción “árbol descendente”, los términos hijos se procesan en orden de secuencia. Por lo tanto, el orden general de las operaciones dentro de una transformación está determinado tanto por . como por . Se puede mover una operación previamente desarrollada a una nueva ubicación simplemente actualizando esos campos. Utilizando la aplicación MDOX, se pueden crear fácilmente nuevos términos y operaciones, o actualizar el nombre, la descripción y el orden de secuencia de los términos y operaciones existentes. Si se elimina un objeto de datos o metadatos, los borrados en cascada eliminarán cualquier objeto que descienda de él, por ejemplo, subtérminos, propiedades, procesos, elementos, atributos y coincidencias regex. Este comportamiento es beneficioso. A continuación se muestra un término llamado “test” que tiene un término hijo “regex” con un proceso que informa de las coincidencias regex encontradas en los elementos “test”. Más tarde, el término “test” puede ser eliminado, y todos los objetos subsidiarios desaparecerán de la base de datos.

Ejemplo 1: Operación de transformación que crea un informe de tabulación cruzada a partir de coincidencias regex

Picture4 La regex “(\d+)\s(\w+)” contiene 2 subexpresiones, encerradas entre paréntesis. La primera subexpresión (\d+) coincide con uno o más dígitos. La segunda (w+) coincide con una o varias letras. Entre estas subexpresiones, la expresión ” \\s” coincide con un punto seguido de un carácter de espacio en blanco. En este ejemplo, MDOX busca la expresión regex, “(\d+)\s(\w+)” en los elementos del término padre, “test”:

Picture5

Las coincidencias regex se almacenan en la tabla donde

  • = 0 => la coincidencia regex completa, e.p. ej. “10. foo”
  • = 1 => la primera sub-expresión que coincide, p. ej. “10”
  • = 2 => la 2ª sub-expresión que coincide, por ejemplo, “bar”

Picture6

Después de recoger las coincidencias regex, otra operación compila y ejecuta este texto SQL:

TRANSFORM First(.value) AS FirstOfvalue
SELECT Element.elem_id, Element.elem_value, .nmatch
FROM Element INNER JOIN _regexp ON Element.elem_id = .rid
GROUP BY Element.elem_id, Element.elem_value, .nmatch
PIVOT .nsub;

El conjunto de registros resultante se muestra o se exporta a “Test_regex.csv”:

Picture7

Ejemplo 2: Operación de transformación que crea un catálogo de objetos del sistema de archivos

La vista actualizable se define como sigue:

SELECT Elements.*, Attributes.attr_name, Attributes.attr_value, Attributes.elem_id AS attr_id
FROM Elements LEFT JOIN Attributes ON Elements.elem_id = Attributes.elem_id;

La siguiente sentencia inserta un nuevo elemento junto con un atributo relacionado en :

INSERT INTO attributes ( elem_id, attr_name, attr_value )
SELECT GetFileSystem(GetFolderDialog("Select root folder for files"),".*"
,True,True) AS elem_id, "insertDateTime" AS attr_name, Now() AS attr_value;

Esta operación utiliza la sentencia anterior para crear un catálogo de un sistema de ficheros:

Picture8

El catálogo creado es una jerarquía de elementos con atributos del sistema de ficheros, e.g.

Picture9

Una operación posterior puede reportar los archivos seleccionados a través de una vista basada en Elementos y Atributos, e.g.

Picture10

Como se muestra arriba, la función GetFileSystem() puede extraer el texto del archivo y almacenarlo en ., ya sea con o sin reemplazo de caracteres especiales por sus equivalentes ASCII más cercanos. Esta opción es útil para el análisis regex de archivos con contenido de texto, por ejemplo, los tipos de archivo txt, sql, doc, ppt, pdf, html, etc.

Las funciones similares GetData() importan otros tipos de datos en el esquema de la base de datos MDOX. Por ejemplo, GetSheets() importa datos tabulares de hojas de cálculo de Excel y documentos de Word. GetWordDoc() importa contenido de texto de cualquier formato de documento que pueda ser abierto por Microsoft Word, incluyendo PDF y PowerPoint. GetXml() importa datos estructurados como elementos con atributos relacionados a partir de formatos de marcado basados en texto, como archivos XML, XSD y WSDL. Los detalles de implementación de estos métodos de importación de datos se describirán en el siguiente artículo de TDAN, Desarrollo de aplicaciones MDOX.

Después de la importación inicial de datos de origen en MDOX utilizando los métodos GetData(), se pueden desarrollar nuevos términos y procesos para transformar aún más los datos en el formato de salida deseado, que puede ser exportado o cargado directamente en una tabla de base de datos vinculada. En el último artículo de esta serie, Técnicas de transformación de datos de MDOX, se describirán algunas transformaciones de ejemplo con distintos grados de complejidad.

En resumen, MDOX permite la transformación ágil de datos mediante el modelado genérico de datos y procesos. Esto hace posible construir una aplicación que facilite el procesamiento de datos dentro de un modelo de datos estático. MDOX puede ejecutar transformaciones complicadas de forma automática, a través de un proceso, construido de operaciones, que puede ser ejecutado, revertido, revisado y repetido, o eliminado según sea necesario.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.