Utilizando o Pentaho Data Integration para acessar dados abertos.

Nesse artigo iremos demonstrar como consumir um Web Service -WS de dados abertos utilizando o Pentaho Data Integration – PDI. O objetivo é listar o conteúdo de um dos métodos do WS e realizar a carga numa tabela de estrutura semelhante ao WS.

É necessário para melhor entendimento desse artigo que leitor saiba conceitos básicos de Web Services, XML, PDI e Banco de Dados.

Utilizamos o WS da Câmara dos Deputados localizado no seguinte endereço:
http://www.camara.gov.br/SitCamaraWS/Deputados.asmx?wsdl.
Conforme demonstra a Figura 1 para simplificar nosso artigo o método escolhido foi o “ObterPartidosCD” a escolha desse método deu-se pela sua estrutura simples, não requerendo parâmetros de entrada e tendo uma saída básica.

1

Agora que já temos os dados de origem, vamos preparar a tabela que irá receber esses dados, o Sistema Gerenciador de Banco de Dados utilizado foi o Postgres 9.5 segue abaixo o código de criação da tabela, fica a seu critério o nome do banco de dados que irá armazenar a tabela.

2

Como já temos a origem e o destino dos dados agora só falta a parte central que ficará a encargo do PDI. No seu PDI crie uma nova transformação e atribua o nome que você achar melhor, no meu caso utilizei o mesmo nome do método do WS. De acordo com a Figura 2 iremos utilizar três steps na transformação. Existem outras formas de consumir o WS, porém para fins desse artigo iremos utilizar o fluxo da imagem abaixo.

3

O primeiro Step é o Web Services Lookup, ele irá chamar o WS, ao clicar duas vezes sobre ele abre-se uma tela com as propriedades do Step conforme mostra a Figura 3. No campo URL colocamos o endereço descrito no começo do artigo, no campo Operation preenchemos com o nome do método.

Preenchidos esses dois campos agora é hora de clicar em Add Output onde preencheremos os campos Name e Ws Name com o nome do result do WS já o campo WS Type preencher com any.

4

O próximo step é o Get data from XML, a sua função é ler o XML gerado no step anterior e basicamente deixa-lo em forma tabular prontinho para ser usado na última etapa do nosso fluxo.

5

Conforme a Figura 4, na guia File das propriedades do Get data from XML devemos preencher com o nome do result dado no step anterior, no meu caso ObterPartidosCDResult, além dessa guia também teremos configurações nas guias Content e Fields como demostrado na Figura 5. Na guia Content o campo Loop XPath deverá conter o caminho do nó do XML. Na guia Fields listamos os campos do XML.

6

E por último e não menos importante temos o Table output é nesse step que vamos realizar a carga no banco de dados, esse com certeza é um dos steps mais utilizado no PDI.

7

Nas propriedades do Table output preenchemos o Connection (escolha sua conexão), Target Schema (o esquema em que sua tabela está), Target Table (a tabela que irá receber os dados). O truncate table quando marcado significa que sempre ao carregar a tabela os dados anteriores serão apagados, então se for uma carga incremental deixe desmarcado. Marque o campo Specify Database Fields e depois clique em Get Fields, com isso faremos o de – para do XML para a coluna da tabela.

Pronto agora só nos falta executar o PDI para que os dados sejam lidos do WS da Câmara dos Deputados e carregados na nossa tabela. Vimos nesse artigo que com apenas 3 steps conseguimos acessar um WS e persistir seus dados em uma tabela, porém esse é um exemplo muito simples no dia a dia a coisa é bem mais complicado e geralmente o tratamento feito nos dados de origem é bem maior requerendo assim bem mais steps.

Espero que esse artigo tenha ajudado de alguma forma. Até a próxima!

Daniel Teófilo (Analista de Dados com Mestrado em Sistemas de Apoio à Decisão, conhecimentos teóricos e práticos em modelagem dimensional, ETL (PDI), Tableau e CTools.)

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s