Recursos especiais neste artigo:
Contém nota Quickupdate, Conteúdo sobre solução completa.
Autores: Jean Cristian Ferreira Machadoe Elton de Freitas
A carga de dados consiste em carregar os dados já transformados e manipulados para dentro de um banco de dados relacional, ou multidimensional ou diretamente para um datamart ou data warehouse. Dependendo das necessidades da organização, este processo varia amplamente.
A inserção de dados em alguns datamarts ou data warehouses pode variar de acordo com a necessidade de cada organização, seja mensalmente, semanalmente ou até mesmo diariamente. A latência e o alcance de reposição ou acréscimo constituem opções de projeto estratégicas que dependem do tempo disponível e das necessidades de negócios. Neste artigo voltamos a abordar o tema Automatização de Dados com o SSIS (SQL Server Integration Services). Enfatizaremos principalmente as técnicas de carregamento de dados, que por sua vez é a ultima parte do processo de ETL. Será desenvolvido um projeto prático visando apresentar as técnicas e metodologias de carga de dados.
O processo de Extração, Transformação e Carga de Dados (Extract, Transform e Load) é responsável por grande parte do trabalho a ser executado para criação e atualização de um datamart ou data warehouse.
Em
que situação o tema útil
Através do conhecimento de técnicas que possibilitam
maior facilidade no carregamento dos dados, é possível integrar diversas bases
de dados, popular um datamart ou data warehouse e realizar alterações de forma
automatizada.
Mediante o crescimento vertiginoso das bases de dados, surgem as necessidades de maior facilidade de manipulação das mesmas. As empresas procuram soluções eficazes e encontram alternativas interessantes nas técnicas de carregamento, que por sua vez demonstram-se muito eficazes.
A sigla ETL é originária do idioma inglês, Extract, Transform and Load, sendo um processo que pode ser feito via scripts SQL ou usando ferramentas de software que se destinam a extração, transformação e carga de dados. Estes dados podem ser originados de uma ou mais bases de dados, bem como o destino destes dados podem ser para um ou mais bancos de dados de sistemas de informação ou datamarts ou data warehouse.
A metodologia de ETL como já dito é extrair, transformar e carregar os dados. Em alguns casos pode não haver a necessidade de aplicar a transformação dos dados a serem carregados, pois os mesmos já podem estar de acordo com as regras do banco de dados de destino, mas são raros os casos de se pular a parte de transformação para um datamart ou data warehouse, visto que os mesmos foram criados para suprir uma necessidade que uma base de dados relacional não tem capacidade de fornecer. Esse tipo de processo pode acontecer mais quando se transfere dados de um banco relacional para outro, sendo neste caso um processo de migração de dados.
Atualmente a produção de informação é incessante e cresce vertiginosamente, inúmeras empresas possuem diversas fontes de dados em vários formatos. Para obter informações desses dados armazenados em fontes diversas, surge a necessidade de integrá-los de forma prática, ágil e produtiva.
Para transformar várias bases de dados em uma única fonte de consulta e processamento para obtenção de informação, devem ser aplicadas diversas técnicas de ordenação, agrupamento, padronização e limpeza dos dados.
O processo de automatização é de vital importância para quem deseja obter ganho de desempenho e não pode demandar maior parcela de tempo na captação de informações que são imprescindíveis nas tomadas de decisões gerenciais.
Para fins de exemplificação, foram utilizadas bases de dados de um concurso público da UFJF (Universidade Federal de Juiz de Fora). Tal concurso foi realizado pela Comissão Permanente de Seleção - COPESE e seus resultados foram divulgados em formato PDF, conforme cargo e localidade. As bases de dados são públicas e podem ser encontradas no site da Universidade Federal de Juiz de Fora.
Em artigos anteriores publicados na SQL Magazine, foram demonstrados os processos de extração e de transformação dos dados. Os dados foram extraídos de arquivos no formato PDF e convertidos para dados em formato texto. Também foram ordenados, ajustados, transformados e carregados para dentro de tabelas num banco de dados relacional.
Neste artigo será demonstrada a terceira fase do processo de ETL, a carga dos dados ou Load, que será automatizada pela ferramenta SSIS. Depois de todas as transformações sofridas pelos dados, os mesmo serão carregados em um banco de dados multidimensional no formato estrela, fazendo uso do SSIS. Serão revistos diversos componentes e suas respectivas aplicabilidades. Essa última fase se caracteriza por ser o fechamento de todo o trabalho feito pela extração e transformação.
Validação dos dados
Antes de iniciar o processo de carga dos dados será feita uma validação dos dados que foram manipulados na fase de transformação dos dados vista no artigo publicado na edição 108 da SQL Magazine. Esse tipo de verificação é vital para a continuação do processo, pois é mais fácil corrigir imperfeições na parte de tratamento dos dados, do que depois que os dados já foram carregados no datamart ou data warehouse.
Assim, a tabela tab_tratada passará por algumas verificações antes de ser carregada dentro do banco multidimensional. Essa verificação será feita por meio de scripts SQL dentro da ferramenta de banco de dados do SQL Server.
Todo o processo de validação será feito por meio de scripts T-SQL na ferramenta de banco de dados do SQL Server.
Para aqueles que estão começando a acompanhar o artigo agora, aconselhamos a leitura dos artigos anteriores publicados nas revistas SQL Magazine 107 e 108. Caso não seja possível, estaremos disponibilizando o script de criação do banco juntamente com os dados utilizados na seção Links no final do artigo.
O script da Listagem 1 seleciona todos os dados inseridos na tabela tab_tratada. Neste ponto deverá ser feita uma verificação visual para identificar algum erro grosseiro nos dados. A partir dos mesmos deve-se buscar por falhas mais específicas.
Listagem 1. Script que verifica todos os dados inseridos na tabela tab_tratada.
Use importa
SELECT
classificacao, nome, total, ling_port, rac_loc_quant, legislacao, con_esp,
pr_pratica, cidade, cargo, insc, data_nasc
FROM
#TAB_TRATADA
ORDER BY CARGO,INSC,NOME
Por meio da análise visual feita previamente sobre os dados da Listagem 1 foi possível constatar que alguns dados não passaram com sucesso pelo filtro que separa os registros com cargos que tem prova prática e os que não possuem prova prática, ocasionando irregularidades nos registros.
Percebe-se isso principalmente nos cargos que possuem descrições de Técnicos, onde os campos “con_esp” (conhecimentos específicos) e “pr_pratica” (prova prática) estão duplicados, sendo que tais registros não deveriam existir, pois são os que contêm falhas de inserção de dados.
Para fins de melhor visualização é necessário isolar estes casos. Dessa forma, é possível verificar melhor o tipo de inconsistência, vide Listagem 2.
Listagem 2. Script que filtra apenas os casos com registros inconsistentes.
Use importa
SELECT
ROW_NUMBER() over(PARTITION BY insc ORDER BY pr_pratica asc)
ordem,classificacao, nome, total, ling_port, rac_loc_quant, legislacao,
con_esp, pr_pratica, cidade, cargo, insc, data_nasc
FROM #TAB_TRATADA WHERE CARGO LIKE '%TECNICO%'
AND CARGO NOT LIKE 'TECNICO-DE-TECNOLOGIA-DA-INFORMACAO'
ORDER BY INSC,NOME
Com o script da Listagem 2 é possível verificar somente os casos em que existem as irregularidades. Foi criado somente dentro dessa consulta um campo chamado ordem, ele serve para diferenciar a maioria dos casos em que há irregularidades, ordem 1, e para os demais que não possuem esta classificação, ordem 2. Em alguns pouquíssimos registros os valores do campo ordem se invertem, então foi usado o script da Listagem 3 para uma verificação mais apurada.
Listagem 3. Verificação usando como critério o campo “con_esp” (conhecimentos específicos).
Use importa
SELECT
ROW_NUMBER() over(PARTITION BY insc ORDER BY pr_pratica asc)
ordem,classificacao, nome, total, ling_port, rac_loc_quant, legislacao,
con_esp, pr_pratica, cidade, cargo, insc, data_nasc
FROM #TAB_TRATADA WHERE CARGO LIKE '%TECNICO%'
AND CARGO NOT LIKE 'TECNICO-DE-TECNOLOGIA-DA-INFORMACAO'
AND CHARINDEX(' ',LTRIM(RTRIM(CON_ESP)))>0
ORDER BY INSC,NOME
Na Listagem 3 é possível visualizar todos os casos que possuem mais de uma nota dentro do campo “con_esp”. Verifica-se que existe um padrão separando a primeira nota da segunda nota. Esse padrão é um espaço em branco. Assim, será necessário remover todos os espaços em branco das extremidades e trazer todos os casos em que se tem um espaço em branco no meio de uma cadeia de caracteres. Para resolver essa situação usa-se o script da Listagem 4.
Listagem 4. Remove as colunas duplicadas e com erro nos dados de notas.
Use importa
BEGIN TRAN
DELETE
FROM #TAB_TRATADA WHERE CARGO LIKE '%TECNICO%'
AND CARGO NOT LIKE 'TECNICO-DE-TECNOLOGIA-DA-INFORMACAO'
AND CHARINDEX(' ',LTRIM(RTRIM(CON_ESP)))>0
COMMIT TRAN
Através do script da Listagem 4 é possível remover os registros duplicados com erro nos dados de notas, assim mantêm-se apenas os registros corretos.
Executando novamente o script da Listagem 3 percebe-se que os registros duplicados foram removidos e permaneceram apenas os registros com os dados corretos.
Outra verificação que pode ser feita é se existem nomes duplicados. Essa verificação é feita na Listagem 5.
Listagem 5. Verifica se existem nomes duplicados.
Use importa
SELECT NOME,MAX(INSC)INSC_MAXIMO,MIN(INSC)INSC_MINIMO
FROM #TAB_TRATADA GROUP BY NOME HAVING COUNT(NOME)>2
SELECT NOME,MAX(INSC)INSC_MAXIMO,MIN(INSC)INSC_MINIMO
FROM #TAB_TRATADA GROUP BY NOME HAVING COUNT(NOME)>1
A primeira consulta da Listagem 5 verifica se existem casos de mais de dois nomes iguais, porém isso não é verdadeiro. A segunda consulta é onde a condição traz os nomes duplicados e suas respectivas inscrições. Se as inscrições forem diferentes, quer dizer que são apenas pessoas com mesmo nome e não registros duplicados.
Mais uma verificação que pode ser feita é se existem inscrições duplicadas. Essa verificação é feita na ...
Confira outros conteúdos:
SQL SUM: somando os valores de uma...
SQL: INNER JOIN
SQL: Introdução ao Where
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
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.
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!
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.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.