Integration Services 2012: implementando soluções de ETL – Parte 2

O Integration Services é uma plataforma da Microsoft que possibilita a construção de soluções para a integração entre diferentes sistemas.

Artigo no estilo: Curso

Fique por dentro
O Integration Services é uma plataforma da Microsoft que possibilita a construção de soluções para a integração entre diferentes sistemas. Embora corresponda a mais um dos serviços que compõem o SQL Server, repositórios de dados dos mais variados tipos podem ser manipulados através de aplicações baseadas nesta tecnologia. Na edição anterior apresentamos as principais características desta ferramenta (enfatizando a versão 2012), alguns dos seus possíveis cenários de utilização, concluindo com a implementação de um projeto para a exportação de dados no formato .csv. Neste artigo encerraremos a série sobre o Integration Services com um novo exemplo, demonstrando a importação de informações de arquivos em diversos formatos (texto, CSV, planilhas do Excel) para uma base do SQL Server.

É inegável a importância estratégica que a informação adquiriu em organizações dos mais variados segmentos. Pesados investimentos são realizados visando o gerenciamento de dados imprescindíveis para o dia-a-dia de um negócio. Dentre os fatores que justificam os vultosos gastos em tecnologia, pode ser destacada a necessidade em se garantir a continuidade das operações rotineiras, assim como a produção de análises que respaldem a atuação de profissionais de gestão na tomada de decisões.

Em muitas empresas e organismos governamentais nota-se a presença de softwares com as mais variadas finalidades, sendo bastante comum que em algum momento surja a necessidade de compartilhar dados entre algumas destas aplicações. Este intercâmbio de informações pode acontecer tanto dentro de uma mesma organização, quanto em cenários de B2B (BOX 1).

A integração entre sistemas pode ser conseguida através da implementação de Web Services para processos de transferência de dados online ou ainda, a partir da construção de soluções com rotinas responsáveis pelo processamento de grandes volumes de informações.

BOX 1. B2B

B2B (sigla para a expressão em inglês “Business-to-business”) é um termo empregado para designar o intercâmbio de informações entre uma companhia e agentes externos, tais como fornecedores, clientes, além de outros tipos de entidades externas. Web Services representam, em grande parte dos casos, o recurso utilizado com maior frequência em integrações deste genêro.

Muito empregado na implementação de processos de ETL (sigla do inglês “Extraction, Transformation and Load”) em soluções de Business Intelligence, o Integration Services é uma ferramenta extremamente flexível, podendo ainda ser empregado na construção de aplicações que visem a integração entre diferentes sistemas. Embora corresponda na prática a um dos serviços que compõem o SQL Server, o Integration Services pode ser utilizado em conjunto com outros bancos relacionais (como Oracle, PostgreSQL, Firebird, dentro outros), assim como outros tipos de fontes de dados (tais como arquivos de texto, planilhas do Excel, documentos XML, etc.).

Na edição passada discutimos as principais características do Integration Services, descrevendo ainda possíveis cenários de utilização para esta tecnologia. Além disso, demonstramos a implementação de processos de exportação de dados por meio de aplicações baseadas no Integration Services. Através da Solution TesteIntegration01 demonstramos a geração de arquivos no formato CSV, consumindo para isto informações sobre produtos armazenadas previamente em uma base de dados relacional.

Com este segundo artigo concluímos a série sobre o Integration Services. Estaremos descrevendo como uma solução para importação de dados pode ser implementada através do uso dessa ferramenta, sendo este um tipo de situação com a qual muitos desenvolvedores se depararam em algum momento.

Importando dados a partir de uma solução do Integration Services

Nesta edição estaremos criando a Solution TesteIntegration02, na qual estará definido o projeto TesteIntegration02.SSIS. Esta aplicação será do tipo “Integration Services Project”, permitindo a importação de dados referentes a notas fiscais de serviços contratados por uma empresa hipotética. A fonte de tais informações serão planilhas do Excel, arquivos de texto com posições delimitadas ou ainda, no formato CSV.

O destino destes dados será uma base do SQL Server chamada TesteIntegration, a qual poderá ser utilizada por um sistema hipotético no processamento de controles contábeis e fiscais exigidos pela legislação.

Serão importadas por meio dos packages definidos no projeto TesteIntegration02.SSIS as seguintes informações:

· Código da Nota Fiscal;

· Série da Nota Fiscal;

· Data de Emissão;

· CNPJ do Prestador do Serviço;

· Razão Social do Prestador do Serviço;

· CNPJ do Tomador do Serviço;

· Razao Social do Tomador do Serviço;

· Valor Total PIS (Programa de Integração Social);

· Valor Total COFINS (Contribuição para o Financiamento da Seguridade Social);

· Valor Total IRPJ (Imposto sobre Renda de Pessoa Jurídica);

· Valor Total CSLL (Contribuição Social sobre Lucro Líquido);

· Valor Total dos Serviços;

· Valor Líquido da Nota Fiscal (descontados os tributos já citados).

Existirão no banco de dados TesteIntegration duas tabelas:

· TB_ARQUIVO, em que serão registrados os diferentes arquivos a processados pela aplicação TesteIntegration02.SSIS;

· TB_CARGA_NF_SERVICO, em que serão gravados os dados que compõem cada linha de um arquivo processado a partir do projeto TesteIntegration02.SSIS.

Nota: No link para download do material deste artigo encontra-se o script SQL para criação da base TesteIntegration. Em tal script também constarão stored procedures para a manipulação de dados envolvendo o carregamento de arquivos, além das tabelas já mencionadas.

Quanto ao projeto TesteIntegration02.SSIS, farão parte do mesmo os seguintes packages:

· ImportacaoExcel.dtsx: utilizado na importação de dados oriundos de planilhas do Excel;

· ImportacaoTexto.dtsx: responsável pela importação de arquivos de texto com posições fixas e que seguem um layout previamente definido;

· ImportacaoCSV.dtsx: empregado no processamento de arquivos gerados no formato CSV;

· OrquestradorImportacao.dtsx: efetuará a leitura de um diretório em que constarão arquivos para processamento e, a partir disso, realizará a chamada dos outros packages para a carga de dados (considerando para tanto o tipo de cada arquivo encontrado).

Criando uma conexão compartilhada

Releases anteriores do Integration Services não contavam com uma estrutura centralizada para o gerenciamento de conexões de acesso a repositórios de dados. O único recurso que se aproximava disto eram os elementos conhecidos como Data Sources.

Uma vez criado em um projeto, um Data Source poderia ser utilizado apenas para a criação de uma nova conexão dentro de um package qualquer.

Esta característica poderia gerar algumas dificuldades, já que alterações nas configurações de um Data Source não afetariam os packages com conexões criadas a partir do mesmo, obrigando assim a ajustes individuais em cada package (transtorno que poderia ser diminuído com o uso de um arquivo XML de configuração atrelado a cada pacote).

O lançamento da versão 2012 do Integration Services introduziu um mecanismo que permite controlar de forma centralizada diferentes conexões, de forma que estas últimas estejam disponíveis para utilização por todos os packages presentes em um projeto: trata-se do recurso conhecido como Connection Manager.

É importante ressaltar que conexões que apontem para repositórios dos mais variados tipos (bancos de dados, planilhas do Excel, arquivos de texto, dentre outros) podem ser criadas por meio desta estrutura.

Os diferentes packages da aplicação TesteIntegration02.SSIS dependerão de uma mesma conexão chamada “connTesteIntegration”, com esta última sendo utilizada no acesso à base de dados de testes.

Para criar tal conexão, utilize o menu de contexto do item “Connection Managers” do projeto TesteIntegration02.SSIS, acionando a opção “New Connection Manager”; selecione então o ADO.NET como driver dessa nova conexão (Figura 1). Na janela “Configure ADO.NET Connection Manager” gere uma nova conexão, informando para isto as configurações para acesso à base TesteIntegration (Figura 2).

Figura 1. Criando uma conexão do tipo ADO.NET

Figura 2. Definindo uma nova conexão do tipo ADO.NET" [...] continue lendo...

Artigos relacionados