À medida que mais empresas dependem de XML para representar e trocar dados de negócios, a capacidade de integrar dados operacionais XML em armazéns de dados torna-se mais crítica. O primeiro artigo desta série explora como o IBM InfoSphere DataStage pode extrair dados XML armazenados com a tecnologia DB2 pureXML, transformar esses dados em uma estrutura relacional tradicional e carregar os dados em um armazém de dados.
Este artigo foca outros meios de usar DataStage para integrar dados XML a um armazém. Fornece instruções passo a passo para ler dados de negócios a partir de um arquivo simples, transformando esses dados em XML e preenchendo um armazém de dados com os dados transformados. O armazém de dados é construído em DB2 pureXML.
Convertendo Dados Operacionais em Dados do Armazém pureXML
Os arquivos são uma fonte comum de dados operacionais que as empresas precisam integrar a seus armazéns de dados. Esse cenário mostra como usar o DataStage para ler informações sobre participações financeiras a partir de um arquivo delimitado por vírgula, converter os dados em XML e, em seguida, armazenar os dados XML em um armazém de dados usando o DB2 pureXML. Armazenar os dados como XML pode ser útil se aplicativos de recebimento de dados precisarem trabalhar com os dados como XML. Essa situação está se tornando cada vez mais comum à medida que as empresas dependem de formatos XML específicos do segmento de mercado para troca de dados e provedores de aplicativos dependem de XML como um meio de representação de dados que neutraliza o fornecedor. É claro que também é possível usar o DataStage para converter dados de arquivos para uma estrutura relacional, mas como esse recurso está bem documentado em outra local, não vamos explorar isso neste artigo.
Como na parte um desta série de artigos, os dados deste cenário são baseados em contas financeiras. O arquivo de amostra delimitado por vírgula que serve como dados de origem contém registros que representam contas e participações do portfólio de investimento associadas. Cada registro do arquivo refere-se ao ID da conta, tipo de investimento (por exemplo, ação ou seguro-garantia), símbolo do investimento e quantidade de ações mantidas. A Lista 1 mostra um exemplo de um registro do arquivo de amostra.
Lista 1. Exemplo de um Registro no Arquivo de Origem de Amostra
804130877,"Stock","ZION",+000001927.719 |
Cada registro do arquivo de origem descreve uma participação (investimento) por conta. Cada conta pode ter diversas partições, portanto, pode haver diversos registros para cada conta. Os registros no arquivo de amostra são classificados por ID de conta, eliminando a necessidade de instruir o DataStage para classificar a entrada antes de completar o processamento desejado. É possível fazer download do arquivo de origem de amostra (assim como de outros materiais de suporte para esta série de artigos) a partir da seção Download .
A tarefa do DataStage que será construída precisa converter os dados do arquivo de origem em documentos XML individuais
— um documento para cada conta.
Isso significa que em casos em que uma conta possui mais de um registro, é necessário mapear esses registros para um único documento XML.
A Lista 2 é um exemplo de um documento XML para uma única conta.
Observe que cada um dos diversos elementos <Position> representa um investimento separado para a conta.
Lista 2. Exemplo de Documento XML de Destino com Dados e Participações para uma Única Conta
<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> |
Como parte desse cenário, o DataStage alimenta os dados convertidos em uma tabela de destino denominada DWADMIN.ACCTPROFILE. Parte do script usado para preparar o ambiente de banco de dados DB2 (descrito na Etapa 1 abaixo) contém o código mostrado na Lista 3. Essa parte do código cria essa tabela de destino.
Lista 3. Definição da Tabela do Armazém de Dados
create table dwadmin.acctprofile ( id int primary key not null, info xml ) |
Os valores para a coluna ID da tabela ACCTPROFILE são derivados do primeiro campo do arquivo de entrada. A coluna INFO contém um documento XML que representa todos os campos do arquivo de origem (inclusive as informações de ID da conta).
Etapa 1: Preparar o Ambiente de Banco de Dados DB2
Se já tiver feito download e tiver executado o script do DB2 de amostra ao trabalhar com a parte um desta série de artigos, ignore esta etapa e vá para a Etapa 2. Caso contrário, faça o seguinte:
- Faça download do arquivo DSsetup.zip a partir da seção Download e descompacte o arquivo ZIP.
- Abra uma janela de comandos do DB2.
- Emita o comando mostrado na Lista 4 para executar o script. Entre outras coisas, esse script cria a tabela DWADMIN.ACCTPROFILE usada para este cenário.
Lista 4. Comando para Executar o Script de Configuração do DB2 a partir de uma Janela de Comandos do DB2
db2 –td@ -vf DSsetup.db2 |
Nota: Esse script é projetado para suportar um servidor DB2 9.5 em execução no Windows.
Etapa 2: Criar uma Tarefa Paralela do DataStage e Estruturar seu Conteúdo em Tópicos
O cenário deste artigo segue a mesma abordagem de desenvolvimento que a parte um desta série de artigos. Primeiro, defini-se uma tarefa paralela do DataStage com marcadores para diversos estágios (esta etapa). Em seguida, edita-se cada estágio para especificar propriedades apropriadas para executar a tarefa com êxito.
- Ative o DataStage Designer.
- Clique com o botão direito do mouse na pasta Tarefas na área de janela Repositório e selecione Nova > Tarefa Paralela.
- Inclua um estágio Arquivo Sequencial na parte superior esquerda da área de design de tarefa para a nova tarefa paralela. (A partir da seção Arquivo da Paleta, selecione o ícone Arquivo Sequencial e arraste-o para a área de design da tarefa.) Esse estágio representa seu arquivo de origem de entrada.
- Inclua um estágio do DB2 Connector na parte superior direita da tarefa paralela. (A seção Banco de Dados da Paleta contém estágios do DB2.) Esse estágio representa sua tabela do armazém de dados de destino.
- Inclua um estágio de Saída XML abaixo do estágio Arquivo Sequencial do lado esquerdo da área de design. (A seção Tempo Real da paleta contém estágios XML.) Esse estágio de Saída XML criará a parte da hierarquia do documento XML que representa as posições (investimentos) da conta.
- Inclua outro estágio de Saída XML abaixo do estágio DB2 Connector do lado direito da área de design. Esse estágio de Saída XML criará as demais partes da hierarquia do documento XML que representam informações do portfólio da conta.
- Inclua um estágio de Cópia entre dois estágios de Saída XML. (A seção Processamento da Paleta contém o estágio de Cópia.) Esse estágio de Cópia alimentará informações do estágio inicial de Saída XML para o segundo estágio de Saída XML.
- Conecte os estágios juntos na seguinte ordem:
Arquivo Sequencial -> Saída XML -> Cópia -> Saída XML -> DB2 Connector - Como opção, renomeie os links e estágios para facilitar o acompanhamento da lógica.
- Verifique se o esqueleto de seu paralelo é semelhante à Figura 1.
- Salve seu trabalho.
Figura 1. Esqueleto da Tarefa do DataStage
(Consulte uma versão maior da Figura 1.)
Etapa 2: Importar Definições da Tabela
O script de configuração do DB2 executado (na Etapa 1 ou ao seguir as etapas do primeiro artigo desta série) criou uma tabela de destino para as informações do portfólio da conta em seu banco de dados DB2. Nesta etapa, você importa os metadados sobre essa tabela para o DataStage para que possa customizar a tarefa para funcionar com esta tabela.
- A partir do menu principal, selecione Importar > Definições de Tabela > Iniciar Assistente de Importação do Connector. Uma nova janela aparece para "Importação de Metadados do Connector – Seleção do Connector".
- Selecione DB2 Connector (Variante 9.1) e clique em Avançar.
- Insira os detalhes apropriados para a conexão, incluindo o tipo de instância (DB2), o nome do banco de dados (TPOX) e um ID de usuário e senha válidos.
- Clique em Testar Conexão para verificar se é possível conectar ao banco de dados DB2 TPOX.
- Após uma conexão bem-sucedida, clique em Avançar e, em seguida, em OK.
- Aceite os valores padrão para o local da origem de dados. Eles incluem o nome de um host do DB2 e o nome de um banco de dados igual a TPOX (DB2).
- Clique em Avançar.
- Selecione o esquema DWADMIN na lista suspensa Filtro , verifique se a opção incluir tabelas está selecionada e clique em Avançar.
- Selecione a tabela ACCTPROFILE na lista de tabelas disponíveis para o esquema.
- Verifique se a tabela DWADMIN.ACCTPROFILE está programada para importação e clique em Importar.
- Uma janela pop-up aparece solicitando que seja selecionada uma pasta para a importação de metadados. Selecione Definições de Tabela e clique em OK.
- Salve seu trabalho.
Agora, você está pronto para editar cada estágio da tarefa.
Etapa 4: Editar a Tabela de Destino do DB2
Como acaba de importar metadados do DB2 sobre a tabela do armazém de dados de destino, esse é um ponto conveniente a ser trabalhado no estágio do DB2 Connector. Nesta etapa, as propriedades do estágio do DB2 Connector são editadas para fazerem referência à tabela DWADMIN.ACCTPROFILE.
- Dê um clique duplo no DB2 Connector que representa a tabela de destino.
- Na guia Propriedades , especifique as informações apropriadas na seção Conexão . Isso inclui o tipo de instância (DB2), o nome do banco de dados (TPOX) e um ID de usuário e senha válidos.
- Clique em Testar no canto superior direito da área de janela para verificar se é possível conectar com êxito ao banco de dados.
- Role para baixo até a seção Uso da guia Propriedades e especifique as seguintes configurações (consulte Figura 2):
- Modo de gravação:
Inserção - Gerar SQL:
Sim - Nome da tabela:
DWADMIN.ACCTPROFILE - Tamanho da matriz:
1 - Ação da tabela:
Truncar - Como opção, clique em Visualizar Dados do lado direito da linha Uso par a verificar se é possível consultar a tabela com êxito. (A tabela estará vazia até a tarefa completa do DataStage ser concluída e executada com êxito.)
- Clique em OK para salvar essas configurações.
- Clique na guia Colunas e selecione Carregar.
- Selecione a tabela DWADMIN.ACCTPROFILE e clique em OK.
- Aceite o padrão no qual todas as colunas da tabela são selecionadas. (Observe que INFO, que foi criada no DB2 como uma coluna XML, aparece aqui como um tipo SQL de NVarChar.)
- Clique em OK.
- Especifique um comprimento apropriado para a coluna INFO. Neste caso, um comprimento de 5000 bytes é suficiente.
- Clique em OK.
- Salve seu trabalho.
Figura 2. Configurações Modificadas para o DB2 Connector para a Tabela de Destino
Etapa 5: Editar o Estágio de Arquivo Sequencial
É necessário editar o estágio de Arquivo Sequencial para identificar o arquivo delimitado por vírgula que contém os dados de entrada.
- Dê um clique duplo no ícone que representa o estágio de Arquivo Sequencial.
- Se a guia Saída ainda não estiver a mostra, clique-a. Um conjunto de subtarefas aparece.
- Clique na subguia Propriedades .
- Expanda a Pasta de Origem e clique na propriedade Arquivo . Especifique seu arquivo de entrada, navegando por sua estrutura de diretórios, conforme necessário. (O arquivo de entrada de amostra incluído no arquivo zip a partir da seção Download é denominado holdingsexport.)
- Clique na subguia Colunas .
- Edite as informações da coluna, conforme mostrado na tabela a seguir e na
Figura 3. Essas colunas representarão as tags de elemento para dados
<Position>em seu documento XML.Nome da coluna Chave Tipo de SQL Estendido Comprimento Escala Anulável Descrição ID Número inteiro Sim HOLDINGTYPE √ VarChar Unicode 30 Sim /ns:Position/ns:Type SYMBOL VarChar Unicode 30 Sim /ns:Position/ns:Symbol QUANTITY Decimal 12 3 Sim /ns:Position/ns:Quantity
- Inclua informações de espaço de nomes apropriadas para a Descrição de HOLDINGTYPE, SYMBOL e QUANTITY. Posteriormente, verá como os estágios de Saída XML e Cópia usam essas informações. Consulte a Figura 3 Para obter os dados do espaço de nomes para cada coluna.
- Identifique HOLDINGTYPE como a Chave.
- Clique em OK.
- Salve seu trabalho.
Figura 3. Especificações de Colunas para Saída de Arquivo Sequencial
Etapa 6: Editar o Estágio de Saída XML Inicial
O estágio de Saída XML inicial, que é conectado ao estágio de Arquivo Sequencial, deve converter partes das informações do arquivo para elementos XML.
Como a estrutura de documentos XML de destino contém uma hierarquia aninhada com elementos repetidos, deve-se customizar esse estágio de Saída XML para agregar informações para cada conta.
Neste caso, é necessário instruir o DataStage para coletar todas as informações de <Position> para cada conta.
Deve-se padronizar o estágio de Saída XML inicial para gerar os elementos XML realçados em negrito na Lista 5.
Lista 5. Formato do Documento XML de Destino com os Nós a Serem Construídos neste Estágio Mostrados em Negrito
<Account>
<ID>111222</ID>
<Holdings>
<Position>
<Type>Stock</Type>
<Symbol>IBM</Symbol>
<Quantity>500.12</Quantity>
</Position>
<Position>
. . .
</Position>
</Holdings>
</Account>
|
Para customizar este estágio, faça o seguinte:
- Abra o estágio de Saída XML inicial, que aparece ao lado do estágio de Arquivo Sequencial.
- Clique na guia Entrada . Um conjunto de subtarefas aparece.
- Na subguia Particionamento , verifique se as quatro colunas especificadas para o arquivo de estrada estão listadas: ID, HOLDINGTYPE, SYMBOL e QUANTITY. Verifique também se HOLDINGTYPE é exibida como uma coluna chave.
- Na subguia Colunas , verifique se expressões XPath apropriadas aparecem para as colunas HOLDINGTYPE, SYMBOL e QUANTITY. (As expressões XPath devem corresponder àquelas especificadas ao editar o estágio de Arquivo Sequencial. Consulte Figura 3.)
- Clique na guia Saída . Um novo conjunto de subtarefas é exibido.
- Clique na subguia Configurações do Documento . Subtarefas adicionais aparecem.
- Na seção Comentário , selecione a caixa de opção Gerar Parte XML e desmarque a caixa de opção Incluir .
- Clique na subguia Declaração de Espaço de Nomes . Selecione a caixa de opção
Incluir e insira uma declaração de espaço de nomes apropriada no campo de entrada.
Por exemplo:
xmlns:ns="http://tpox-benchmark.com/custacc" - Clique na subguia Configurações da Transformação . Localize o botão Usar Coluna Acionadora e use seu menu suspenso para selecionar a coluna ID . Isso fará com que o DataStage agrupe informações do portfólio por ID de conta.
- Clique na subguia Opções . Desmarque a caixa de opção Gerar saída formatada . (Não é necessário introduzir espaço em branco adicional nem formatar alterações na saída XML final.)
- Clique na subguia Colunas .
- Selecione Carregar e importe a definição da tabela DWADMIN.ACCTPROFILE.
- Configure o campo Comprimento da coluna INFO para:
5000. - Modifique o campo Descrição da coluna INFO para incluir a expressão XPath a seguir:
/ns:Position - Verifique se essas configurações parecem semelhantes àquelas mostradas na Figura 4.
- Clique em OK.
- Salve seu trabalho.
Figura 4. Configurações da Coluna de Saída para o Estágio de Saída XML Inicial
(Consulte uma versão maior da Figura 4.)
Etapa 7: Editar o Estágio de Saída XML Final
O estágio de Saída XML final deve gerar as partes remanescentes da hierarquia do documento XML.
O primeiro estágio de Saída XML coletou todas as informações de <Position> para cada conta. O documento XML final precisa incluir informações adicionais.
Consulte a Lista 2 no início deste artigo para revisar a estrutura completa do documento XML de destino.
- Abra o estágio de Saída XML final (o estágio do lado direito da área de design e abaixo do estágio do DB2 Connector).
- Selecione a guia Entrada . Um conjunto de subtarefas aparece.
- Clique na subguia Colunas .
- Selecione Carregar e importe a definição da tabela DWADMIN.ACCTPROFILE.
-
Configure o campo Comprimento da coluna INFO para:
5000 - Configure o campo Descrição da coluna INFO para:
/ns:Account/ns:Holdings - Configure o campo Elementos de Dados da coluna INFO para:
XML - Configure o campo Descrição da coluna ID para:
/ns:Account/ns:ID - Verifique se essas configurações parecem semelhantes àquelas mostradas na Figura 5.
- Clique na guia Saída . Um conjunto de subtarefas aparece.
- Clique na subguia Configurações do Documento . Subtarefas adicionais aparecem.
- Desmarque a caixa de opção Incluir na seção Comentário .
- Clique na subguia Declaração de Espaço de Nomes . Selecione a caixa de opção Incluir
e insira a declaração de espaço de nomes a seguir no campo de entrada:
xmlns:ns="http://tpox-benchmark.com/custacc" - Clique na subguia Configurações da Transformação . Localize o botão Usar Coluna Acionadora e use seu menu suspenso para selecionar a coluna ID . Isso fará com que o DataStage agrupe informações do portfólio por ID de conta.
- Clique na subguia Opções . Desmarque a caixa de opção Gerar saída formatada .
- Clique na subguia Colunas .
-
Configure o campo Descrição da coluna INFO para a expressão XPath a seguir:
/ns:Account - Verifique se essas configurações parecem semelhantes àquelas mostradas na Figura 6.
- Clique em OK.
- Salve seu trabalho.
Figura 5. Configurações da Coluna de Entrada para o Estágio de Saída XML Final
(Consulte uma versão maior da Figura 5.)
Figura 6. Configurações da Coluna de Saída para o Estágio de Saída XML Final
(Consulte uma versão maior da Figura 6.)
Etapa 8: Editar o Estágio de Cópia
Em seguida, modifique o estágio de Cópia para passar dados entre dois estágios de Saída XML. Como cada estágio de Saída XML usa expressões XPath diferentes para definir o XML gerado, um estágio de Cópia é necessário para assegurar que dados sejam passados de forma apropriada através de links de entrada e saída.
- Abra o estágio de Cópia.
- Clique na subguia Mapeamento . Selecione Correspondência Automática, aceite os padrões e clique em OK.
- Como opção, inspecione as expressões XPath especificadas nas colunas Descrição dos links de entrada e saída.
- Clique na guia Entrada e na subguia Colunas .
- Verifique se a coluna Descrição para INFO contém a expressão XPath:
/ns:Position
(consulte Figura 4) - Clique na guia Saída e na subguia Colunas .
- Verifique se a coluna
Descrições para ID contém a expressão XPath:
/ns:Account/ns:ID
(consulte Figura 5) - Verifique se a coluna Descriçõespara INFO contém a expressão XPath:
/ns:Account/ns:Holdings
(consulteFigura 5) - Clique em OK.
- Salve seu trabalho.
Etapa 9: Compilar e Testar seu Trabalho
Siga os procedimentos padrão do DataStage para compilar, validar e executar sua tarefa. se necessário, consulte a seção Recursos para obter um link para a documentação do DataStage. Segue um resumo rápido:
- Selecione o ícone Compilar na barra de ferramentas. Assegure que a tarefa seja compilada sem erro.
- Selecione o ícone Executar na barra de ferramentas. Configure Avisos para "sem limite" e clique em Executar. O DataStage tenta executar sua tarefa.
- Ative o DataStage e o QualityStage Director para inspecionar o log e revisar os resultados de sua tarefa. Verifique se sua tarefa foi concluída com êxito.
- Como opção, inspecione o conteúdo da tabela do armazém de dados do DB2. Use as ferramentas padrão do DB2 para fazer isso ou retorne à sua tarefa do DataStage no Designer, abra o estágio do DB2 Connector e clique em Visualizar Dados.
Esta série de artigos explorou como o IBM InfoSphere DataStage e o DB2 pureXML podem ser usados juntos para suportar uso crescente de XML em armazéns de dados. XML emergiu como o formato preferencial para troca de dados em muitas organizações; consequentemente, arquitetos de dados estão avaliando opções para integrar XML a seus armazéns de dados.
Na parte um desta série de artigos, você aprendeu como o IBM InfoSphere DataStage pode extrair e transformar dados XML gerenciado pelo DB2 pureXML. Além disso, você explorou como o DataStage pode carregar esses dados transformados em duas tabelas, uma com tipos de dados SQL tradicionais e uma que apresenta colunas relacionais e XML.
Este artigo, a segunda parte da série, explorou como é possível usar o DataStage para ler informações a partir de um arquivo simples, converter os dados para o formato XML e carregar esses dados XML em um armazém de dados que contém uma tabela com uma coluna DB2 pureXML.
Os autores desejam expressar sua gratidão a Stewart Hanna, Susan Malaika e Ernie Ostic por sua revisão deste artigo.
Aprender
- Obtenha uma visão geral do
"IBM InfoSphere DataStage"
-
Leia a primeira parte desta série de artigos.
-
Aprenda mais sobre como criar tarefas paralelas lendo um tutorial da IBM (publicação da IBM SC18-9889-01).
-
Revise a documentação do IBM InfoSphere DataStage para obter detalhes completos dos recursos do DataStage e sobre como usá-los.
-
Consulte o wiki do DB2 pureXML para obter um conjunto de links abrangente para demos, downloads gratuitos, documentos técnicos e mais.
-
Leia DB2 pureXML Cookbook (IBM Press) de Matthias Nicola e Pav Kumar Chatterjee para obter um guia abrangente da tecnologia DB2 pureXML para todas as plataformas suportadas.
-
Leia Consultar Dados XML com SQL de Cynthia M. Saracco e Consultar Dados XML com XQuery de Don Chamberlin e Cynthia M. Saracco para explorar muitas das consultas de amostra incluídas na seção "Suporte a XML do DB2 Connector".
-
Para obter uma visão geral dos recursos mais recentes do DB2 pureXML, consulte Aprimorar Insight dos Negócios e Escalabilidade de Dados XML com os Novos Recursos do DB2 9.7 pureXML de Cynthia M. Saracco e Matthias Nicola, abril de 2009.
-
Aprenda mais sobre a avaliação de desempenho Transaction Processing over XML (TPOX). (a página reside fora da ibm.com)
Discutir
- Participar do fórum de discussão.
- Participe do fórum do DB2 pureXML ou de um dos fóruns do DataStage.
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 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.
