Estructuras Jerárquicas a Planas
Mapeo de Instancias
Una "Instancia" puede ser una fila en una tabla de base de datos o un elemento XML que puede tener un valor, atributos o subelementos. Cuando el mapeo de una instancia de destino depende posiblemente de más de una instancia de origen, lo llamamos "Mapeo de instancia". Un buen ejemplo es la asignación de una fuente representada por elementos de línea que especifican el costo y la cantidad asignada a un campo de destino que representa el costo total. Otro ejemplo es la asignación de un origen que contiene varias instancias de pares de valores de nombre a un campo de destino que representa un nombre de usuario. La "asignación de instancias" permite al usuario definir una asignación para reducir el origen de múltiples instancias a una sola instancia de destino. Esencialmente, permite al usuario mover datos orientados por filas a datos orientados por columnas, con la cantidad de registros generados dictados por el nivel de los datos que se mapean. Esto se puede demostrar mediante asignaciones de estructuras jerárquicas a planas, donde deberá resolver alguna información de uno o más registros anteriores o de "nivel superior".
A continuación, se proporcionan dos situaciones de ejemplo para ilustrar cómo lograr transformaciones de jerarquía a plana.
Ejemplo de Situación 1
Considere la siguiente situación, donde un documento XML de origen contiene una estructura de bucle con muchos niveles, con un documento de destino desnormalizado (plano). Esto podría ocurrir en otros tipos de transformaciones, como texto complejo a base de datos, etc.
Estructuras de Documentos y Datos
-
Estructura del documento de origen: el documento de origen es un documento XML con muchos niveles, algunos de los cuales se repiten.
-
Datos del documento de origen: este archivo contiene datos de muestra que reflejan la estructura del archivo DTD.
-
Estructura del documento de destino: el documento de destino es un archivo de texto.
Guión
El desafío de mapear los documentos de origen y de destino es mapear correctamente los niveles del origen con los niveles del destino, asegurándose de que se coloquen los datos correctos en el destino.
En este escenario de asignación, se debe crear un registro para cada uno de los números de artículo. Para hacerlo, se debe asignar un número de artículo en el documento XML de origen a la columna de número de artículo del destino. Cuando hacemos esto, estamos creando un registro (objetivo) para cada entrada (fuente) de artículo en inventario.
Nota
Los elementos que se enumeran más de una vez crearán registros adicionales. En este ejemplo simple, esto equivaldrá a 4 registros (ABC-123, ABC-456, ABC-123, DEF-456).
A continuación, la cantidad de cada número de artículo de origen debe asignarse al campo de cantidad del destino. Una vez completado, el objetivo se vería así:
Número de artículo | Cantidad | Color | Peso | Costo | Código de almacén | Estado de almacén |
---|---|---|---|---|---|---|
ABC-123 | 450 | |||||
ABC-456 | 210 | |||||
ABC-123 | 65 | |||||
DEF-456 | 75 |
Asignar el atributo de costo
Para obtener el atributo Costo, asigne el elemento de valor de atributo de la etiqueta de atributo al campo Costo del objetivo. Dado que puede haber más de una entrada de valor/código de atributo en la etiqueta de atributo, debe especificar qué atributo se asignará al campo Costo del objetivo. Por lo tanto, debe definir qué atributo exacto usar para el campo Costo. En este ejemplo, es el código de atributo de costo.
Precaución
Los elementos de datos de la fuente que son candidatos deben ser elementos de datos que estén al mismo nivel que el elemento de datos asignado, lo que significa que solo puede ser un código de atributo. Usar cualquier otro nivel por encima o por debajo de este no tendría sentido.
Ahora que sabemos cuáles son las opciones, necesitamos una forma de definirlas. En este ejemplo, sería para identificar que queríamos el valor del atributo donde el código del atributo es igual a Costo. También puede ser que los atributos se entreguen en un cierto orden y que su posición determine la instancia de atributo correcta.
Siga estos pasos para mapear Costo correctamente:
-
Seleccione [V] debajo del elemento de valor de atributo en el panel de origen.
-
Haga clic en Coste en el panel de destino.
-
Haz clic en el ícono Mapa.
-
Haga clic en el ícono de Fórmula para mostrar el Generador de fórmulas.
-
Debería aparecer el Creador de fórmulas. Abra la carpeta Instancia en el panel izquierdo y seleccione la función FindValue().
-
Haga clic en el botón Insertar para agregar esta función a su expresión.
-
La nueva expresión aparece en el panel en la parte superior del cuadro de diálogo.
-
Ahora necesita configurar correctamente los parámetros de la función:
-
Resalta cuidadosamente el primero
<arg>
en su expresión en la parte superior de la ventana. Este parámetro debe ser el nombre del atributo, así que escriba COSTO, reemplazando<arg>
en la expresión. -
Este parámetro proporciona el código utilizado en el elemento de datos de origen. Asegurándose de que la expresión sea la segunda
<arg>
está resaltado, reemplácelo haciendo doble clic en el elemento de datos [V] de attributecode. -
El último parámetro devuelve el valor del elemento de datos de origen. Asegurándose de que la expresión sea la última
<arg>
está resaltado, reemplácelo haciendo doble clic en el elemento de datos [V] del attributevalue.
-
-
Compare su expresión con la figura a continuación, luego haga clic en Aceptar para cerrar la ventana cuando haya terminado.
Complete la Muestra
Repita los pasos enumerados anteriormente para asignar los atributos PESO y COLOR en el origen a sus homólogos de destino.
La salida final de datos se vería de la siguiente manera:
Número de artículo | Cantidad | Color | Peso | Costo | Código de almacén | Estado de almacén |
---|---|---|---|---|---|---|
ABC-123 | 450 | AZUL | 13 | 450,00 | WH123 | Washington |
ABC-456 | 210 | VERDE | 5 | 525,00 | WH123 | Washington |
ABC-123 | 65 | AZUL | 13 | 450,00 | WH456 | Texas |
DEF-456 | 75 | - | 23 | 1250.00 | WH456 | Texas |
Ha completado el ejercicio de la Muestra 1. Compara tu trabajo con la siguiente figura.
Ejemplo de Situación 2
Este ejemplo es similar al de la Situación de ejemplo 1, excepto que la estructura del documento de origen es un poco diferente. Además, en lugar de mapear la información del artículo, ensamblaremos códigos de almacén basados en registros.
Estructuras de Documentos y Datos
-
Estructura del documento de origen: el documento de origen es un documento XML con muchos niveles, algunos de los cuales se repiten. Tenga en cuenta que esta DTD es diferente de la de la Situación de ejemplo 1: En esta DTD, la información del almacén está separada de los artículos en stock.
-
Datos del documento de origen: este archivo contiene datos de muestra que reflejan la estructura del archivo DTD.
-
Estructura del documento de destino: el documento de destino es un archivo de texto. Esta estructura objetivo difiere del objetivo Muestra 1 porque utiliza una columna separada para identificar cada almacén.
Guión
De manera similar a la Muestra 1, queremos crear un registro para cada uno de los números de artículo, pero queremos que cada uno de los almacenes se enumere por columnas en el destino. Para hacerlo, necesitamos crear un registro para cada entrada de artículo en inventario en el archivo XML de origen. En este ejemplo, esto equivaldrá a 3 registros (ABC-123, ABC-456, DEF-456).
Tenemos atributos de instockitem, que contiene los almacenes donde se almacena el artículo (instockat). Dentro de este atributo, puede haber 0 o más entradas para identificar todos los almacenes donde se puede encontrar el artículo, así como la cantidad en el almacén. Lo que debemos hacer es colocar todos los de WH123, etc. en la columna adecuada.
La lógica para el número de artículo ABC-123 y el almacén WH123 sería:
Obtener el valor del atributo "cantidad" del artículo "ABC-123" donde el atributo "whcode" es igual a "WH123".
Por ejemplo, la respuesta a proporcionar para WH123 para el número de artículo ABC-123 sería 450.
Siga estos pasos para mapear y configurar correctamente el número de artículo:
-
Asigne el elemento de datos del número de artículo del origen al número de artículo del destino.
-
Asigne el elemento de datos itemquantity del origen al elemento de datos WH123 del destino.
-
Los datos de WH123 necesitan ser calificados. Seleccione el elemento de datos WH123 del objetivo y haga clic en el botón Fórmula para iniciar Formula Builder.
-
Debería aparecer el Creador de fórmulas. Abra la carpeta Instancia en el panel izquierdo y seleccione la función FindValue().
-
Haga clic en el botón Insertar para agregar esta función a su expresión.
-
La nueva expresión aparece en el panel en la parte superior del cuadro de diálogo.
-
Ahora necesita configurar correctamente los parámetros de la función:
-
Resalta cuidadosamente el primero
<arg>
en su expresión en la parte superior de la ventana. Este parámetro debe ser el nombre del atributo, así que escriba WH123, reemplazando<arg>
en la expresión. -
Este parámetro proporciona el código utilizado en el elemento de datos de origen. Asegurándose de que la expresión sea la segunda
<arg>
está resaltado, reemplácelo haciendo doble clic en el elemento de datos [V] de attributecode. -
El último parámetro devuelve el valor del elemento de datos de origen. Asegurándose de que la expresión sea la última
<arg>
está resaltado, reemplácelo haciendo doble clic en el elemento de datos [V] del attributevalue.
-
-
Compare su expresión con la figura a continuación, luego haga clic en Aceptar para cerrar la ventana cuando haya terminado.
Complete la Muestra
Repita los pasos que realizó anteriormente para los dos almacenes restantes, WH456 y WH789, configurando sus valores en consecuencia. Entonces habrá completado el ejercicio de la Muestra 2. Compara tu trabajo con la siguiente figura.