IBM InfoSphere DataStage y DB2 pureXML, Parte 1: Cómo integrar datos operativos XML a un almacén de datos

Aprenda cómo integrar datos XML críticos para el negocio en su sistema de almacenamiento de datos con IBM® InfoSphere™ DataStage 8.1 e IBM DB2® 9.5 pureXML®. Esta serie de artículos ofrece instrucciones paso a paso para el uso de pureXML como origen y como fuente de datos de destino para los trabajos en InfoSphere DataStage.

Branislav Barnak, Software Architect, IBM

Branislav Barnak is a software architect at IBM located in Boca Raton, FL. He works on IBM InfoSphere DataStage connectivity and is focusing on IBM technologies such as DB2, WebSphere MQ, mainframe data storage systems, and others. Branislav has been involved with the development of connectivity technologies for more than 10 years. He has worked on several connectivity frameworks interfacing with database and messaging products such as Oracle, PeopleSoft, Teradata, DB2, WebSphere MQ, and others. He holds a BS degree in Electrical Engineering from the University of Belgrade, Serbia.



Amir Bar-or, Senior Architect and Manager, IBM

Amir Bar-or is a senior architect and manager in the Enterprise Information Management Group at the Massachusetts Laboratory. He has more than 10 years of experience in database research and development as a researcher in HP Labs and then in IBM SWG. Today, he is leading the development of DataStage future XML capabilities.



Cynthia M. Saracco, Senior Software Engineer, IBM

photo: Cynthia SaraccoCynthia M. Saracco works on database management and XML technologies at IBM's Silicon Valley Lab. She has co-authored three books and taught university-level courses on various software technologies.


Nivel de autor profesional en developerWorks

Paul Stanley, Senior Architect, IBM

Paul Stanley is a senior architect in the Enterprise Information Management Group in Boca Raton, FL. He has been architecting and managing the development of connectivity components for WebSphere Transformation Extender and InfoSphere DataStage for more than 12 years.



20-08-2009

No es un secreto que XML se encuentra en todos lados. Las aplicaciones basadas en tecnología Web, las arquitecturas orientadas a servicios (SOA), y los formatos de intercambio de datos específicos de la industria dependen en gran medida de XML para la representación de datos críticos para el negocio. El uso cada vez mayor de XML impulsa a numerosas compañías a investigar cómo se integran los datos operativos XML en sus almacenes de datos y en sus entornos de inteligencia de los negocios.

En esta serie de artículos, usted aprenderá cómo se pueden utilizar en conjunto IBM DB2 pureXML e InfoSphere DataStage para administrar datos operativos XML, transformar los datos XML en función de las necesidades y poblar un almacén de datos XML sólo relacional o híbrido y relacional. (Para simplificar el artículo, las siguientes secciones se referirán a "pureXML" y a "DataStage" en lugar de mencionar el nombre completo de los productos.) Las instrucciones paso a paso que se brindan los guiarán a través de dos escenarios de integración comunes.

En la primera parte de esta serie de artículos, aprenda cómo construir un almacén de datos que incluya datos relacionales y XML utilizando datos de entrada de pureXML. También, aprenda consejos importantes sobre el uso del DataStage DB2 Connector. En la segunda parte de esta serie de artículos, usted aprenderá a transformar datos de archivos planos en XML y a almacenar estos datos en un almacén de datos utilizando pureXML.

Presentación de las tecnologías clave de DataStage y pureXML

Si usted se encuentra familiarizado con DataStage o pureXML, encontrará breves introducciones a cada una de ellas en las siguientes secciones. Sin embargo, para leer la serie de artículos, será conveniente contar con un conocimiento previo sobre almacenamiento de datos, tecnología ETL (extract-transform-load) y XML.

Generalidades sobre DataStage

IBM InfoSphere DataStage permite a las empresas extraer, transformar y cargar datos (ETL) desde una diversidad de orígenes a un almacén de datos. El soporte al hardware de múltiples procesadores que viene incluido permite que DataStage pueda brindar altos niveles de escalabilidad y trabajar eficientemente con grandes volúmenes de datos. Numerosos "conectores" soportan una amplia variedad de formatos de datos de origen y destino, que incluye a los famosos sistemas de gestión de bases de datos de IBM y OEM, las fuentes de datos ODBC, aplicaciones de terceros, mensajes en tiempo real generados por programas de colocación de mensajes en colas y servicios Web, y los formatos de archivos más utilizados.

DataStage proporciona las siguientes capacidades—entre otras—a través de una cantidad de componentes de software. El escenario de esta serie de artículos utiliza un subconjunto de los mismos. En especial, los escenarios del artículo emplean al DataStage Designer para generar trabajos de ETL. Cada trabajo está formado por múltiples “etapas”, y cada una de ellas realiza una tarea determinada. Entre los ejemplos de estas tareas se incluyen la lectura de información desde una fuente de datos, la transformación de los datos de entrada mediante funciones incorporadas, la conversión de un tipo de datos en otro, etc. Los ejemplos del artículo definen las etapas que involucran al DB2 Connector, a las operaciones con XML, y a numerosas operaciones de procesamiento. Existen dos tecnologías de DataStage que resultan fundamentales para estos escenarios: el DB2 Connector y el XML Pack 2.0. El presente artículo las describe brevemente.

Luego de usar DataStage Designer para crear y compilar sus tareas, usted utilizará DataStage Director para ejecutar su trabajo.

DataStage DB2 Connector

El presente artículo depende del DB2 Connector para todos los accesos a las bases de datos DB2. Esta es la principal opción de conectividad de DB2 en InfoSphere Information Server y se basa en el Common Connector Framework. El conector contiene un superconjunto de características que se encuentran en los componentes de conectividad de legado de DataStage y ofrece mejoras en cuanto a la función y el rendimiento.

El DB2 Connector para Information Server 8.1 se encuentra disponible como una instalación independiente de un parche de conexión. Soporta conexiones locales y remotas para servidores DB2 9.1 y 9.5. (Se planifica un soporte para DB2 9.7 en una futura versión del Information Server.) El conector requiere el DB2 Client 9.1 Fix Pack 6 (o posterior) o el DB2 9.5 Fix Pack 3 (o posterior).

Las características clave del DB2 Connector incluyen:

  • Soporte para datos de tipo XML y LOB (objeto grande) de cualquier tamaño. Se dispone de dos mecanismos de transferencia: paso por valor (en línea) y por referencia. Cuando se realiza el paso de datos LOB o XML en línea, el tamaño máximo está determinado por el motor del DataStage. Cuando el paso de datos se realiza por referencia, la etapa de flujo descendente (o recepción) utiliza la referencia para obtener los datos mediante la invocación directa al conector de origen. El inconveniente de este método es que los datos LOB sólo se pueden pasar de un conector a otro, y no se pueden transformer en el trabajo (debido a que solamente la referencia pasa a través de los vínculos). El conector exige que la propiedad ArraySize esté configurada en 1 durante la lectura o la escritura de las columnas XML.
  • Capacidad para ejecutar enunciados SQL estándar tales como SELECT, INSERT, UPDATE, y DELETE, combinaciones de estos enunciados, SQL definidos por el usuario, y cargas en masa.
  • Soporte para la ejecución en paralelo (multi-procesos).
  • Soporte para DB2 DPF (Database Partitioning Feature – característica de partición de bases de datos). El conector puede funcionar com bases de datos particionadas en modo paralelo o secuencial. Cuando funciona en paralelo, se asigna un proceso independiente de DataStage a cada partición de DB2. El conector puede leer y escribir en paralelo y puede cargar bases de datos particionadas en paralelo.
  • Soporte para la entrega de datos garantizada a través de transacciones de XA (confirmación en dos fases) cuando se las utiliza junto con la Distributed Transaction Stage (DTS). DTS brinda un mecanismo para actualizar múltiples bases de datos DB2 como parte de una transacción de XA. Obsérvese que DTS está disponible con un parche independiente para DataStage 8.1.
  • Soporte a la importación de metadatos a través del Common Connector Import Wizard disponibl en el DataStage Designer.

Contextos de uso de DB2 Connector

El conector se puede utilizar en un contexto de origen, de destino o de búsqueda. En esta serie de artículos, usted utilizará el DB2 Connector en contextos de origen y destino.

El contexto de origen se refiere al caso en el que existe un vínculo de salida que viene de la etapa del conector. En este contexto, el conector se utiliza para recuperar datos.

El contexto de destino se refiere al caso en el que existe un vínculo de entrada que va a la etapa del conector, lo cual significa que los datos están pasando al conector. En este contexto, el conector se utiliza para ejecutar los enunciados de INSERT, UPDATE, DELETE, UPSERT (combinación de INSERT/UPDATE/DELETE), SQL definidos por el usuario, o cargas en masa.

El contexto de búsqueda se refiere al caso en el que el conector se usa en conjunto con la etapa de búsqueda. En este contexto, los datos pasan al conector y son recuperados del mismo. En este escenario, el conector ejecuta un enunciado SELECT con una cláusula WHERE.

Soporte XML al DB2 Connector

El escenario en esta serie de artículos se centra en el soporte del DB2 Connector para datos XML. Así, resulta conveniente aprender más sobre el soporte a XML en el DB2 Connector.

Representación de las columnas XML en DataStage

DataStage 8.1 utiliza datos de los tipos NVarChar o LongNVarChar para representar a los datos XML. Durante la importación de metadatos, el usuario puede seleccionar cuáles son los datos a utilizar en las columnas XML. La diferencia está en que las columnas XML representadas como columnas NVarChar se utilizan para transferir datos en línea y están sujetas a los requerimientos de tamaño del motor de DataStage, mientras que el tipo de datos long se utiliza para tratar a las columnas XML como objetos grandes (LOB) y permite que pasen por referencia.

El conector soporta:

  • XQueries
  • XQueries con SQL incrustados
  • consultas SQL/XML
  • Operaciones de actualización y eliminación con columnas XML

Contexto de origen: lectura de columnas XML

El conector puede leer un documento XML completo o un fragmento del mismo. El fragmento puede ser una secuencia o un número atómico. Cuando se utiliza una XQuery, el conector no soporta el paso de resultados XML por referencia debido a dificultades en la construcción de un localizador de LOB.

Los siguientes ejemplos (Listados 1 - 6) incluyen numerosas consultas SQL y XQueries comunes soportadas por el conector. Estas consultas se basan en muestras incluidas en conocidos artículos de introducción a DB2 pureXML. (Consulte la sección Recursos para obtener más detalles.) Observe que el soporte del DB2 Connector para SQL, SQL/XML y XQuery no está limitado a estos ejemplos.

Listado 1. Uso de SQL simple para recuperar documentos XML completos
select xml_col from table

Si la columna XML estuviera representada con datos del tipo LongVarChar en el trabajo de DataStage, el conector brindaría al usuario la opción de seleccionar si esta columna pasará a la siguiente etapa como referencia o en línea..

Listado 2. Uso de XQuery para recuperar documentos XML completos
xquery db2-fn:xmlcolumn('TABLE.COL_NAME')

Nota: El resultado del Listado 2 no puede pasar por referencia.

Listado 3. Uso de XQuery para extraer fragmentos de documentos XML
xquery db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client[Address/zip="10011" 
or Address/city="San Jose"]/Address

Nota: El resultado del Listado 3 no puede pasar por referencia.

Listado 4. Uso de una expresión FLWOR de XQuery para extraer fragmentos de documentos XML
xquery
for $y in db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client
where $y/Address/zip="10011" or $y/Address/city="San Jose"
return $y/email[1]/text()

Nota: El resultado del Listado 4 no puede pasar por referencia.

Listado 5. Uso de una XQuery con SQL incrustado para extraer documentos XML completos
xquery db2-fn:sqlquery('select xml_col from table')

Nota: El resultado del Listado 5 no puede pasar por referencia.

Listado 6. Uso de una consulta SQL/XML para extraer fragmentos de documentos XML
select xmlquery('$c/Client/Address' 
passing contactinfo as "c") 
from clients 
where status = 'Gold'
and xmlexists('$c/Client/email' passing contactinfo as "c")

En el Listado 6, el conector puede pasar el resultado ya sea en línea o por referencia.

Prefijo para las columnas de las expresiones

Cuando el conector ejecuta una consulta, trata de hacer corresponder los nombres de las columnas que devuelve la consulta con los nombres de columna especificados en el vínculo de salida de la etapa del conector. Sin embargo, los nombres de las columnas de XQuery están representados con un número. El conector les asigna un prefijo con una cadena que se puede configurar al establecer la propiedad del contexto de origen del conector Prefijo para las columnas de las expresiones. El prefijo utilizado como predeterminado es EXPR. Los nombres de las columnas de XQuery se convierten entonces en EXPR1, EXPR2, etc. Es importante observar que el conector buscaría estas columnas en la lista de columnas de vínculo.

Contexto de destino: Inserción/actualización/eliminación de columnas XML

Como mencionáramos anteriormente, el DB2 Connector puede funcionar como un destino para los datos entrantes y puede escribir estos datos en la base de datos DB2 adecuada. Los siguientes ejemplos (Listados 7 - 11) ilustran cómo el DB2 Connector puede insertar, actualizar o eliminar información en las columnas XML.

Algunos de estos ejemplos incorporan una palabra clave reservada de DataStage—ORCHESTRATE—que se utiliza para pasar parámetros al enunciado. El nombre de columna especificado después de la palabra clave ORCHESTRATE debe corresponder a una columna en el conjunto de resultados asociado con el vínculo de DataStage correspondiente.

Listado 7. Inserción de una columna XML
insert into table values(ORCHESTRATE.col1)

El nombre de la columna col1 indica que la columna está especificada en el vínculo de entrada. Esta columna puede ser NVarChar o LongNVarChar y puede pasar en línea o por referencia.

Listado 8. Actualización de un documento XML completo utilizando un enunciado de actualización SQL simple
update clients set 
contactinfo=( xmlparse(document ‘<email>newemail@someplace.com </email> ' ) )
where id = 3227
Listado 9. Actualización del valor de parte de un documento XML utilizando un parámetro
update xmlcustomer
set info = xmlquery('copy $new := $INFO
modify do replace value of $new/customerinfo/phone with $z
return $new' passing cast(ORCHESTRATE.col2 as varchar(15)) as "z")
where cid = ORCHESTRATE.col1

El Listado 9 utiliza dos parámetros. El valor de col2 reemplaza los datos /customerinfo/phone del documento XML; el valor de col1 limita las filas afectadas por la actualización.

Listado 10. Eliminación de un registro XML en base a un filtro de datos XML interno
delete from clients
where xmlexists ('$c/Client/Address[zip="95116"]'
passing clients.contactinfo as "c")
Listado 11. Eliminación de un registro XML utilizando un parámetro
delete from clients
where xmlexists ('$c/Client/Address[zip=$z]'
passing clients.contactinfo as "c", cast(ORCHESTRATE.col2 as varchar(15)) as z)

El Listado 11 utiliza el valor de col2 como un parámetro para limitar las operaciones DELETE en base al valor de un elemento XML (el elemento zip o código zip de la dirección de un cliente).

DataStage XML Pack

Esta serie de artículos depende del DataStage XML Pack 2.0 para brindar funciones clave a ambos escenarios. El XML Pack consta de tres etapas: XML Input (entrada), XML Output (salida), y XML Transformer. La serie utiliza las etapas XML Input y XML Output. La etapa XML Transformer, que se basa en XSLT, no se utiliza en los escenarios del artículo.

Etapa XML Input

XML Input convierte a los datos XML en tablas relacionales "planas". Con XML Input, usted puede:

  • Extraer datos utilizando expresiones estándar de XPath
  • Utilizar Esquemas XML y, como opción, validar datos XML
  • Soportar transformaciones complejas usando hojas de estilo a medida
  • Soportar múltiples vínculos de salida usando diferentes conjuntos de datos
  • Manejar errores

La Figura 1 muestra una transformación simple realizada por la etapa XML Input:

Figura 1. La etapa XML Input transforma datos XML jerárquicos en tablas "planas"
La etapa XML Input transforma datos XML jerárquicos en tablas

Etapa XML Output

XML Output convierte datos tabulares, como por ejemplo tablas relacionales, en estructuras XML jerárquicas. Con XML Output, usted puede:

  • Generar XML utilizando un subconjunto de expresiones XPath estándar
  • Generar múltiples documentos de una misma entrada de datos
  • Soportar espacios de nombres XML
  • Configurarla generación de documentos XML de diversas maneras, como por ejemplo, un documento por fila de entrada
  • Generar documentos de salida en disco o a través de un vínculo de salida
  • Manejar errores

La Figura 2 muestra una transformación simple realizada por XML Output:

Figura 2. La etapa XML Output transforma estructuras tabulares “planas” en jerarquías XML
La etapa XML Output transforma estructuras tabulares “planas” en jerarquías XML

Generalidades sobre DB2 pureXML

DB2 brinda a las empresas una interfaz de programación de aplicaciones común y una plataforma de gestión de bases de datos para los datos modelados en tablas así como jerarquías XML. La Figura 3 muestra cómo DB2 permite a las empresas gestionar mensajes y documentos XML junto a datos relacionales tradicionales. Con pureXML, no hay necesidad de "desmenuzar" datos XML críticos para el negocio ni de mapearlos a un formato relacional. En cambio, los datos XML se pueden almacenar intactos en su formato jerárquico original. Las aplicaciones pueden acceder rápidamente a los datos XML que necesitan e integrar datos XML y relacionales con poco esfuerzo.

Figura 3. La arquitectura de DB2 ofrece soporte a la gestión de datos relacionales y XML
La arquitectura de DB2 ofrece soporte a la gestión de datos relacionales y XML

Los escenarios de esta serie de artículos dependen de las capacidades pureXML de DB2, que incluyen la optimización del almacenamiento de datos XML en su formato jerárquico original y el soporte a datos XML de consulta en lenguajes SQL o XQuery.


Ejemplo de desarrollo y entorno en tiempo de ejecución

Para crear los escenarios del ejemplo que se describen en esta serie de artículos, utilizamos el siguiente software:

  • Information Server 8.1, que incluye los componentes de DataStage Designer y de DataStage Director. Además, instalamos el DataStage 8.1 DB2 Connector, que se incluye en un parche para DataStage 8.1 denominado "Connectors Rollup Patch 1." Debido a que uno de los escenarios utiliza una Etapa Transformer, también instalamos un C++ compiler como requisito previo. (Utilizamos Microsoft Visual Studio .NET 2003.)
  • DB2 9.5 Enterprise Server Edition.

Tanto DataStage como DB2 se instalaron en el mismo sistema Windows.

Los datos operativos del ejemplo incluyen información sobre carteras financieras. Derivamos estos datos de un subconjunto del estándar de comparación de código abierto Transaction Processing over XML (TPOX). Específicamente utilizamos datos que representan información sobre las cuentas de los clientes y sus títulos (o inversiones). Usted podrá aprender más sobre datos operativos y el diseño de almacenes de datos a medida que se interne en cada uno de los escenarios. (Para más información sobre TPOX, consulte la sección Recursos.)


Uso de pureXML como datos de entrada para el almacén

El escenario descripto en este artículo utiliza datos operativos XML almacenados en DB2 pureXML como datos de entrada para el trabajo de ETL. Como se muestra en la Figura 4, usted desea que DataStage extraiga los datos almacenados en una columna XML de DB2 y los mapee a dos tablas de un almacén de datos DB2. Una de estas tablas contiene solamente columnas relacionales tradicionales y la otra contiene columnas relacionales y una columna XML.

Figura 4. Los datos operativos almacenados en DB2 pureXML funcionan como datos de entrada al almacén de datos
Los datos operativos almacenados en DB2 pureXML funcionan como datos de entrada al almacén de datos

Este modelo de datos representa un escenario común en el cual partes de los datos XML a menudo se “desmenuzan” en una estructura relacional. Estas porciones representan datos que los usuarios de negocios frecuentemente analizan y consultan. Muchas herramientas de inteligencia de negocios se optimizan con el fin de soportar estructuras relacionales, de manera que desmenuzar datos XML frecuentemente consultados en columnas relacionales puede resultar bastante eficaz. Sin embargo, las necesidades del negocio pueden variar con el tiempo, por lo que determinar cuáles son las columnas relacionales que deben crearse puede resultar difícil para los administradores. El mantenimiento de la totalidad de datos XML en el almacén de datos permite a los usuarios acceder de inmediato a datos de negocios importantes que anteriormente no se encontraban desmenuzados en un formato relacional.

Para simplificar los ejemplos de escenarios de este artículo, utilizamos una única base de datos DB2 (denominada "TPOX") para almacenar tanto los datos operativos como los datos del almacén. Por supuesto, en un entorno de producción, los datos operativos y los datos del almacén se administrarían en bases de datos independientes, por lo general en distintos servidores.

Debido a que utilizamos DB2 para administrar los datos operativos y los datos del almacén, podríamos haber elegido utilizar tecnologías DB2 incorporadas para realizar gran parte del trabajo de ETL. No obstante, el traslado de este trabajo a DataStage minimice el impacto sobre las operaciones de DB2, lo cual constituye una meta común en los entornos de producción. Además, DataStage brinda una cantidad de funciones de transformación y depuración por sobre las que se encuentran en DB2. Por último, muchas empresas necesitan poblar sus almacenes de datos con datos de fuentes heterogéneas, y DataStage les brinda un servicio fundamental para esta tarea. Dichas capacidades se encuentran bien documentadas en otros artículos y se encuentran fuera del alcance de esta serie.


Generalidades sobre el diseño

El ejemplo de escenario de este artículo almacena datos operativos XML en la tabla TPOXADMIN.ACCOUNT, que funciona como la tabla de origen para DataStage en este escenario. La tabla ACCOUNT (cuenta) contiene una columna relacional (ID) y una columna XML (INFO). El Listado 12 muestra la facilidad con que se crea esta tabla:

Listado 12. SQL para crear la tabla de origen ACCOUNT
create table tpoxadmin.account(id int, info xml)

La columna INFO contiene detalles sobre la cuenta, incluyendo su título, fecha de apertura, saldo de trabajo, títulos de la cartera y otra información. El Listado 13 muestra una parte de un documento XML almacenado en la tabla ACCOUNT. El script de DB2 que acompaña a este artículo contiene el conjunto completo de registros de cuentas XML (ver Download).

Listado 13. Parte de un documento XML almacenado en la tabla ACCOUNT
<Account id="804130877" xmlns="http://tpox-benchmark.com/custacc">
  <Category>6</Category>
  <AccountTitle>Mrs Shailey Lapidot EUR</AccountTitle>
  <ShortTitle>Lapidot EUR</ShortTitle>
  <Mnemonic>LapidotEUR</Mnemonic>
  <Currency>EUR</Currency>
  <CurrencyMarket>3</CurrencyMarket>
  <OpeningDate>1999-02-20</OpeningDate>
  <AccountOfficer>Soraya Lagarias</AccountOfficer>
  <LastUpdate>2004-02-10T22:33:58</LastUpdate>
  <Balance>
    <OnlineActualBal>896882</OnlineActualBal>
    <OnlineClearedBal>337676</OnlineClearedBal>
    <WorkingBalance>430147</WorkingBalance>
  </Balance>
  . . . 
  <Holdings>
    <Position>
       <Symbol>ZION</Symbol>
       <Name>Zions Bancorporation</Name>
       <Type>Stock</Type>
      <Quantity>1927.719</Quantity>
    </Position>
    . . .    
  </Holdings>
. . . 
</Account>

Para simplificar la verificación, la base de datos del almacenamiento de datos de destino se encuentra configurada también para que sea TPOX. La información de origen de la columna INFO de TPOXADMIN.ACCOUNT quedará mapeada a dos tablas:—la tabla DWADMIN.ACCT que contiene información sobre la cuenta en general, y la tabla DWADMIN.HOLDINGS que contiene información sobre diversas inversiones (títulos de cartera) de una cuenta determinada. El Listado 14 muestra cómo se definen estas tablas:

Listado 14. Definiciones para las tablas del almacén de datos de destino
-- DWADMIN.ACCT contains general information about accounts. 
create table dwadmin.acct (
     id               int        primary key not null, 
     title            varchar(100), 
     currency         char(3), 
     workingbalance   int,  
     totalholdings    int,
     holdingtypes     int,
     officer          varchar(50), 
     datechanged      date,
     timechanged      time, 
     fullrecord       xml 
)

-- DWADMIN.HOLDINGS tracks specific investments (holdings) for a given account 
create table dwadmin.holdings (
   id                 int       references dwadmin.acct on delete cascade,  
   symbol             varchar(10), 
   type               varchar(25), 
   quantity           decimal(12,2) 
)

Para comprender cómo los datos XML de origen (en la columna INFO de TPOXADMIN.ACCOUNT) se mapean a las diversas columnas de las tablas del almacén de datos, consulte la Tabla 1. (Las columnas ID de ambas tablas del almacén de datos se pueblan con los valores de la columna ID d en la operación.)

Tabla 1. Datos XML de origen para cada columna de las tablas del almacén de datos
DWADMIN.ACCTDWADMIN.HOLDINGS
Nombre de la columnaFuente de datos (XPATH o...)Nombre de la columnaFuente de datos (expresión XPATH)
title/Account/AccountTitlesymbol/Account/Holdings/Position/Symbol
currency/Account/Currencytype/Account/Holdings/Position/Type
working balance/Account/WorkingBalancequantity/Account/Holdings/Position/Quantity
officer/Account/AccountOffice

datechangedextracto de /Account/LastUpdated

timechangedextracto de /Account/LastUpdated

fullrecorddocumento XML completo como está originalmente almacenado en la tabla de origen DB2

Como es de esperar, existen diversos modos de construir un trabajo de DataStage para este escenario. Este artículo aplica un enfoque de desarrollo incremental. En especial, el paso inicial lo guía a través de la creación de una parte del trabajo DataStage general que extrae, transforma, y carga datos en la tabla DWADMIN.ACCT. Una vez que se completa y verifica esta parte, el artículo lo guiará para ampliar el trabajo con el fin de extraer, transformar y cargar datos XML en la tabla DWADMIN.HOLDINGS. Sin embargo, primero deberá crear las tablas DB2 adecuadas para soportar este escenario.


Cómo preparer el entorno de la base de datos DB2

El artículo descargar contiene un script que crea la tabla (de origen) operacional y las tablas (de destino) del almacén de datos necesarias. Además, puebla la tabla operacional con información de la cuenta XML del ejemplo. Descargue y abra el archivo DSsetup.zip, y luego abra una ventana de comando DB2 para ingresar el siguiente comando:

Listado 15. Invocación al script de DB2 que acompaña a esta serie de artículos
 db2 –td@ -vf  DSsetup.db2

Nota: Este script está diseñado para soportar un servidor DB2 9.5 que funciona con Windows.


Cómo crear un trabajo en paralelo y delinear sus contenidos

Para comenzar, defina un nuevo trabajo DataStage en paralelo con placeholders para las diversas etapas (tareas de trabajo) que deban incluirse. Luego, usted deberá editar cada etapa para especificar las propiedades adecuadas que puedan ejecutar el trabajo de manera exitosa.

  1. Lanzamiento de DataStage Designer.
  2. para crear un nuevo trabajo en paralelo, haga clic con el botón derecho del Mouse sobre la carpeta Jobs del recuadro Repository, y seleccione New > Paralleljob.
  3. Agregue dos etapas del DB2 Connector al trabajo en paralelo. Uno de los conectores representará la tabla de origen TPOXADMIN.ACCOUNT, y el otro representará la tabla de destino DWADMIN.ACCT.
    1. Seleccione la pestaña Database del recuadro Palette.
    2. Arrastre la etapa DB2 Connector al trabajo en paralelo.
    3. Repita el paso anterior para crear una segunda etapa DB2 Connector.
    4. Coloque los dos conectores en lados opuestos del lienzo del trabajo en paralelo.
  4. Agregue una etapa XML Input al trabajo. (Esta etapa transformará los datos XML jerárquicos de las cuentas en una estructura tabular de resultados.)
    1. Seleccione la pestaña Real Time del recuadro Palette.
    2. Ubique la etapa XML Input y arrastre el ícono hasta el trabajo en paralelo.
    3. Coloque el ícono cerca de la etapa DB2 Connector.
  5. Agregue una etapa Transformer al trabajo. (Esta etapa dividirá un único elemento XML en dos valores que poblarán dos columnas diferentes en la tabla de destino.)
    1. Seleccione la pestaña Processing del recuadro Palette.
    2. Ubique la etapa Transformer y arrastre este ícono hasta el trabajo en paralelo.
    3. Coloque el ícono entre la etapa XML Input y la DB2 Connector final.
  6. Vincule las etapas entre sí.
    1. Para vincular la primera DB2 Connector con XML Input, con el botón derecho del mouse, haga clic en DB2 Connector y arrastre el Mouse hasta la etapa XML Input. Aparecerá una flecha entre ambas etapas.
    2. Vincule XML Input a la etapa Transformer.
    3. Vincule la etapa Transformer a la DB2 Connector final.
  7. Si lo desea puede personalizar su trabajo con nombres descriptivos para cada etapa, y vincularlos utilizando las facilidades estándar de DataStage. (De ser necesario, consulte la sección Recursos para ver vínculos a instructivos y documentación sobre DataStage.)
  8. Verifique que el diseño de su trabajo en paralelo es similar al de la Figura 5, que muestra a las diversas etapas vinculadas, según lo descripto en el Paso 6:
    Figura 5. Esquema del trabajo de DataStage para la primera parte del escenario de integración
    Esquema del trabajo de DataStage para la primera parte del escenario de integración

    (Visualizar una versión mayor de la Figura 5.)

  9. Para guardar su trabajo, haga clic en File > Save en la barra de herramientas principal, y especifique el nombre que eligió para su trabajo.

Ahora, usted cuenta con un esquema de trabajo en paralelo para la primera parte de su trabajo de DataStage.


Cómo importar las definiciones de las tablas

La base de datos DB2 TPOX ya contiene tablas de origen y destino, de manera que usted deberá importar los metadatos sobre estas tablas a DataStage.

  1. En la barra de herramientas principal, seleccione Import > TableDefinitions > Inicie el Connector Import Wizard.
  2. Se abrirá una nueva ventana: "Connector metadata import – Connector selection”. Seleccione DB2 Connector (Variant 9.1), y luego haga clic en Next.
  3. Ingrese los detalles adecuados para la conexión, incluyendo el tipo de instancia (DB2), el nombre de la base de datos (TPOX), y la ID de usuario y contraseña válidas.
  4. Haga clic en la opción Test connection ubicada en el ángulo superior derecho de esta ventana, para verificar que usted puede conectarse a la base de datos DB2 TPOX.
  5. Luego de establecer con éxito una conexión, haga clic en Next y luego sobre OK.
  6. Acepte los valores predeterminados para la ubicación de la fuente de datos. Estos incluyen un nombre de host para DB2 y un nombre de base de datos para TPOX (DB2).
  7. Haga clic en Next.
  8. Seleccione el esquema TPOXADMIN del listado desplegable Filter, verifique que se encuentre marcada la opción include tables, y luego haga clic en Next.
  9. Seleccione la tabla ACCOUNT en la lista de tablas disponibles para este esquema.
  10. Deje todas las opciones sin marcar, incluyendo la opción "XML Columns as LOBs". Su trabajo de DataStage deberá procesar y transformar los datos XML, por lo cual los tratará como si fueran datos de una cadena (más que un objeto grande desestructurado o LOB).
  11. Verifique que la tabla TPOXADMIN.ACCOUNT se encuentre programada para importar, y haga clic en Import.
  12. Se abrirá una ventana popup, que le pedirá que seleccione una carpeta para la importación de metadatos. Seleccione Table Definitions, y haga clic en OK.
  13. Repita los pasos anteriores para importar las dos tablas de destino del almacén de datos.
    • En el Paso 8, seleccione el esquema DWADMIN, en lugar del esquema TPOXADMIN.
    • En el Paso 9, seleccione las tablas ACCT y HOLDINGS.(Inicialmente, usted sólo utilizará la definición de tabla DWADMIN.ACCT, pero importar también la tabla DWADMIN.HOLDINGS en este momento representará más tarde un ahorro de tiempo.)
  14. Para confirmar que usted ha importado con éxito los metadatos de todas las tablas necesarias, amplíe la carpeta Table Definitions del recuadro Repository ubicado en el ángulo superior izquierdo y confirme que existan ingresos para TPOXADMIN.ACCOUNT, DWADMIN.ACCT, y DWADMIN.HOLDINGS.
  15. Guarde su trabajo.

Ahora, usted está listo para editar cada una de las etapas del trabajo.


Edición de la etapa de la tabla de origen de DB2

La tabla TPOXADMIN.ACCOUNT contiene información operacional necesaria para el almacén. Se deben editar las propiedades de la etapa DB2 Connector para poder reflejar la información adecuada sobre esta tabla de datos de entrada.

  1. Haga doble clic sobre el DB2 Connector que representa el origen de los datos de entrada.
  2. Se abrirá una ventana. En la pestaña Properties, especifique la información de conexión correcta. Esto incluye el tipo de instancia (DB2), el nombre de la base de datos (TPOX), y la ID de usuario y contraseña válidas, como se muestra en la Figura 6:
    Figura 6. Configuración de las propiedades de la tabla de origen DB2
    Configuración de las propiedades de la tabla de origen DB2
  3. Haga clic en Test en el ángulo superior derecho del recuadro para verificar que su conexión a la base de datos es exitosa.
  4. Desplácese hacia abajo hasta la sección Usage de la pestaña Properties, y especifique las siguientes configuraciones (como se muestran también en la Figura 6):
    • Generate SQL: Yes
    • Table name: TPOXADMIN.ACCOUNT
    • Array size: 1
  5. Haga clic en View Data en el lado derecho de la fila Usage para verificar que usted pueda consultar la tabla con éxito, y luego haga clic en OK para guardar sus configuraciones.
  6. Haga clic en la pestaña Columns, y seleccione Load en la parte inferior del recuadro.
  7. Aparecerá una ventana con las definiciones de las tablas. Seleccione la tabla TPOXADMIN.ACCOUNT y haga clic en OK.
  8. Se abrirá una ventana con las columnas de la tabla. Acepte la predeterminada en la cual todas las columnas se encuentran seleccionadas. (Observe que la columna INFO, que fuera creada en DB2 como una columna XML, aparece aquí con un tipo SQL de NVarChar, que representa una cadena de Unicode. Esto es correcto.)
  9. Haga clic en OK.
  10. Especifique un largo adecuado para la columna INFO. Para los datos de este ejemplo, será suficiente un largo de 5000 bytes.
  11. Haga clic en OK.
  12. Guarde su trabajo.

La etapa DB2 Connector para la tabla de origen está lista. En el próximo paso, usted personalizará el DB2 Connector que representa a la tabla de destino del almacén de datos..


Edición de la etapa de la tabla DB2 de destino

La tabla DWADMIN.ACCT es una de las dos tablas del almacén de datos que deberá poblarse desde la fuente de datos de entrada. Como se mencionara anteriormente, esta tabla contiene numerosas columnas relacionales que incluyen información específica sobre cuentas financieras, así como una columna pureXML con todos los datos de la cuenta en formato XML. Las propiedades de la etapa DB2 Connector de destino deben ser editadas para reflejar la información correcta sobre esta tabla.

  1. Para abrir el DB2 Connector que representa a la tabla de destino, haga doble clic sobre el ícono correspondiente.
  2. En la pestaña Properties, especifique la información de conexión adecuada, que incluye el tipo de instancia (DB2), el nombre de la base de datos (TPOX), y una ID de usuario y contraseña válida.
  3. Verifique que su conexión a la base de datos sea exitosa.
  4. En la sección Usage de la pestaña Properties, especifique las siguientes configuraciones, como se muestra en la Figura 7:
    • Write mode: Insert
    • Generate SQL: Yes
    • Table name: DWADMIN.ACCT
    • Array size: 1
    • Table action: Truncate
    Figura 7. Configuración de las propiedades para una de las tablas DB2 de destino
    Configuración de las propiedades para una de las tablas DB2 de destino
  5. Haga clic en View Data para verificar que usted pueda consultar exitosamente la tabla. (La primera vez que usted ejecute el trabajo la tabla estará vacía.)
  6. Presione OK para guardar las configuraciones.
  7. Haga clic en la pestaña Columns, y seleccione Load.
  8. Seleccione la tabla DWADMIN.ACCT, y haga clic en OK.
  9. Acepte la tabla predeterminada en la cual todas las columnas se encuentran seleccionadas. (Observe que la columna FULLRECORD, que fuera creada en DB2 como una columna XML, aparece aquí con un tipo SQL de NVarChar.)
  10. Haga clic en OK.
  11. Especifique un largo adecuado para la columna FULLRECORD. Para los datos del ejemplo, un largo de 5000 bytes será suficiente.
  12. Haga clic en OK.
  13. Guarde su trabajo.

Con las etapas DB2 de origen y destino definidas, es el momento de trabajar sobre las etapas de procesamiento de los datos.


Edición de la etapa XML Input

Usted deberá personalizar la etapa XML Input para poder extraer datos XML de la columna INFO de la tabla TPOXADMIN.ACCOUNT y para poder generar un conjunto de resultados tabulares, que serán utilizados en última instancia para poblar la tabla DWADMIN.ACCT.

  1. Para abrir la etapa XML Input, haga doble clic sobre el ícono correspondiente.
  2. Haga clic en la pestaña Input.
  3. Aparecerá un segundo conjunto de pestañas. Haga clic en la sub-pestaña XML Source (si fuera necesario).
  4. Especifique la columna XML de origen. Use la pestaña desplegable para seleccionar la columna INFO.
  5. Especifique XML document (más que la ruta URL/File) como el contenido de la columna.
  6. Haga clic en la sub-pestaña Column.
  7. Verifique que aparecen las columnas ID e INFO.
  8. Configure el tipo de datos para la columna INFO en VarBinary, y fije el largo de la columna en 5000 bytes. (El uso de VarBinary permite que la etapa XML Input maneje los datos en su formato UTF-8 original, evitando innecesarias conversiones de conjuntos de caracteres.)
  9. Haga clic en la pestaña principal Output.
  10. Aparecerá un nuevo conjunto de pestañas Haga clic en la sub-pestaña TransformationSettings.
  11. Verifique que se encuentre marcada la configuración Repetition element required (elemento de repetición requerido). Esto es necesario para indicar que usted intenta extraer múltiples registros de un registro único que contiene XML. La etapa XML Input realizará un bucle a través del elemento de repetición y producirá un registro de salida para cada ocurrencia de dicho elemento. En un paso posterior, usted observará cómo se indica la ruta al elemento de repetición.
  12. Seleccione el casillero de verificación include namespace declaration (incluir declaración de espacio de nombre).
  13. Los datos XML de origen contienen un espacio de nombre, de manera que usted deberá declararlo aquí. Ingrese lo siguiente:
    xmlns:ns=
                            "http://tpox-benchmark.com/custacc"
  14. Haga clic en la sub-pestaña Columns, y seleccione Load.
  15. Aparecerá una lista de definiciones. Seleccione la tabla DWADMIN.ACCT.
  16. Acepte los valores predeterminados para cargar todas las columnas.
  17. Verifique que el casillero de verificación Ensure all Char columns use Unicode (asegurar que todas las columnas Char usan Unicode) se encuentra marcado, y luego haga clic en OK.
  18. Modifique la estructura de salida de este trabajo de la siguiente manera (para que corresponda al contenido de la Figura 8):
    1. Especifique un largo de 5000 bytes para la columna FULLRECORD.
    2. Modifique el tipo de datos de la columna TIMECHANGED a NVarChar con un largo de 20. El tratamiento de estos datos como una cadena le permitirá aprovechar ciertas funciones de transformación incorporadas en DataStage, como usted podrá observar en breve.
    3. Especifique la expresión XPATH adecuada que deberá usar DataStage para extraer información de los datos XML de entrada. Repita este procedimiento para cada una de las columnas, a excepción de la columna ID (que se extrae de una columna relacional de la tabla de origen TPOXADMIN.ACCOUNT). Las configuraciones de descripción apropiadas incluyen:
      • TITLE: /ns:Account/ns:AccountTitle/text()
      • CURRENCY: /ns:Account/ns:Currency/text()
      • WORKINGBALANCE:/ns:Account/ns:Balance/ns:WorkingBalance/text()
      • OFFICER: /ns:Account/ns:AccountOfficer/text()
      • DATECHANGED: /ns:Account/ns:LastUpdate/text()
      • TIMECHANGED: /ns:Account/ns:LastUpdate/text()
      • FULLRECORD: /ns:Account
    4. Identifique la columna TITLE como clave. para hacerlo, cambie el valor Key para TITLE a Yes.Esto le indicará a DataStage que utilice este valor del elemento XML como identificador del elemento de repetición. Cada vez que ocurra ns:AccountTitle, la etapa producirá un registro de salida. En otras palabras, producirá un registro para cada Cuenta, debido a que cada una de las cuentas contiene un elemento AccountTitle. En este escenario, se podrían utilizar también para este fin otras columnas, incluyendo las columnas CURRENCY, WORKINGBALANCE, y OFFICER, debido a que todas ellas son elementos obligatorios del elemento Account. Por motivos prácticos, hemos seleccionado TITLE como la columna clave.
    Figura 8. Definiciones de las columnas de resultados de salida de la etapa XML Input
    Definiciones de las columnas de resultados de salida de la etapa XML Input

    (Visualizar una imagen más grande de la Figura 8.)

    Nota: Los tipos VarChar con una extensión Unicode equivalent a los tipos NVarChar del DB2 Connector.

  19. Haga clic en OK y guarde su trabajo.

Ahora, usted ha programado la etapa XML Input para que extraiga datos de una columna pureXML de DB2 y para que la prepare para su mapeo a una tabla DB2 del almacén de datos de destino que es en gran parte relacional. A continuación, usted personalizará la etapa Transformer para que los datos puedan ser modificados según las necesidades antes de cargarlos a la tabla de destino.


Edición de la etapa Transformer

La etapa Transformer debe extraer información horaria de una cadena de entrada que contiene datos timestamp para poder poblar correctamente la columna TIMECHANGED de la tabla DWADMIN.ACCT de destino. DataStage brinda una serie de funciones incorporadas para manipular datos de fecha/hora, realizando conversiones de los tipos de datos, etc. Usted deberá editar la etapa Transformer para que invoque las funciones adecuadas para su conversión de datos.

  1. Para abrir la etapa Transformer, haga doble clic sobre el ícono correspondiente.
  2. Haga clic en el ícono Column Auto-Match de la barra de herramientas para indicar a DataStage que automáticamente mapee las columnas por nombre entre los vínculos de entrada y salida de datos. (Usted definió e conjunto de resultados para el vínculo de entrada de este paso en la sección "Edición de la etapa XML Input". Usted definió el conjunto de resultados para el vínculo de salida de este paso en la sección "Edición de la etapa de la tabla DB2 de destino".)
  3. Haga clic en OK.
  4. Modifique la configuración Derivation
    1. para la columna TIMECHANGED del vínculo de salida para transformar los datos según sus necesidades. Recuerde que la cadena de entrada contiene un timestamp completo con información de fechas y horarios, y usted desea poblar la columna TIMECHANGED de la tabla DB2 de destino solamente con un valor horario.
    2. Resalte la configuración de derivación apropiada, haga clic con el botón derecho del mouse y seleccione Edit Derivation.
    3. Aparecerá un recuadro en blanco. Utilice el asistente incorporado para seleccionar las llamadas a las funciones de transformación que correspondan, o ingrese el siguiente código:
      TimestampToTime(
                                      StringToTimestamp(AccountOverview.TIMECHANGED,
                                      "%yyyy-%mm-%ddT%hh:%nn:%ss"))

      Por si tiene curiosidad al respecto, le comento que la llamada a la unción interna convierte la cadena de entrada en un timestamp que se adapta a un formato específico. La función externa toma este timestamp y lo convierte en un valor horario. Para ver más detalles sobre estas funciones o sobre la etapa Transformer, consulte la sección Recursos.
  5. Verifique que su transformación sea similar a la de la Figura 9, que ilustra el mapeo entre los vínculos de entrada y salida (generados en el Paso 2) así como la derivación que usted editara en el Paso 4:
    Figura 9. Propiedades modificadas para la etapa Transformer
    Propiedades modificadas para la etapa Transformer

    (Visualizar una versión más grande de la Figura 9.)

  6. Haga clic en OK.

En este momento, usted ha completado las modificaciones necesarias para la parte inicial de su trabajo con DataStage. IEste es el momento de compilar y verificar el trabajo realizado.


Compilación y verificación del trabajo

Siga los procedimientos estándar de DataStage para compilar, validar y ejecutar su trabajo. Consulte la sección Recursos para ver los vínculos a la documentación de DataStage, si fuera necesario. A continuación, presentamos un breve resumen:

  1. Presione la tecla F7, o seleccione el ícono Compile (compilar) de la barra de herramientas. Asegúrese de que el trabajo se ha compilado sin errores.
  2. Haga clic en Ctrl+F5, o seleccione el ícono Run de la barra de herramientas.
  3. Fije Warnings en no limit, y haga clic en Run.
  4. DataStage intentará ejecutar su trabajo. Ponga en funcionamiento DataStage y QualityStage Director para que inspeccionen los resultados de su trabajo.
  5. De ser necesario, pase a la página Status y resalte su trabajo. Para hacerlo, seleccione View > Status, o haga clic en el ícono Status de la barra de herramientas.
  6. Pase a la página Log para repasar los detalles de la ejecución del trabajo. Para hacerlo, seleccione View > Log, o haga clic en el ícono Log de la barra de herramientas. El trabajo se deberá ejecutar de manera exitosa, aunque puedan aparecer mensajes de advertencia.

En este momento, usted puede inspeccionar los datos de la tabla de destino utilizando las herramientas estándar de DB2. Si lo prefiere, usted podrá visualizar los datos desde DataStage Designer realizando las siguientes acciones:

  1. Haga doble clic sobre el DB2 Connector que representa a la tabla de destino.
  2. Haga clic en el vínculo View Data para visualizar los datos de la tabla de destino.

Agregue más etapas para poblar la tabla final del almacén de datos

Para completar el escenario, usted deberá extraer la información apropiada de la fuente XML Input y cargar estos datos en la tabla DWADMIN.HOLDINGS. Para hacerlo, se requerirá el agregado de dos nuevas etapas al trabajo existente.

  1. Seleccione una etapa Copy de la sección Processing de la paleta, y ubique la etapa Copy justo por debajo de la etapa XML Input existente.
  2. Coloque una nueva etapa DB2 Connector en la paleta a la derecha de la etapa Copy.
  3. Vincule la etapa XML input con la nueva etapa Copy, y vincule la nueva etapa Copy con la nueva etapa DB2 Connector.
  4. Si lo desea, otorgue un nuevo nombre más descriptivo a sus nuevos vínculos y etapas.
  5. Verifique que el diseño de su trabajo sea similar a la Figura 10, que muestra las diversas etapas vinculadas entre sí, según se describe en el Paso 3:
    Figura 10. Trabajo en DataStage revisado para este escenario
    Trabajo en DataStage revisado para este escenario

    (Ver una versión más grande de la Figura 10.)

Edición de la nueva etapa DB2 Connector:

  1. Especifique la información de conexión adecuada, incluyendo el tipo de instancia (DB2), el nombre de la base de datos (TPOX), y una ID de usuario y contraseña válida.
  2. Pruebe la conexión.
  3. Especifique la información de uso apropiada:
    • Write Mode: Insert
    • Generate SQL: Yes
    • Table name: DWADMIN.HOLDINGS
    • Table action: Truncate
    • Array Size: 1
  4. Seleccione View Data para verificar que las especificaciones sean válidas.
  5. Haga clic en la pestaña Column.
  6. Cargue la información para la definición de las tablas para DWADMIN.HOLDINGS. Importe todas las columnas.
  7. Fije el valor Key de la columna ID en Yes.
  8. Especifique las expresiones XPATH que deberá utilizar DataStage para extraer información para los datos XML de entrada (que se muestran en la Figura 11). Repita el procedimiento para cada una de las columnas, a excepción de la columna ID. Las configuraciones correctas de descripción incluyen:
    • SYMBOL:/ns:Account/ns:Holdings/ns:Position/ns:Symbol/text()
    • TYPE:/ns:Account/ns:Holdings/ns:Position/ns:Type/text()
    • QUANTITY:/ns:Account/ns:Holdings/ns:Position/ns:Quantity/text()
      Figura11. Valores editados de las columnas del DB2 Connector para la tabla DWADMIN.HOLDINGS
      Figura11. Valores editados de las columnas del DB2 Connector para la tabla DWADMIN.HOLDINGS

      (Visualizar una versión más grande de la Figura 11.)

Edición de la etapa XML Input existente:

  1. Haga clic en la pestaña Output y utilice el menú desplegable que aparece por debajo del casillero Output Name (nombre de salida) para identificar el vínculo DataStage a modificar. (En la Figura 10, el vínculo correcto es HoldingInfo, ya que es el que controla el flujo de datos de la etapa XML Input a la etapa Copy que usted recientemente agregara a su trabajo.)
  2. Haga clic en la pestaña Transformation Settings.
  3. Verifique que la configuración Repetition element required se encuentra marcada.
  4. Seleccione el casillero de verificación include namespace declaration.
  5. Ingrese la siguiente definición XML de namespace en la casilla blanca:
    xmlns:ns="http://tpox-benchmark.com/custacc"
  6. Haga clic en la sub-pestaña Columns.
  7. Cargue la información para la tabla DWADMIN.HOLDINGS. Seleccione todas las columnas.
  8. Especifique las expresiones XPath que deberá utilizar DataStage para extraer información para los datos XML de entrada (que se muestran en la Figura 12). Repita esta acción para cada una de las columnas, a excepción de la columna ID. Las configuraciones adecuadas de descripción incluyen:
    • SYMBOL:/ns:Account/ns:Holdings/ns:Position/ns:Symbol/text()
    • TYPE:/ns:Account/ns:Holdings/ns:Position/ns:Type/text()
    • QUANTITY:/ns:Account/ns:Holdings/ns:Position/ns:Quantity/text()
    Figura 12. Definiciones de las columnas para la salida de datos de la etapa XML Input a la nueva etapa Copy
    Definiciones de las columnas para la salida de datos de la etapa XML Input a la nueva etapa Copy

    (Visualizar una versión más grande de la Figura 12.)

  9. Fije el valor Key para la columna SYMBOL en Yes. De esta manera, la etapa producirá un registro de salida para cada ocurrencia del elemento Symbol. Debido a que Symbol ocurre en cada elemento Position, la etapa producirá un registro para cada elemento Position.
  10. Haga clic en OK.

Edite la nueva etapa Copy. (Esta etapa pasa información entre las etapas XML Input y DB2 Connector, cada una de las cuales asocia diferentes significados a los valores Key. La etapa XML Input utiliza una columna Key para identificar al elemento de repetición, que determina de qué manera se generan los datos XML. Cuando usted editó la etapa XML Input en una sección anterior, el trabajo que realizó en los Pasos 3 y 9 identificó el valor Key y el elemento de repetición. DB2 Connector, obviamente, utiliza a Key para identificar a una columna que es la clave de una base de datos. La etapa Copy permite que los datos pasen entre estas etapas sin que se produzcan conflictos operativos debido al modo en que cada etapa trata a los valores clave. Para hacerlo, sus vínculos de entrada y salida identifican como claves a diferentes columnas.)

  1. En la pestaña Output, seleccione Mappings.
  2. Haga clic en Auto-Match, y seleccione OK.
  3. Si lo desea, inspeccione las definiciones de Key para las columnas de los vínculos de entrada y salida.
  4. Haga clic en la pestaña Input, y luego sobre la sub-pestaña Columns.
  5. Verifique que la columna SYMBOL esté identificada como Key.
  6. Haga clic en la pestaña Output, y luego sobre la sub-pestaña Columns.
  7. Verifique que la columna ID esté identificada como Key.
  8. Haga clic en OK para finalizar la edición de esta etapa.

Compruebe el trabajo que ha revisado:

  1. Si todavía no lo ha hecho, guarde el trabajo.
  2. Compile el trabajo.
  3. Verifique que no haya errores.
  4. Ejecute el trabajo.
  5. Utilice DataStage Director para inspeccionar el registro y para verificar que el trabajo finalice con éxito.
  6. Como opción, inspeccione los datos de la tabla de destino seleccionando ViewData en la etapa editor para la etapa DB2 de destino.

Resumen

El mayor uso de XML como formato preferido para el intercambio de datos impulsa a los arquitectos y administradores de datos a evaluar opciones para la integración de datos XML críticos para el negocio a sus almacenes de datos. En esta primera edición de esta series de dos partes, usted aprendió cómo IBM InfoSphere DataStage extrae y transforma datos XML gestionados por DB2 pureXML. Además, usted analizó de qué manera DataStage puede cargar estos datos en dos tablas: una de ellas con tipos de datos SQL tradicionales, y otra que presenta columnas XML y relacionales.

La segunda parte de esta serie de artículos analiza otro escenario importante: el uso de DataStage para leer la información desde un archivo plano, convertir los datos a un formato XML, y cargar estos datos XML en un almacén de datos que contiene una tabla con una columna DB2 pureXML.

Agradecimientos

Gracias a Stewart Hanna, Susan Malaika, y Ernie Ostic por sus comentarios de revisión sobre este artículo.


Descargar

DescripciónNombretamaño
Sample scripts and dataDSsetup.zip141KB

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Information mgmt, Lotus
ArticleID=427843
ArticleTitle=IBM InfoSphere DataStage y DB2 pureXML, Parte 1: Cómo integrar datos operativos XML a un almacén de datos
publish-date=08202009