Integration Services 2012: implementando soluções de ETL – Parte 1
É 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.
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.
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
O resultado deste procedimento será um novo arquivo com a extensão .conmgr, que estará visível dentro da seção “Connection Managers” da aplicação de testes. Renomeie este arquivo para “connTesteIntegration.conmgr” (Figura 3).
Figura 3. A conexão connTesteIntegration já criada
Importação de planilhas do Excel
Será através do package ImportacaoExcel.dtsx que acontecerá a importação de arquivos do Excel (a partir da versão 2007). Tais arquivos possuem a extensão .xlsx e são baseados em um padrão da Microsoft conhecido como Open XML (BOX 2).
Documentos baseados na
especificação Open XML combinam as t ...
Black November Desconto exclusivo para as primeiras 200 matrículas! Pagamento anual 12x no cartão De: R$ 69,00 Por: R$ 59,00 Total: R$ 708,00 Garanta o desconto Pagamento recorrente Cobrado mensalmente no cartão De: R$ 79,00 Por: R$ 64,00 /mês Total: R$ 768,00 Garanta o desconto Eu sabia pouquíssimas coisas de programação antes de começar a estudar com
vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa
bagagem consegui um estágio logo no início do meu primeiro
período na faculdade. Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo. Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a
pena, pois a plataforma é bem intuitiva e muuuuito
didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito
obrigado! Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento
front-end, tinha coisas que eu ainda não tinha visto. A
didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado,
adorando demais. Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É
um passo a passo incrível. Só não aprende quem não quer.
Foi o melhor investimento da minha vida! Foi um dos melhores investimentos que já fiz na vida e tenho aprendido
bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da
programação, irei assinar meu contrato como programador
graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana,
aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem
como não aprender, estão de parabéns! Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de
seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com
React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo
muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na
área.Confira outros conteúdos:
<Perguntas frequentes>
Nossos casos de sucesso
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.