A medida que más y más empresas se basan en XML para representar e intercambiar datos, la capacidad para integrar datos operativos XML en almacenes de datos es cada vez más importante. En el primer artículo de esta serie se analizó la manera en que IBM InfoSphere DataStage extrae datos XML almacenados con tecnología DB2 pureXML, transforma esos datos en una estructura relacional tradicional y los carga en un almacén de datos.
Este artículo se centra en otro de los medios para usar DataStage a fin de integrar datos XML en un almacén. Sus instrucciones paso a paso permiten leer datos de negocios desde un archivo plano, transformar esos datos en XML y llenar un almacén de datos con los datos transformados. El almacén de datos se basa en DB2 pureXML.
Conversión de datos operativos en datos de almacén pureXML
Los archivos representan un origen común que las empresas deben integrar en sus almacenes de datos. Este escenario muestra cómo se puede usar DataStage para leer información sobre inversiones financieras desde un archivo delimitado por comas, convertir los datos en XML y luego almacenar los datos XML en el almacén de datos usando DB2 pureXML. Almacenar los datos como XML puede ser de gran utilidad si las aplicaciones descendentes deben trabajar con datos XML. Esta situación es cada vez más habitual a medida que las empresas se basan en formatos XML específicos de la industria para el intercambio de datos y los proveedores de aplicaciones se basan en XML como un medio neutral para representar datos. Por supuesto que también se podría usar DataStage para convertir datos provenientes de archivos en una estructura relacional, pero como esa capacidad está ampliamente documentada en otros sitios, no será analizada en este artículo.
Al igual que en la primera parte de la serie, los datos de este escenario están basados en cuentas financieras. El archivo de muestra delimitado por comas que sirve como datos de origen contiene registros que representan cuentas y participaciones de cartera de inversiones asociadas. Cada uno de los registros del archivo hace referencia al ID de cuenta, tipo de inversión (por ejemplo, acciones o bonos), símbolo de inversión y cantidad de acciones. El listado 1 ejemplifica un registro del archivo de muestra.
Listado 1. Ejemplo de un registro del archivo de origen de muestra
804130877,"Stock","ZION",+000001927.719 |
Cada registro del archivo de origen describe una inversión por cuenta. Sin embargo, cada una de las cuentas puede tener múltiples inversiones, por lo que es posible que haya múltiples registros para cada una de las cuentas. Los registros del archivo de muestra están ordenados por ID de cuenta, lo cual elimina la necesidad de indicarle a DataStage que ordene los datos de entrada antes de completar el procesamiento deseado. Descargue el archivo de origen de muestra (así como otros materiales auxiliares de esta serie) en la sección Descargas.
El trabajo de DataStage que se generará debe convertir los datos provenientes del
archivo de origen en documentos XML individuales — un documento para cada
cuenta—. Esto significa que, cuando una cuenta tenga más de un registro, será
necesario mapear esos múltiples registros en un único documento XML. El listado 2
ejemplifica un documento XML para una única cuenta. Observe que cada uno de los
múltiples elementos <Position> representa una
inversión individual de la cuenta.
Listado 2. Ejemplo de documento XML de destino con datos e inversiones para una única cuenta
<Account>
<Id>804130877</Id>
<Holdings>
<Position>
<Type>Stock</Type>
<Symbol>ZION</Symbol>
<Quantity>1927.719</Quantity>
</Position>
<Position>
<Type>Stock Fund</Type>
<Symbol>ASEPX</Symbol>
<Quantity>1177.619</Quantity>
</Position>
<Position>
…
</Position>
</Holdings>
</Account> |
En este caso, DataStage introduce los datos convertidos en una tabla de destino llamada DWADMIN.ACCTPROFILE. Parte del script que se usa para preparar el entorno de base de datos DB2 (descripto en el paso 1) contiene el código que aparece en el listado 3. Con esta parte del código se crea la tabla de destino.
Listado 3. Definición de la tabla de almacén de datos
create table
dwadmin.acctprofile ( id int primary key not null, info xml ) |
Los valores de la columna ID de la tabla ACCTPROFILE se derivan del primer campo del archivo de entrada. La columna INFO contiene un documento XML que representa todos los campos del archivo de origen (incluida la información de ID de cuenta).
Paso 1: Preparación del entorno de base de datos DB2
Si ya descargó y ejecutó el script DB2 de muestra en la primera parte de esta serie, omita este paso y vaya al paso 2. De lo contrario, haga lo siguiente:
- Descargue el archivo DSsetup.zip de la sección Descargas y descomprímalo.
- Abra una ventana de comandos DB2.
- Emita el comando que se muestra en el listado 4 para ejecutar el script. Entre otras cosas, este script creará la tabla DWADMIN.ACCTPROFILE que se utiliza en este escenario.
Listado 4. Comando para ejecutar el script de configuración DB2 desde una ventana de comandos DB2
db2 –td@ -vf DSsetup.db2 |
Nota: este script está diseñado para soportar un servidor DB2 9.5 que se ejecuta en Windows.
Paso 2: Creación de un trabajo paralelo de DataStage y descripción de sus contenidos
El escenario de este artículo sigue el mismo desarrollo que la primera parte de la serie. En primer lugar se define un trabajo paralelo de DataStage con marcadores de posición para varias etapas (este paso) y luego se edita cada una de las etapas a fin de especificar las propiedades adecuadas para ejecutar el trabajo con éxito.
- Inicie DataStage Designer.
- Haga clic con el botón derecho en la carpeta Jobs (Trabajos) del panel Repository (Repositorio) y seleccione New > Parallel job.
- Agregue una etapa Sequential File (Archivo secuencial) en la parte superior izquierda del área de diseño de trabajo para el nuevo trabajo paralelo. (En la sección File de la Paleta, seleccione el ícono Sequential File y arrástrelo al área de diseño de trabajo). Esta etapa representa su archivo de origen de entrada.
- Agregue una etapa de DB2 Connector en la parte superior derecha del trabajo paralelo. (La sección Database de la Paleta contiene etapas de DB2). Esta etapa representa su tabla de almacén de datos de destino.
- Agregue una etapa XML Output debajo de la etapa Sequential File, en el lado izquierdo del área de diseño. (La sección Real Time de la Paleta contiene etapas de XML). Esta etapa XML Output creará la porción de la jerarquía de documentos XML que represente las posiciones (inversiones) de la cuenta.
- Agregue otra etapa XML Output debajo de la etapa DB2 Connector, en el lado derecho del área de diseño. Esta etapa XML Output creará las porciones restantes de la jerarquía de documentos XML que representen la información de la cartera de cuentas.
- Agregue una etapa Copy entre las dos etapas XML Output. (La sección Processing de la Paleta contiene la etapa Copy). Esta etapa Copy introducirá información desde la etapa XML Output inicial hasta la segunda etapa XML Output.
- Conecte las etapas en el siguiente orden:
Sequential File -> XML Output -> Copy -> XML Output -> DB2 Connector - También es posible cambiar el nombre de los vínculos y de las etapas para que la lógica sea más fácil de seguir.
- Compruebe que el esqueleto de su paralelo tenga una apariencia similar a la de la figura 1.
- Guarde el trabajo.
Figura 1. Esqueleto de trabajo de DataStage
(Haga clic para ver una versión ampliada de la figura 1).
Paso 3: Importación de definiciones de tabla
Con el script de configuración DB2 ejecutado (en el paso 1 o en el primer artículo de esta serie) se creó una tabla de destino para la información de la cartera de cuentas de la base de datos DB2. En este paso se importan los metadatos sobre esta tabla a DataStage a fin de personalizar el trabajo para poder procesar esta tabla.
- En el menú principal, seleccione Import > Table Definitions > Start Connector Import Wizard (Iniciar Connector Import Wizard). Aparecerá una nueva ventana: "Connector metadata import – Connector selection".
- Seleccione DB2 Connector (Variant 9.1) y haga clic en Next.
- Ingrese los datos adecuados para la conexión, incluyendo el tipo de instancia (DB2), el nombre de la base de datos (TPOX) y un ID de usuario y una contraseña válidos.
- Haga clic en Test connection (Conexión de prueba) para comprobar si es posible conectarse a la base de datos DB2 TPOX.
- Cuando obtenga una conexión exitosa, haga clic en Next y luego en OK.
- Acepte los valores predeterminados de la ubicación de origen de datos, entre los que se incluyen un nombre de host de DB2 y un nombre de base de datos de TPOX (DB2).
- Haga clic en Next.
- Seleccione el esquema DWADMIN de la lista desplegable Filter , compruebe que la opción include tables esté seleccionada y haga clic en Next.
- Seleccione la tabla ACCTPROFILE de la lista de tablas disponibles para este esquema.
- Compruebe que la tabla DWADMIN.ACCTPROFILE esté programada para importar y haga clic en Import.
- Aparecerá una ventana emergente que le pedirá que seleccione una carpeta para la importación de los metadatos. Seleccione Table Definitions y haga clic en OK.
- Guarde el trabajo.
Ya está listo para editar cada etapa del trabajo.
Paso 4: Edición de la tabla de destino DB2
Usted acaba de importar los metadatos DB2 sobre la tabla de almacén de datos de destino; este es un buen momento para trabajar con la etapa DB2 Connector. En este paso se editan las propiedades de la etapa DB2 Connector para hacer referencia a la tabla DWADMIN.ACCTPROFILE.
- Haga doble clic en el DB2 Connector que representa la tabla de destino.
- En la pestaña Properties, especifique la información adecuada dentro de la sección Connection, que incluye el tipo de instancia (DB2), el nombre de la base de datos (TPOX) y un ID de usuario y una contraseña válidos.
- Haga clic en Test en el ángulo superior derecho del panel para comprobar si es posible conectarse con éxito a la base de datos.
- Desplácese hacia abajo, hasta la sección Usagede la pestaña Properties y especifique las siguientes configuraciones (ver figura 2):
- Write mode:
Insert - Generate SQL:
Yes - Table name:
DWADMIN.ACCTPROFILE - Array size:
1 - Table action:
Truncate - Opcionalmente, haga clic en View Data, a la derecha de la fila Usagepara comprobar si es posible consultar la tabla con éxito. (La tabla permanecerá vacía hasta que complete y ejecute exitosamente el trabajo completo de DataStage).
- Haga clic en OKpara guardar esta configuración.
- Haga clic en la pestaña Columns y seleccione Load.
- Seleccione la tabla DWADMIN.ACCTPROFILE y haga clic en OK.
- Acepte el valor predeterminado: todas las columnas de la tabla están seleccionadas. (Observe que INFO, que fue creada en DB2 como una columna XML, aparece aquí con un tipo SQL de NVarChar.)
- Haga clic en OK.
- Especifique una longitud adecuada para la columna INFO. En este caso, una longitud de 5000 bytes es suficiente.
- Haga clic en OK.
- Guarde el trabajo.
Figura 2. Configuración modificada para el DB2 Connector de la tabla de destino
Paso 5: Edición de la etapa Sequential File
Es necesario editar la etapa Sequential File para identificar el archivo delimitado por comas que contiene los datos de entrada.
- Haga doble clic en el ícono que representa la etapa Sequential File.
- Si la pestaña Output no se muestra, haga clic en ella. Aparecerá un conjunto de subpestañas.
- Haga clic en la subpestaña Properties.
- Expanda la carpeta Source y haga clic en la propiedad File. Especifique el archivo de entrada, examinando la estructura de directorios si fuera necesario. (El archivo de entrada de muestra incluido en el archivo file de la sección Download se llama holdingsexport.)
- Haga clic en la subpestaña Columns.
- Edite la información de las columnas como se muestra en la siguiente tabla y en
la figura 3. Estas columnas representarán las etiquetas
de elemento de los datos
<Position>en el documento XML.Column name Key SQL type Extended Length Scale Nullable Description ID Integer Yes HOLDINGTYPE √ VarChar Unicode 30 Yes /ns:Position/ns:Type SYMBOL VarChar Unicode 30 Yes /ns:Position/ns:Symbol QUANTITY Decimal 12 3 Yes /ns:Position/ns:Quantity - Agregue la información del espacio de nombres de laDescripciónde HOLDINGTYPE, SYMBOL y QUANTITY. Más adelante analizaremos cómo las etapas XML Output y Copy usan esta información. Consulte los datos del espacio de nombres de cada columna en la figura 3.
- Identifique HOLDINGTYPE como Key.
- Haga clic en OK.
- Guarde el trabajo.
Figura 3. Especificaciones de columna para los datos de salida de Sequential File
Paso 6: Edición de la etapa XML Output inicial
La etapa XML Output inicial, que está conectada con la etapa Sequential File, debe
convertir porciones de la información de archivo en elementos XML. Como la
estructura del documento XML de destino contiene una jerarquía anidada con elementos
de repetición, es necesario personalizar esta etapa XML Output para agregar
información para cada cuenta. En este caso, usted deberá indicarle a DataStage que
recopile toda la información <Position> de
cada cuenta.
Es necesario adaptar la etapa XML Output inicial para poder generar los elementos XML resaltados en negrita en el listado 5.
Listado 5. Formato de documento XML de destino con los nodos que se construirán en esta etapa indicados en negrita
<Account>
<ID>111222</ID>
<Holdings>
<Position>
<Type>Stock</Type>
<Symbol>IBM</Symbol>
<Quantity>500.12</Quantity>
</Position>
<Position>
. . .
</Position>
</Holdings>
</Account> |
Para personalizar esta etapa, siga estos pasos:
- Abra la etapa XML Output inicial, que se encuentra al lado de la etapa Sequential File.
- Haga clic en la pestaña Input. Aparecerá un conjunto de subpestañas.
- En la subpestaña Partitioning (Particionar), compruebe si aparecen las cuatro columnas que especificó para el archivo de entrada: ID, HOLDINGTYPE, SYMBOL y QUANTITY. Además, verifique que HOLDINGTYPE se muestre como una columna de clave.
- En la subpestaña Columns, compruebe si aparecen las expresiones XPath adecuadas para las columnas HOLDINGTYPE, SYMBOL y QUANTITY. (Las expresiones XPath deberían coincidir con las que se especificaron al editar la etapa Sequential File. Ver figura 3).
- Haga clic en la pestaña Output. Aparecerá un nuevo conjunto de subpestañas.
- Haga clic en la subpestaña Document Settings (Configuraciones de documento). Aparecerán nuevas subpestañas.
- En la sección Comment, seleccione la casilla de verificación Generate XML Chunk y desactive la casilla de verificación Include.
- Haga clic en la subpestaña Namespace Declaration. Seleccione la
casilla de verificación Include e ingrese una declaración de espacio de
nombres adecuada en el campo de entrada. Por ejemplo:
xmlns:ns="http://tpox-benchmark.com/custacc" - Haga clic en la subpestaña Transformation Settings. Localice el botón Use Trigger Column y use su menú desplegable para seleccionar la columna ID. De esta manera, DataStage agrupará la información de cartera por ID de cuenta.
- Haga clic en la subpestaña Options. Desactive la casilla de verificación Generate formatted output. (No es necesario agregar espacio en blanco ni cambios de formato en los datos de salida XML finales.)
- Haga clic en la subpestaña Columns.
- Seleccione Load e importe la definición de la tabla DWADMIN.ACCTPROFILE.
- Fije el campo Length de la columna INFO en:
5000. - Modifique el campo Description de la columna INFO de manera de incluir
la siguiente expresión XPath:
/ns:Position - Compruebe que la configuración sea similar a la que se muestra en la figura 4.
- Haga clic en OK.
- Guarde el trabajo.
Figura 4. Configuración de columnas de salida para la etapa XML Output inicial
(Haga clic para ver una versión ampliada de la figura 4.)
Paso 7: Edición de la etapa XML Output final
La etapa XML Output final debe generar las porciones restantes de la jerarquía de
documentos XML. La primera etapa XML Output ya recopiló toda la información <Position> de cada cuenta. Es necesario que el
documento XML final incluya información adicional. Consulte el listado 2, que se encuentra en el comienzo de este artículo, para revisar
la estructura completa del documento XML de destino.
- Abra la etapa XML Output final (la etapa ubicada a la derecha del área de diseño y debajo de la etapa DB2 Connector).
- Seleccione la pestaña Input. Aparecerá un conjunto de subpestañas.
- Haga clic en la subpestaña Columns.
- Seleccione Load e importe la definición de la tabla DWADMIN.ACCTPROFILE.
- Fije el campo Length de la columna INFO en:
5000 - Fije el campo Description de la columna INFO en:
/ns:Account/ns:Holdings - Fije el campo Data Element de la columna INFO en:
XML - Fije el campo Description de la columna ID en:
/ns:Account/ns:ID - Compruebe que la configuración sea similar a la que se muestra en la figura 5.
- Haga clic en la pestaña Output. Aparecerá un conjunto de subpestañas.
- Haga clic en la subpestaña Document Settings. Aparecerán nuevas subpestañas.
- Desactive la casilla de verificaciónIncludeen la sección Comment.
- Haga clic en la subpestaña Namespace Declaration. Seleccione la
casilla de verificación Includee ingrese la siguiente declaración de
espacio de nombres en el campo de entrada:
xmlns:ns="http://tpox-benchmark.com/custacc" - Haga clic en la subpestaña Transformation Settings. Localice el botón Use Trigger Column y use su menú desplegable para seleccionar la columna ID. De esta manera, DataStage agrupará la información de cartera por ID de cuenta.
- Haga clic en la subpestaña Options. Desactive la casilla de verificación Generate formatted output.
- Haga clic en la subpestaña Columns.
- En el campo Descriptionde la columna INFO incluya la siguiente
expresión XPath:
/ns:Account - Compruebe que la configuración sea similar a la que se muestra en la figura 6.
- Haga clic en OK.
- Guarde el trabajo.
Figure 5. Configuración de columnas de entrada para la etapa XML Output final
(Haga clic para ver una versión ampliada de la figura 5.)
Figure 6. Configuración de columnas de salida para la etapa XML Output final
(Haga clic para ver una versión ampliada de la figura 6.)
Paso 8: Edición de la etapa Copy
A continuación, modifique la etapa Copy para transferir datos entre las dos etapas XML Output. Como cada etapa XML Output usa diferentes expresiones XPath para definir el XML que se genera, se necesita una etapa Copy para garantizar que los datos se transfieran adecuadamente a través de los vínculos de entrada y de salida.
- Abra la etapa Copy.
- Haga clic en la subpestaña Mapping. Seleccione Auto-Match, acepte los valores predeterminados y haga clic en OK.
- Opcionalmente, inspeccione las expresiones XPath especificadas en las columnas Description de los vínculos de entrada y de salida.
- Haga clic en la pestaña Inputy en la subpestaña Columns.
- Compruebe que la columna Descriptionde INFO contenga la siguiente
expresión XPath:
/ns:Position
(ver figura 4). - Haga clic en la pestaña Output y en la subpestaña Columns.
- Compruebe que la columna Descriptionsde ID contenga la siguiente
expresión XPath:
/ns:Account/ns:ID
(verfigura 5). - Compruebe que la columna Descriptions de INFO contenga la siguiente
expresión XPath:
/ns:Account/ns:Holdings
(ver figura 5). - Haga clic en OK.
- Guarde el trabajo.
Paso 9: Compilación y prueba del trabajo
Siga los procedimientos estándar de DataStage para compilar, validar y ejecutar su trabajo. Si fuera necesario, consulte la sección Resources, donde encontrará un vínculo a la documentación de DataStage. A continuación se presenta un breve resumen:
- Seleccione el ícono Compile de la barra de herramientas. Asegúrese de que el trabajo se compile sin errores.
- Seleccione el ícono Run de la barra de herramientas. En Warnings, establezca el valor "no limit" y haga clic en Run. DataStage intentará ejecutar el trabajo.
- Inicie DataStage and QualityStage Director para inspeccionar el registro y revisar los resultados del trabajo. Compruebe que el trabajo se completó con éxito.
- Opcionalmente, inspeccione el contenido de la tabla de almacén de datos DB2. Para esto, use herramientas DB2 estándar, o vuelva al trabajo de DataStage en Designer, abra la etapa DB2 Connector y haga clic en View Data.
En esta serie de artículos se analizó de qué manera es posible combinar IBM InfoSphere DataStage y DB2 pureXML para soportar el creciente uso de XML en los almacenes de datos. XML se ha convertido en el formato preferido para el intercambio de datos en numerosas organizaciones; por ello, los arquitectos de datos evalúan opciones para integrar XML en sus almacenes de datos.
En la primera parte de esta serie, se analizó la manera en que IBM InfoSphere DataStage extrae y transforma datos XML gestionados por DB2 pureXML. Además, se discutió cómo DataStage puede cargar estos datos transformados en dos tablas: una con tipos de datos SQL tradicionales y otra con columnas relacionales y XML.
A su vez, este artículo, la segunda parte de la serie, contiene instrucciones para leer información desde un archivo plano, convertir los datos en formato XML y cargar estos datos XML en un almacén de datos que contiene una tabla con una columna DB2 pureXML.
Los autores agradecen a Stewart Hanna, Susan Malaika y Ernie Ostic por la revisión de este artículo.
| Descripción | Nombre | tamaño | Metodo de descarga |
|---|---|---|---|
| Sample scripts and data | DSsetup.zip (US) | 105KB | HTTP |
Información sobre métodos de descarga
Aprender
- Conozca "IBM InfoSphere
DataStage"
- Lea la primera parte de esta serie.
- Conozca más sobre la creación de trabajos paralelos
en un tutorial
de IBM (publicación de IBM SC18-9889-01).
- Revise la documentación de IBM InfoSphere DataStage para obtener información detallada
sobre las capacidades de DataStage y la manera de usarlas.
- Visite el wiki de DB2
pureXML, donde encontrará un extenso conjunto de vínculos a demostraciones,
descargas gratuitas, artículos técnicos y mucho más.
- Lea DB2 pureXML Cookbook (IBM Press) de Matthias Nicola y Pav Kumar Chatterjee,
una guía integral sobre la tecnología DB2 pureXML para todas las plataformas
soportadas.
- Lea Query XML Data with SQL de Cynthia M. Saracco y Query XML Data with XQuery de Don Chamberlin y Cynthia M. Saracco, para
explorar muchas de las consultas de prueba incluidas en la sección "DB2 Connector
XML Support".
- Para tener una visión general de las últimas
características de DB2 pureXML, lea Enhance business insight and scalability of XML data with new DB2 9.7 pureXML
features de Cynthia M. Saracco y Matthias Nicola, abril de 2009.
- Conozca más sobre el procesamiento de transacciones con
referencia XML (TPOX).
Comentar
- Participar en el foro de debate.
- Participe en el foro de
DB2 pureXML o en uno de los foros de
DataStage.

Branislav Barnak es software architect en el centro de IBM en Boca Raton, Florida. Trabaja en la conectividad de IBM InfoSphere DataStage y se especializa en tecnologías de IBM como DB2, WebSphere MQ, sistemas de almacenamiento de datos mainframe, etc. Branislav participa en el desarrollo de tecnologías de conectividad desde hace más de 10 años. Trabajó en varios marcos de conectividad conectados con productos de bases de datos y mensajería, como Oracle, PeopleSoft, Teradata, DB2, WebSphere MQ, entre otros. Es Licenciado en Ingeniería Eléctrica de la Universidad de Belgrado, Serbia.

Amir Bar-or es senior solutions architect de Enterprise Information Management Group en el Laboratorio de Massachusetts. Tiene más de 10 años de experiencia en la investigación y desarrollo de bases de datos, como investigador en HP Labs y luego en IBM SWG. En la actualidad dirige el desarrollo de futuras capacidades de XML para DataStage.

Cynthia M. Saracco es senior solutions architect en el Laboratorio de IBM en Silicon Valley y se especializa en tecnologías emergentes y temas de gestión de bases de datos. Con 23 años de experiencia en la industria del software, escribió 3 libros, más de 60 artículos técnicos, y es titular de 7 patentes.
