Usando o IBM InfoSphere Warehouse Design Studio com dados pureXML, Parte 2: Crie um fluxo de controle para múltiplas tarefas ETL envolvendo XML

Aprenda como integrar dados XML críticos para os negócios em seu armazém de dados usando o IBM® InfoSphere™ Warehouse Design Studio e o pureXML® do DB2® 9.7. Esta série de dois artigos fornece instruções etapa por etapa para usar o pureXML como fonte de dados tanto de origem quanto de destino para operações de extração, transformação e carregamento (ETL) desenvolvidas com o InfoSphere Warehouse Design Studio. Este artigo descreve como construir um único fluxo de controle que chama vários fluxos de dados que extraem, transformam e carregam dados XML em uma sequência específica.

Cynthia M. Saracco, Senior Software Engineer, IBM

photo: Cynthia SaraccoCynthia M. Saracco é uma arquiteta de soluções sênior no Silicon Valley Laboratory da IBM especializada em tecnologias emergentes e tópicos de gerenciamento de bancos de dados. Ela tem 23 anos de experiência no segmento de mercado de software, escreveu 3 livros e mais de 60 documentos técnicos e detém 7 patentes.


nível de autor Profissional do
        developerWorks

21/Abr/2010

Introdução

O primeiro artigo na série (Parte 1) descreve como o InfoSphere Warehouse Design Studio pode construir e executar fluxos de dados individuais que usam dados operacionais pureXML do DB2 como entrada para estruturas relacionais ou XML em um armazém de dados. Este artigo, o segundo na série, descreve como construir um único fluxo de controle que chama vários fluxos de dados que extraem, transformam e carregam dados XML em uma sequência específica. O uso de um fluxo de controle permite desenvolver, testar e executar gradativamente operações complexas que exigem uma ordem específica de execução.

O cenário descrito neste artigo usa o mesmo ambiente de desenvolvimento e de tempo de execução usado na Parte 1 desta série. O cenário é baseado no DB2 9.7 Enterprise Server Edition e no IBM InfoSphere Warehouse Design Studio 9.7, que podem ser instalados em um único sistema Windows®.

A tabela de origem e os dados operacionais XML também são os mesmos discutidos na Parte 1. Os dados operacionais incluem informações sobre contas financeiras e seus capitais de investimento. Esses dados são derivados de um subconjunto de informações usado para preencher registros de contas de clientes usados na avaliação de desempenho Transaction Processing over XML (TPoX), de software livre. As tabelas do armazém de dados de destino também são quase idênticas, exceto por uma restrição de integridade referencial incluída agora no design do banco de dados.

A Listagem 1 define as tabelas de armazém de dados revisadas. As novas restrições para chaves primárias e estrangeiras estão em maiúsculas.

Listagem 1. Definições para tabelas do armazém de dados 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,  
     officer            varchar(50), 
     datechanged        date,
     timechanged        time, 
     totalholdings      int,
     holdingtypes       int,
     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,3) 
)

Esta restrição de integridade referencial resulta na necessidade de alterar o trabalho de ETL descrito na Parte 1. No cenário da Parte 1, um único fluxo de dados extrai dados XML da coluna INFO da tabela de origem TPOXADMIN.ACCOUNT e preenche duas tabelas do armazém de dados de destino: DWADMIN.ACCT e DWADMIN.HOLDINGS. Como não há restrições de integridade referencial entre essas tabelas de armazém de dados, não importa qual das duas tabelas de destino é preenchida primeiro.

O cenário neste artigo altera o design das tabelas de destino para incluir restrições de chaves primárias e estrangeiras, exigindo que a tabela DWADMIN.ACCT seja preenchida primeiro. Para assegurar que a tabela DWADMIN.ACCT seja preenchida primeiro, é necessário dividir o trabalho de ETL em vários fluxos de dados e usar um fluxo de controle para especificar a ordem de execução necessária para eles. Observe que, se a tabela DWADMIN.ACCT estiver vazia, o DB2 rejeita tentativas de inserir linhas na tabela DWADMIN.HOLDINGS, que contém uma chave estrangeira que faz referência à tabela DWADMIN.ACCT.

Para entender como os dados XML de origem na coluna INFO de TPOXADMIN.ACCOUNT são mapeados nas várias colunas das tabelas do armazém de dados, observe a Tabela 1 e a Tabela 2 na Parte 1.

Entendendo uma visão geral do fluxo de controle e dos fluxos de dados

Antes de construir um fluxo de controle, é necessário criar cada fluxo de dados individualmente. Como cada fluxo de dados é um subconjunto do fluxo de dados geral descrito na Parte 1, você deve estar familiarizado com a lógica.

Projetando o primeiro fluxo

O primeiro fluxo extrai dados XML da tabela de origem e preenche a tabela DWADMIN.ACCT, que contém uma chave primária, como mostrado na Figura 1.

Figura 1. Fluxo de dados para preencher a tabela híbrida DWADMIN.ACCT
Fluxo de dados para preencher a tabela híbrida DWADMIN.ACCT

O operador Table Source (mostrado na parte superior esquerda da Figura 1) identifica a tabela TPOXADMIN.ACCOUNT como a origem da entrada. Dados XML nesta tabela alimentam dois operadores XML Relational Mapping. Um desses operadores (mostrado na ramificação inferior na Figura 1) alimenta um operador Group By que faz as agregações exigidas por duas das colunas da tabela de destino. Entretanto, a tabela de destino também inclui uma coluna XML contendo o registro XML original. Como colunas XML não podem participar de cláusulas Group By, é necessário definir um segundo operador XML Relational Mapping (mostrado na ramificação superior da Figura 1). Esse operador extrai o valor do ID da conta dos dados XML e preserva o registro XML completo. O ID de conta dessa operação de mapeamento pode então ser juntado ao ID de conta incluído na saída da operação Group By, criando um conjunto de resultados que preenche a tabela ACCT de destino.

Projetando o segundo fluxo

O design do segundo fluxo de dados é mais simples. Ele preenche a tabela DWADMIN.HOLDINGS, que contém uma chave estrangeira que faz referência à tabela DWADMIN.ACCT. Esse fluxo de dados apenas lê os dados XML da tabela de origem e usa um único operador XML Relational Mapping para preencher a tabela de destino diretamente, como mostrado na Figura 2.

Figura 2. Fluxo de dados para preencher a tabela DWADMIN.HOLDINGS
Fluxo de dados para preencher a tabela DWADMIN.HOLDINGS

Projetando o fluxo de controle

O design do fluxo de controle chama os dois fluxos de dados descritos acima para preencher um armazém de dados híbrido XML/relacional, como mostrado na Figura 3.

Figura 3. Controle de dados
Controle de dados

Ao ser inicializado, o fluxo de controle invoca um fluxo de dados que carrega a tabela DWADMIN.ACCT de destino. A execução bem-sucedida desse fluxo de dados resulta na invocação do segundo fluxo de dados, que carrega a tabela DWADMIN.HOLDINGS de destino. Se o primeiro fluxo de dados não terminar de forma bem-sucedida, o fluxo de controle está programado para emitir uma notificação por email e encerrar a execução. A Figura 3 mostra o fluxo de controle que será criado neste artigo.


Etapa 1: Preparando o ambiente de banco de dados do DB2

A seção Download contém um script do DB2 que cria as tabelas operacional (de origem) e de armazém de dados (de destino) necessárias. Ele também preenche a tabela operacional com um exemplo de informações de conta XML. Esse script é semelhante ao script da Parte 1. Entretanto, ele define as tabelas do armazém de dados de destino com chaves primárias e estrangeiras apropriadas.

Complete as etapas seguintes para preparar seu ambiente do DB2.

  1. Faça o download do arquivo dwsetup2.zip na seção Recursos e extraia os arquivos.
  2. Abra uma janela de comando do DB2 e execute o comando na Listagem 2.
Listagem 2. Invocando o script do DB2 que acompanha esta série de artigos
  db2 –td@ -vf  DWsetup2.db2

Observe que esse script foi criado para suportar um servidor DB2 9.7 sendo executado no Windows. Se você já tiver um banco de dados chamado TPOX no seu servidor, esse script descarta-o e cria-o novamente com novos objetos de banco de dados.


Etapa 2: Preparando seu ambiente do Design Studio

Antes de criar seu fluxo de dados, prepare o ambiente do Design Studio completando as etapas da Parte 1, Etapa 2: Preparando seu ambiente no Design Studio, se ainda não o fez.


Etapa 3: Criando o fluxo de dados para extrair dados de conta

O primeiro fluxo de dados precisa extrair informações da origem TPOXADMIN.ACCOUNT, transformá-las conforme necessário e preencher a tabela de destino DWADMIN.ACCT. Complete as seguintes etapas para criar o fluxo de dados.

  1. Copie o fluxo de dados completado na Parte 1, e dê a ele um novo nome.
  2. Edite esse novo fluxo de dados, excluindo o operador Table Target da tabela DWADMIN.HOLDINGS.
  3. Edite o operador XML Relational Mapping que alimenta o operador Group By para remover as definições de coluna de SYMBOL e QTY. As definições de coluna que devem restar são id, title, currency, workingbalance, officer, datachanged, timechanged e holdingtype, como mostrado na Figura 4.
Figura 4. Definições de coluna extraídas de nós XML
Definições de coluna extraídas de nós XML
  1. Edite as Colunas de Resultados desse operador para excluir as colunas SYMBOL e QTY, como mostrado na Figura 5.
Figura 5. Colunas de resultados produzidas pelo operador XML Relational Mapping
Colunas de resultados produzidas pelo operador XML Relational Mapping
  1. Volte para a visualização gráfica do design de fluxo de dados.
  2. Clique com o botão direito no operador XML Relational Mapping que você acabou de editar, e selecione Propagate Column Change.
  3. Ao receber o aviso, clique em OK.
  4. Edite o operador Group By para assegurar que Select List for Aggregation não contém mais expressões relacionadas às colunas SYMBOL e QTY, como mostrado na Figura 6.
Figura 6. Lista de seleção revisada para o operador Group By
Lista de seleção revisada para o operador Group By
  1. Salve seu trabalho. Seu novo fluxo de dados deve ser semelhante à Figura 1.

Etapa 4: Criando o fluxo de dados para extrair dados de capitais de portfólio

O próximo fluxo de dados é mais simples. Ele extrai informações XML da tabela TPOXADMIN.ACCOUNT de origem, mapeia nós específicos para colunas relacionais e preenche a tabela de destino DWADMIN.HOLDINGS. Complete as seguintes etapas para criar o fluxo de dados para extrair dados de capitais de portfólio.

  1. Crie uma nova cópia do fluxo de dados original completado na Parte 1, e dê a ele um novo nome.
  2. Edite esse novo fluxo de dados, excluindo todos os operadores exceto os seguintes:
    • O operador Table Source, que lê informações da tabela TPOXADMIN.ACCOUNT
    • O operador Table Target da tabela DWADMIN.HOLDINGS
    • O operador XML Relational Mapping, que lê dados da tabela de origem e preenche a tabela DWADMIN.HOLDINGS.
  3. Edite o operador XML Relational Mapping, excluindo todas as definições de coluna exceto aquelas exigidas pela tabela de destino. As definições de coluna que devem restar são id, holdingtype, symbol e qty, como mostrado na Figura 7.
Figura 7. Definições de coluna para o XML Relational Mapping Operator.
Definições de coluna para o XML Relational Mapping Operator.
  1. Exclua todas as colunas de conjunto de resultados exceto aquelas exigidas pela tabela de destino. As definições de conjunto de resultados que devem restar são id, holdingtype, symbol e qty, como mostrado na Figura 8.
Figura 8. Saída do operador XML Relational Mapping
Saída do operador XML Relational Mapping
  1. Volte para a visualização gráfica do design de fluxo de dados.
  2. Clique com o botão direito no operador XML Relational Mapping que você acabou de editar, e selecione Propagate Column Change.
  3. Ao receber o aviso, clique em OK.
  4. Salve seu trabalho. Seu novo fluxo de dados deve ser semelhante à Figura 2.

Etapa 5: Testando os fluxos de dados

Antes de construir um fluxo de controle que invoca cada fluxo de dados, é recomendável verificar se cada fluxo de dados funciona corretamente. Siga o processo padrão do Design Studio descrito nas etapas abaixo para testar o primeiro fluxo (para preencher DWADMIN.ACCT) e depois o segundo fluxo (para preencher DWADMIN.HOLDINGS). Pode ser útil usar um depurador para o teste inicial. Complete as seguintes etapas para testar cada fluxo.

  1. Se ainda não o fez, salve seu trabalho.
  2. Valide seu fluxo de dados clicando com o botão direito no fluxo de dados no painel Data Project Explorer e selecionando Validate. Se quaisquer erros forem detectados, corrija-os antes de prosseguir.
  3. Se quiser, estabeleça pontos de interrupção no fluxo de dados clicando com o botão direito na conexão entre operadores no fluxo e selecionando Toggle Breakpoint.
  4. No painel Data Project Explorer, clique com o botão direito no seu fluxo e selecione Debug ou Execute. Se o fluxo for depurado, é possível monitorar a saída de cada etapa no fluxo de dados usando o ícone Resume na parte superior. Observe que o depurador pode gerar avisos sobre instruções DROP TABLE, que podem ser ignorados.

Etapa 6: Criando seu fluxo de controle

Com seus dois fluxos de dados desenvolvidos e testados, você está pronto para construir um fluxo de controle que os execute na ordem correta. Para simplificar, criaremos um fluxo de controle básico neste artigo completando as seguintes etapas. Opções mais avançadas estão disponíveis, mas estão além do escopo desta série de artigos.

  1. Em seu projeto de armazenagem de dados, clique com o botão direito na pasta Control Flows.
  2. Crie um novo fluxo de controle e dê a ele o nome que preferir.
  3. Em Palette, selecione Common operators > Data Flows.
  4. Arraste um ícone para a direita do operador Start que aparece por padrão no design de fluxo de controle.
  5. Clique com o botão direito e selecione Show Properties View.
  6. Clique no botão para identificar o fluxo de dados apropriado, como mostrado na Figura 9.
Figura 9. Edite as propriedades do operador de fluxo de dados para selecionar o fluxo desejado
Edite as propriedades do operador de fluxo de dados para selecionar o fluxo desejado
  1. Navegue até o fluxo de dados criado anteriormente para preencher a tabela DWADMIN.ACCT.
  2. Caso queira, altere o nome padrão desse operador de fluxo de controle para algo mais descritivo.
  3. Repita as etapas 6-8 acima para acrescentar o fluxo de dados que preenche a tabela DWADMIN.HOLDINGS a esse fluxo de controle.
  4. Arraste esse operador para a direita do operador de fluxo de dados existente.
  5. Em Palette, selecione Common operators > End.
  6. Coloque-o à direita do operador de fluxo de dados final. Você agora tem todos os operadores necessários para modelar um fluxo de controle bem-sucedido.
  7. Adicione operadores para gerenciar uma condição de erro de tempo de execução, selecionando Common operators > Email.
  8. Coloque isso abaixo do primeiro operador de fluxo de dados.
  9. Clique com o botão direito e selecione Show Properties View para especificar informações para esse operador.
  10. Identifique o endereço de e-mail do remetente e do destinatário, bem como um assunto e uma mensagem. Para este exemplo, use valores fixos (em vez de variáveis) para cada um desses itens, como mostrado na Figura 10. O ícone ao lado de cada propriedade indica o uso de valores fixos ou variáveis.
Figura 10. Definindo as propriedades do operador Email
Definindo as propriedades do operador Email
  1. Selecione Common operators > Fail e o coloque à direita do operador Email.
  2. Conecte o operador Start à entrada do primeiro operador de fluxo de dados.
  3. Conecte o primeiro operador de fluxo de dados ao segundo usando a marca de seleção verde no canto superior direito para fazer uma conexão condicional. Uma conexão condicional executa o fluxo de controle apenas se essa operação for bem-sucedida. Neste cenário, uma conexão condicional é apropriada porque, caso a tabela contendo dados de chave primária não possa ser preenchida, é recomendável evitar tentativas subsequentes de preencher a tabela que faz referência a ela.
  4. Conecte o segundo operador de fluxo de dados ao operador End. Para este exemplo, defina uma conexão incondicional usando a seta azul na porta de saída do operador de fluxo de dados.
  5. Conecte uma falha do primeiro fluxo de dados (indicada pelo X vermelho) ao operador Email abaixo dela.
  6. Conecte o operador Email ao operador Fail usando uma conexão incondicional.
  7. Verifique se seu fluxo de controle é semelhante ao da Figura 3.

Etapa 7: Testando seu fluxo de controle

Após criar seu fluxo de controle, teste-o seguindo procedimentos padrão do Design Studio. Use os ícones na barra de ferramentas superior para validar o fluxo de controle, e depois depure-o ou execute-o conforme desejado.


Conclusão

Esta série de artigos explorou como o IBM InfoSphere Warehouse Design Studio e o pureXML do DB2 podem ser usados em conjunto para suportar um maior uso de XML em armazéns de dados. O XML emergiu como o formato preferencial de troca de dados em muitas organizações. Por isso, os arquitetos de dados estão cada vez mais avaliando opções para integrar o XML em seus armazéns de dados. Projetar tarefas de ETL (ou fluxos de dados) é um aspecto importante da integração de XML em ambientes de armazéns de dados.

Este artigo, o segundo de uma série de dois, introduziu o uso de fluxos de controle para gerenciar a execução de vários fluxos de dados. Fluxos de controle são úteis para operações complexas. Fluxos de controle ajudam a promover a reutilização de código, e permitem que desenvolvedores especifiquem a sequência de várias atividades.

Agradecimentos

Obrigada a Matthias Nicola, Jing Shan, Lin Xu e Shumin Wu por revisarem esta série de artigos.


Download

DescriçãoNomeTamanho
Sample DB2 script and data (for Windows)dwsetup2.zip100KB

Recursos

Aprender

Obter produtos e tecnologias

  • Faça o download do DB2 Express-C, uma versão sem custos do DB2 Express Edition que oferece os mesmos recursos de dados centrais que o DB2 Express Edition e fornece uma base sólida para construir e implementar aplicativos.
  • Faça o download de uma versão de teste gratuita do InfoSphere Warehouse Enterprise Edition.

Discutir

Comentários

developerWorks: Conecte-se

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


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

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

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Information Management
ArticleID=485269
ArticleTitle=Usando o IBM InfoSphere Warehouse Design Studio com dados pureXML, Parte 2: Crie um fluxo de controle para múltiplas tarefas ETL envolvendo XML
publish-date=04212010