Solução de ETL desenvolvida para o cliente CETIC.br –
Centro de Estudos sobre as Tecnologias da Informação e da
Comunicação
Rick Miranda Ferreira
DRE: 108038503
Projeto de Graduação apresentado ao Curso de
Engenharia Eletrônica e de Computação da Escola
Politécnica, Universidade Federal do Rio de
Janeiro, como parte dos requisitos necessários à
obtenção do título de Engenheiro.
Orientador: Aloysio de Castro Pinto Pedroza
Orientador: Diego da Silva Rodrigues
Rio de Janeiro
Julho de 2014
Solução de ETL desenvolvida para o cliente CETIC.br Centro de Estudos sobre as Tecnologias da Informação e da
Comunicação
Rick Miranda Ferreira
PROJETO DE GRADUAÇÃO SUBMETIDO AO CORPO DOCENTE DO CURSO
DE ENGENHARIA ELETRÔNICA E DE COMPUTAÇÃO DA ESCOLA
POLITÉCNICA DA UNIVERSIDADE FEDERAL DO RIO DE JANEIRO COMO
PARTE DOS REQUISITOS NECESSÁRIOS PARA A OBTENÇÃO DO GRAU DE
ENGENHEIRO ELETRÔNICO E DE COMPUTAÇÃO
Autor:
_________________________________________________
Rick Miranda Ferreira
Orientador:
_________________________________________________
Prof. Aloysio de Castro Pinto Pedroza, Dr.
Orientador:
_________________________________________________
Diego da Silva Rodrigues, M. Sc.
Examinador:
_________________________________________________
Prof. Flávio Luis de Mello, D.Sc.
Examinador:
_________________________________________________
Prof Antônio Cláudio Gómez de Sousa, Dr.
Rio de Janeiro – RJ, Brasil
Julho de 2014
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO
Escola Politécnica – Departamento de Eletrônica e de Computação
Centro de Tecnologia, bloco H, sala H-217, Cidade Universitária
Rio de Janeiro – RJ
CEP 21949-900
Este exemplar é de propriedade da Universidade Federal do Rio de Janeiro, que
poderá incluí-lo em base de dados, armazenar em computador, microfilmar ou adotar
qualquer forma de arquivamento.
É permitida a menção, reprodução parcial ou integral e a transmissão entre
bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja
ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem
finalidade comercial e que seja feita a referência bibliográfica completa.
Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es).
iii
AGRADECIMENTO
Dedico primeiramente este trabalho aos meus pais que contribuíram diretamente
em minha formação como cidadão e profissional. Dedico também a todos os
profissionais da empresa Calandra Soluções que me ensinaram e ajudaram sempre que
precisei.
iv
RESUMO
No mercado econômico atual, onde as empresas precisam se destacar entre seus
concorrentes, algum método diferencial deve ser implantado. Hoje em dia, a informação
é a ferramenta mais poderosa e importante que uma organização pode ter, portanto,
deve-se saber explorá-la da forma mais inteligente possível para obter conhecimento
sobre a própria empresa e tomar decisões estratégicas, visando a melhoria da
organização. Nesse contexto, a qualidade dos dados é de suma importância para que
toda essa informação possa se tornar conhecimento, destacando então a grande
importância do processo de ETL num modelo de Data Warehouse. Tendo em vista essa
importância, o tema desse trabalho é a solução de ETL desenvolvida conforme as regras
de negócio do cliente CETIC.br. Neste sentido, pretende-se extrair os dados das
pesquisas do Brasil sobre o uso das tecnologias da informação e da comunicação, fazer
as transformações necessárias para que o portal, também desenvolvido pela empresa
Calandra, possa consumir os dados da maneira adequada e apresenta-los de maneira
mais dinâmica auxiliando no melhor entendimento dos resultados das pesquisas
coletadas. Os resultados obtidos foram satisfatórios, cumprindo com todos os requisitos
e funcionalidades contratadas pelo CETIC.br. Para obter um entendimento tácito das
regras de negócio, foi necessária uma imersão no negócio e foi preciso realizar diversos
testes durante o desenvolvimento para que o sistema cobrisse todo o escopo previsto.
Palavras-Chave: Extração, Tranformação, Carga, Dados, Armazém de dados, Talend,
CETIC.
v
ABSTRACT
In the current market, where companies need to stand out amongst competitors, a
unique method must be thought of and put into practice. Nowadays, information is the
most powerful and influential tool that an organization can have, therefore, it is a tool
that needs to be explored cleverly to be able to gain knowledge about the company itself
and to make strategic decisions with the company’s goals in mind, which eventually
will gain the company prominence in the market. In this context, data quality is
extremely important so that all this information can be turned into knowledge;
highlighting the importance of an (ETL) process in a Data Warehouse model. Keeping
this in mind, the topic of this project entails the solution of ETL developed according to
the business conventions of the client CETIC.br. Accordingly, the goal is to review data
from research in Brazil about the use of information technology and communication,
making the necessary changes so that the portal, also developed by the company
Calandra, may use the data in the best manner and present the company in a more
dynamic way, assisting from the best understanding of the results from the collected
research. The results were satisfactory, complying with all the requirements and
functionalities contracted by CETIC.br. To acquire a better understanding of the
business conventions, an immersion in the business was necessary, which also included
the performance of several tests during the development of the system so that it would
cover the results anticipated.
Key-words: Extract, Tranform, Load, Data, Data Warehouse, Talend, CETIC.
vi
SIGLAS
BI – Business Intelligence
CETIC – Centro de Estudos sobre as Tecnologias da Informação e da Comunicação
CGI – Comitê Gestor da Internet
CSV – Comma-separated Values
DW – Data Warehouse
ETL – Extract Tranform Load
MD – Modelo Dimensional
NIC – Núcleo de Informação e Coordenação
OLAP – On-line Analytical Processing
OLTP – On-line Transaction Processing
TIC – Tecnologia da informação e da comunicação
UFRJ – Universidade Federal do Rio de Janeiro
XML – eXtensible Markup Language
vii
Sumário
Lista de figuras ....................................................................................................................X
Lista de tabelas ................................................................................................................. XI
1 Introdução ........................................................................................................................ 1
1.1 Tema ............................................................................................................................ 1
1.2 Delimitação .............................................................................................................. 1
1.3 Justificativa ............................................................................................................. 1
1.4 Objetivos ................................................................................................................... 2
1.5 Metodologia ............................................................................................................. 2
1.6 Descrição .................................................................................................................. 3
2 Apresentação do problema ..................................................................................... 4
2.1 Sobre o cliente ....................................................................................................... 4
2.2 Justificativa do projeto..................................................................................... 5
2.3 Objetivo do projeto ............................................................................................. 5
2.4 Atual ferramenta web do cliente ................................................................ 5
3 Conceitos de BI .............................................................................................................. 7
3.1 OLTP............................................................................................................................. 7
3.2 Data Marts ................................................................................................................ 7
3.3 Data Warehouse ................................................................................................... 8
3.4 Modelagem multidimensional ...................................................................... 8
3.5 Metadado ................................................................................................................ 10
3.6 ETL – Extração, transformação e carga de dados .......................... 10
3.7 OLAP .......................................................................................................................... 11
4 Modelagem de dados dos dicionários ............................................................. 13
4.1 Modelo de Entidade-Relacionamento .................................................... 13
4.2 Modelagem multidimensional – Template .......................................... 17
4.3 Dicionários ............................................................................................................. 19
4.4 Layout dos arquivos de dicionários ........................................................ 21
4.4.1
4.4.2
4.4.3
Layout do dicionário de perguntas .............................................. 21
Layout do dicionário de respostas ............................................... 22
Layout do dicionário de indicadores ........................................... 23
5 Solução de ETL desenvolvida ............................................................................... 28
5.1 Funcionalidades .................................................................................................. 28
5.2 Ferramentas utilizadas ................................................................................... 28
viii
5.3 Padrões .................................................................................................................... 28
5.4 Funcionamento .................................................................................................... 29
5.4.1
5.4.2
Carga dos dados ................................................................................. 30
Exclusão dos dados ........................................................................... 31
5.5 Processo de ETL .................................................................................................. 33
5.5.1
5.5.2
5.5.3
5.5.4
5.5.5
5.5.6
5.5.7
5.5.8
5.5.9
ETL – Job Start ................................................................................... 34
ETL – Job orquestrador ................................................................... 34
ETL – Job deleta ................................................................................. 35
ETL - Job carrega stage ................................................................... 36
ETL - Job carrega dw dicionários ................................................. 37
ETL – Job gera arquivo dicionário ............................................... 38
ETL – Job microdado ........................................................................ 39
ETL – Job send logs .......................................................................... 40
Execução do ETL ................................................................................ 41
5.6 Interface do portal ao usuário final ........................................................ 41
6 Conclusão ........................................................................................................................ 44
6.1 Resultados alcançados ................................................................................... 44
6.2 Trabalhos futuros e possíveis extensões ............................................ 45
Bibliografia ........................................................................................................................... 46
ix
Lista de figuras
Figura 1 - Escopo macro do projeto ................................................................... 5
Figura 2 - Atual apresentação de indicadores de pesquisas Fonte:
www.cetic.br ................................................................................................................ 6
Figura 3 - Modelo Estrela e Floco de Neve – Fonte: Kimball 2002. ....... 9
Figura 4 - Diagrama de ETL Fonte:
http://www.imc.com/services/enterprise-data-warehousing/etlprocess-management na data 13/08/2014................................................... 10
Figura 5 - Modelo de dados dos dicionários .................................................. 13
Figura 6 - Modelo multidimensional ................................................................. 18
Figura 7 - Layout do dicionario de perguntas - parte 1 ........................... 21
Figura 8 - Layout do dicionário de pergunta - parte 2 ............................. 22
Figura 9 - Layout do dicionário de respostas ............................................... 23
Figura 10 - Layout do dicionário de indicadores - parte 1 ...................... 24
Figura 11 - Layout do dicionário de indicadores - parte 2 ...................... 25
Figura 12 - Layout do dicionário de indicadores - parte 3 ...................... 25
Figura 13 - Layout do dicionário de indicadores - parte 4 ...................... 26
Figura 14 - Layout do dicionário de indicadores - parte 5 ...................... 26
Figura 15 - Layout do dicionário de indicadores - parte 6 ...................... 27
Figura 16 - Arquivo de configuração "database.xml" ................................ 29
Figura 17 - Arquivo de configuração "email_log.xml"............................... 30
Figura 18 - Arquivo de configuração de carga de dados
"estrutura_generico.xml"...................................................................................... 30
Figura 19 - Exemplo de configuração de carga de dados ........................ 31
Figura 20 – Arquivo de configuração “estrutura_generico.xml”
configurado para excluir dados .......................................................................... 32
Figura 21 – Exemplo de configuração do XML para exclusão de dados
........................................................................................................................................ 32
Figura 22 - Fluxograma de funcionamento do ETL .................................... 33
Figura 23 – Job Start .............................................................................................. 34
Figura 24 - Job orquestrador_generico ........................................................... 34
Figura 25 - Job Deleta ........................................................................................... 36
Figura 26 - Job carrega stage ............................................................................. 36
Figura 27 – Job carrega dw dicionários .......................................................... 37
Figura 28 - Job gera arquivo dicionário – parte 1 ...................................... 38
Figura 29 - Job gera arquivo dicionário - parte 2 ....................................... 39
Figura 30 - Job microdado – parte 1 ............................................................... 39
Figura 31 - Job microdado - parte 2 ................................................................ 40
Figura 32 - Job send logs ..................................................................................... 40
Figura 33 - Indicadores da pesquisa de Domicílios 2012 ........................ 41
Figura 34 - Série histórica Domicílios por computador (2008 - 2012)42
Figura 35 - Perfil de usuários com acesso as TIC's .................................... 42
Figura 36 – Proporção de Domicílios 2012 que possuem
equipamentos TIC.................................................................................................... 43
x
Lista de tabelas
Tabela
Tabela
Tabela
Tabela
Tabela
Tabela
Tabela
Tabela
Tabela
Tabela
Tabela
1 - Tabela dc_pesquisa ........................................................................... 14
2 - Tabela dc_unidade_analise ............................................................ 15
3 - Tabela dc_grupo_indicador ............................................................ 15
4 - Tabela dc_indicador .......................................................................... 15
5 - Tabela dc_pergunta .......................................................................... 16
6 - Tabela dc_resposta ........................................................................... 17
7 - Tabela dm_regiao .............................................................................. 19
8 - Tabela dm_<var_agrupamento> ................................................ 19
9 - Tabela ft_pesquisa_<ano>_<ua>_<idioma> ........................ 19
10 - Padrão de códigos dos idiomas .................................................. 28
11 - Padrão de códigos das pesquisas e unidades de análise . 29
xi
1 Introdução
1.1 Tema
O tema desse trabalho é a solução de ETL desenvolvida conforme as regras de
negócio do cliente CETIC.br. Neste sentido, o ETL deve extrair os dados das pesquisas
do Brasil sobre o uso das tecnologias da informação e da comunicação, fazer as
transformações necessárias para que o portal, também desenvolvido pela empresa
Calandra, possa consumir os dados da maneira adequada.
1.2 Delimitação
A delimitação desse projeto é desenvolver apenas a solução de ETL para que o
portal desenvolvido possa consumir as informações. Não faz parte do escopo desse
trabalho apresentar o desenvolvimento do site. A solução foi específica para o cliente
tendo em vista a complexidade das regras do negócio.
1.3 Justificativa
Dado a importância do processo ETL na arquitetura de um Data Warehouse, esse
tema tornou-se muito interessante. É um tema que precisa de mais ênfase tendo em
conta sua importância. ETL é uma das soluções de BI que vem ganhando terreno nas
organizações no que toca o processamento dos dados.
Esse processo é muito utilizado na empresa Calandra Soluções para integração de
dados. Também ele é utilizado para auxiliar na realização dos relatórios e entre outros.
O processamento correto desses dados é crítico para que se possa transformar essa
informação em conhecimento e utilizar essas informações como um diferencial no
mercado.
Neste sentido, pretende-se analisar o uso dessa tecnologia na empresa Calandra,
aplicado ao projeto CETIC.br, como sendo uma oportunidade de conhecimento e de
novos desafios.
1
1.4 Objetivos
O objetivo geral é propor um modelo de dados de dicionários que traduzam para
o sistema as perguntas e respostas das pesquisas e estruture as informações de forma
adequada. Desta forma, tem-se como objetivos específicos:

Propor um modelo de dados para os dicionários de perguntas, respostas e
indicadores;

Implementar um ETL para extrair as informações;

Transformar os dados de acordo com as regras de negócio;

Criar um armazém de dados das pesquisas;

Carregar os dados nos repositórios para que o portal possa consumi-los.
1.5 Metodologia
Foram realizadas reuniões com o cliente para que se pudesse entender o
problema e então estudar e discutir uma possível solução. Em seguida, foram
desenvolvidos os dicionários com o intuito de traduzir as perguntas, respostas e os
indicadores para o sistema. A partir disso, foi desenvolvido o modelo lógico de dados
respeitando as regras de negócio. Após esta etapa, foi implementado o ETL para fazer a
carga dos dados no DW para então carregar a ferramenta OLAP Calandra BI e verificar
se o sistema respondia da maneira desejada reproduzindo o resultado das consultas do
antigo site do cliente. Foram realizadas inúmeras interações com o cliente durante todo
o processo de desenvolvimento para que todos os ajustes necessários para mapear as
inconsistências, até que o sistema desenvolvido fosse confiável e representasse as regras
de negócio fielmente. Por fim, carregou-se os repositórios definitivos para que os dados
fossem indexados e consultados pelo novo portal.
A modelagem utilizada para os dicionários na arquitetura de Data Warehouse foi
a Entidade-Relacionamento. Já a modelagem utilizada no solr, repositório final de
dados, foi a modelagem multidimensional. No desenvolvimento do sistema foi adotada
a abordagem estruturada.
2
1.6 Descrição
No capítulo 2 será apresentado o cliente assim como a especificação do
problema. O capítulo 3 apresenta os conceitos básicos para entendimento do tema
abordado no projeto. A modelagem de dados e os layouts dos dicionários desenvolvidos
serão apresentados no capítulo 4. No capítulo 5 será explicitada a solução de ETL
desenvolvida para o projeto CETIC, assim como os procedimentos para utilizar o
sistema. No capítulo 6 serão apresentados os resultados e possíveis extensões do
projeto.
3
2 Apresentação do problema
Neste capítulo, será apresentado o cliente como também a motivação por parte
deste para o projeto e seus objetivos específicos.
2.1 Sobre o cliente
O Comitê Gestor da Internet no Brasil – CGI.br, criado pela Portaria
Interministerial nº 147 em maio/1995 e alterada pelo Decreto Presidencial nº 4.829 em
setembro/2003, tem como missão coordenar e integrar todas as iniciativas de serviços
Internet no Brasil, promovendo a qualidade técnica, a inovação e a disseminação dos
serviços ofertados. Dentre as suas atribuições e responsabilidades, o CGI.br coleta,
organiza e dissemina informações, indicadores e estatísticas sobre o uso das tecnologias
de informação e comunicação no Brasil.
O Núcleo de Informação e Coordenação do Ponto BR – NIC.br é uma entidade
civil privada e sem fins lucrativos, criado para implementar as decisões e projetos do
CGI.br. O Centro de Estudos sobre as Tecnologias da Informação e da Comunicação
(CETIC.br) é um departamento do NIC.br e tem como objetivo conduzir pesquisas
especializadas, produzir e divulgar indicadores, estatísticas e informações estratégicas
sobre o desenvolvimento da Internet no Brasil. O CETIC.br vem concentrando esforços
para a ampliação e melhoria da qualidade dos indicadores e das estatísticas produzidas
anualmente em suas pesquisas, com o objetivo de garantir a confiabilidade dos dados, a
geração de melhores informações e, sobretudo, melhor nível de comparabilidade
internacional [3].
Atualmente o CETIC.br realiza as seguintes pesquisas sobre o acesso e uso das
TIC no Brasil: TIC Domicílios, TIC Empresas, TIC Microempresas, TIC Crianças, TIC
Kids Online, TIC Educação, TIC Saúde, TIC Centros de Acesso Público (Tele centros e
Lanhouses), TIC Governo Eletrônico, TIC Organizações Sem Fins Lucrativos e TIC
Provedores.
4
2.2 Justificativa do projeto
O antigo site do CETIC.br apresentava os dados das pesquisas em tabelas
estáticas e de difícil interpretação para o usuário. O cliente também tinha a necessidade
de poder comparar, ao longo dos anos, dados que eram relevantes para a sociedade,
academia e pesquisadores além de deixar a visualização destes mais atraentes.
2.3 Objetivo do projeto
O principal objetivo do projeto era construir uma ferramenta de visualização
web, responsável por disponibilizar relatórios, gráficos e mapas por meio de indicadores
do armazém de dados do CETIC.br até abril de 2014. Na Figura 1 foi apresentado o
escopo macro do projeto [4]. Com isso, espera-se:

Melhor padronização e estruturação dos dados gerados pelas pesquisas;

Melhor transferência de conhecimento para a sociedade, academia e
pesquisadores;

Facilidade na consulta e análise das pesquisas geradas através de técnicas de
visualizações modernas.
Figura 1 - Escopo macro do projeto
2.4 Atual ferramenta web do cliente
No atual site do cliente os indicadores são exibidos conforme a Figura 2 com os
conceitos necessários para melhor entendimento da estrutura das tabelas.
5
Figura 2 - Atual apresentação de indicadores de pesquisas
Fonte: www.cetic.br
6
3 Conceitos de BI
Nesse capítulo serão apresentados os conceitos de Business Intelligence que são
fundamentais para o bom entendimento do projeto.
3.1 OLTP
Sistemas OLTP, do inglês on-line transaction processing: são sistemas que têm a
tarefa de monitorar e processar as funções básicas e rotineiras de uma organização, tais
como processamento da folha de pagamento, faturamento, estoque, etc. Os fatores
críticos de sucesso para este tipo de sistema são: alto grau de precisão, integridade a
nível transacional e produção de documentos em tempo hábil.
Os dados transacionais OLTP são usados pelos usuários em geral no dia-a-dia
em seus processos e transações, gravação e leitura. Ex.: consulta de estoque, registro de
vendas.
O principal objetivo da modelagem relacional em um sistema OLTP é eliminar
ao máximo a redundância, de tal forma que uma transação que promova mudanças no
estado do banco de dados, atue o mais pontualmente possível. Com isso, nas
metodologias de projeto usuais, os dados são fragmentados por diversas tabelas
(normalizados), o que traz uma considerável complexidade à formulação de uma
consulta por um usuário final. Por isso, esta abordagem não parece ser a mais adequada
para o projeto de um Data Warehouse, onde estruturas mais simples, com menor grau de
normalização devem ser buscadas.
3.2 Data Marts
O Data Warehouse é normalmente acedido através de Data Marts, que são
pontos específicos de acesso a subconjuntos do Data Warehouse. Os Data Marts são
construídos para responder prováveis perguntas de um tipo específico de usuário. Por
exemplo: um Data Mart financeiro poderia armazenar informações consolidadas dia a
dia para um usuário gerencial e em periodicidades maiores (semana, mês, ano) para um
usuário no nível da diretoria. Um Data Mart pode ser composto por um ou mais cubos
de dados.
7
3.3 Data Warehouse
Um Data Warehouse, ou ainda armazém de dados, é utilizado para armazenar
informações relativas às atividades de uma organização em bancos de dados, de forma
consolidada. A estrutura da base de dados favorece os relatórios, a análise de grandes
volumes de dados e a obtenção de informações estratégicas que podem facilitar
a tomada de decisão.
O Data Warehouse possibilita a análise de grandes volumes de dados, coletados
dos sistemas transacionais (OLTP). São as chamadas séries históricas que possibilitam
uma melhor análise de eventos passados, oferecendo suporte às tomadas de decisões
presentes e a previsão de eventos futuros. Por definição, os dados em um Data
Warehouse não são voláteis, ou seja, eles não mudam, salvo quando é necessário fazer
correções de dados previamente carregados. Os dados estão disponíveis somente para
leitura e não podem ser alterados.
Os Data Warehouse surgiram como conceito acadêmico na década de 80. Com o
amadurecimento dos sistemas de informação empresariais, as necessidades de análise
dos dados cresceram paralelamente. Os sistemas OLTP não conseguiam cumprir a
tarefa de análise com a simples geração de relatórios. Nesse contexto, a implementação
do Data Warehouse passou a se tornar realidade nas grandes corporações. O mercado de
ferramentas de Data Warehouse, que faz parte do mercado de Business Intelligence,
cresceu então, e ferramentas melhores e mais sofisticadas foram desenvolvidas para
apoiar a estrutura do Data Warehouse e sua utilização.
Atualmente, por sua capacidade de sumarizar e analisar grandes volumes de
dados, o Data Warehouse é o núcleo dos sistemas de informações gerenciais e apoio à
decisão das principais soluções de Business Intelligence do mercado.
3.4 Modelagem multidimensional
Os sistemas de base de dados tradicionais armazenam os dados em formato
normalizado para garantir consistência dos dados, minimização do espaço de
armazenamento necessário e diminuição de redundâncias, que devem ser verificadas
antes da conclusão do modelo de dados. Entretanto, algumas transações e consultas
costumam ser mais complexas devido ao número de tabelas envolvidas.
8
Os elementos que compõem um modelo dimensional são: Tabela Fato e Tabela
Dimensão. A tabela de fatos é a principal tabela de um modelo dimensional, onde as
medições numéricas de interesse da empresa estão armazenadas [2]. A palavra "fato"
representa uma medida dos processos modelados, como quantidades, valores e
indicadores. A tabela de fatos registra os fatos que serão analisados. É composta por
uma chave primária (formada por uma combinação única de valores de chaves de
dimensão) e pelas métricas de interesse para o negócio. A tabela de dimensão é
composta de atributos e contém a descrição do negócio. Seus atributos são fontes das
restrições de consultas, agrupamento dos resultados e cabeçalhos para relatórios. Ela
possui aspectos pelos quais se pretende observar as métricas relativas ao processo
modelado. A tabela de dimensão costuma ser bem menor do que a tabela fato.
Um Data Warehouse restringe-se a normalizar as dimensões e usar tabelas fatos
com granularidade única. Isto aumenta o desempenho das consultas e como benefício
adicional, o processo torna-se mais intuitivo para os utilizadores leigos. Essa maneira de
reordenar os dados chama-se Modelagem Dimensional, e o resultado da modelagem é o
Modelo Dimensional, ou MD.
Esse tipo de modelagem tem dois modelos: Modelo Estrela (Star Schema e
Modelo Floco de Neve (Snow Flake) [4]. O nome “estrela” se dá devido à disposição
em que se encontram as tabelas, sendo a fato centralizada relacionando-se com diversas
outras tabelas de dimensão. Já o modelo “floco de neve” consiste em uma extensão do
modelo estrela onde cada uma das "pontas da estrela" passa a ser o centro de outras
estrelas. Isto porque cada tabela de dimensão seria normalizada, "quebrando-se" a tabela
original ao longo de hierarquias existentes em seus atributos. Podemos visualizar os
dois modelos na Figura 3.
Figura 3 - Modelo Estrela e Floco de Neve – Fonte: Kimball 2002.
9
3.5 Metadado
O conceito metadado é considerado como sendo os "dados sobre dados", isto é,
os dados sobre os sistemas que operam com estes dados. Um repositório de metadados é
uma ferramenta essencial para o gerenciamento de um Data Warehouse no momento de
converter dados em informações para o negócio. Entre outras coisas, um repositório de
metadados bem construído deve conter informações sobre a origem dos dados, regras de
transformação, nomes e alias, formatos de dados, etc. Ou seja, esse "dicionário" deve
conter muito mais do que as descrições de colunas e tabelas: deve conter informações
que adicionem valor aos dados.
3.6 ETL – Extração, transformação e carga de dados
A etapa de ETL é uma das mais críticas de um projeto de DW, pois uma
informação carregada erroneamente trará consequências imprevisíveis nas fases
posteriores. O objetivo desta fase é fazer a integração de informações de fontes
múltiplas e complexas. Basicamente, divide-se esta etapa em três passos: extração,
transformação e carga dos dados. Embora tenhamos hoje em dia ferramentas que
auxiliam na execução do trabalho, ainda assim é um processo trabalhoso, complexo e
também muito detalhado. A Figura 4 apresenta as etapas do ETL que serão descritas a
seguir.
Figura 4 - Diagrama de ETL
Fonte: http://www.imc.com/services/enterprise-data-warehousing/etl-process-management na data 13/08/2014
10
Carga: Num processo de ETL, primeiramente, há a necessidade de definir as origens
das fontes de dados e fazer a extração deles. As origens deles podem ser várias e
também em diferentes formatos, onde poderemos encontrar desde os sistemas
transacionais das empresas (por exemplo: SAP, BSCS, etc.) até planilhas, arquivos
textos e também arquivos DBF (dBase) ou do Microsoft Access.
Limpeza: Definidas as fontes de dados, é necessário o processo de transformação e
limpeza dos dados. A limpeza é necessária porque os dados normalmente vêm de uma
fonte muitas vezes desconhecida, concebida há bastante tempo pelo cliente, contendo
inconsistências e dados sem significado para o negócio.
Transformação. Uma vez que a origem dos dados pode ser de sistemas diferentes, às
vezes é necessário padronizar os diferentes formatos. Quando levamos esses dados para
o DW, deve-se ter uma padronização deles, ou seja, deve ser colocado sob uma mesma
estrutura.
3.7 OLAP
OLAP, ou On-line Analytical Processing é a capacidade para manipular e
analisar um grande volume de dados sob múltiplas perspectivas. As aplicações OLAP
são usadas pelos gestores em qualquer nível da organização para lhes permitir análises
comparativas que facilitem a sua tomada de decisões diárias.
Em um modelo de dados OLAP, a informação é conceitualmente organizada em
cubos que armazenam valores quantitativos ou medidas. As medidas são identificadas
por duas ou mais categorias descritivas denominadas dimensões que formam a estrutura
de um cubo. Uma dimensão pode ser qualquer visão do negócio que faça sentido para
sua análise, como produto, departamento ou tempo. Este modelo de dados
multidimensional simplifica para os usuários o processo de formular pesquisas ou
"queries" complexas, criar relatórios, efetuar análises comparativas, e visualizar
subconjuntos (slice) de maior interesse. Por exemplo, um cubo contendo informações de
vendas poderá ser composto pelas dimensões tempo, região, produto, cliente, cenário
11
(orçado ou real) e medidas. Medidas típicas seriam valor de venda, unidades vendidas,
custos, margem, etc.
Dentro de cada dimensão de um modelo OLAP, os dados podem ser organizados
em uma hierarquia que define diferentes níveis de detalhe. Por exemplo, dentro da
dimensão tempo, você poderá ter uma hierarquia representando os níveis anos, meses, e
dias. Da mesma forma, a dimensão região poderá ter os níveis país, região, estado e
cidade. Assim, um usuário visualizando dados em um modelo OLAP irá navegar para
cima (drill up) ou para baixo (drill down) entre níveis para visualizar informação com
maior ou menor nível de detalhe.
12
4 Modelagem de dados dos dicionários
O objetivo desse capítulo é apresentar o modelo de dados e os dicionários
criados para o projeto CETIC. A primeira seção descreve o modelo EntidadeRelacionamento dos dicionários, a segunda seção descreve genericamente o modelo
multidimensional, a terceira apresenta os dicionários desenvolvidos e a quarta seção
mostra o layout dos dicionários.
4.1 Modelo de Entidade-Relacionamento
O modelo de dados abaixo foi criado para solucionar a parte de armazenamento
dos dados dos dicionários e harmonização. A harmonização dos dados é de grande
importância, pois esta permite a comparação de indicadores ao longo do tempo que
muitas vezes os valores de referência são diferentes. Com isso, foi categorizado as
respostas nos campos harmonizados tornando-os assim equiparáveis.
Podemos visualizar o modelo na Figura 5 com suas as tabelas e seus respectivos
relacionamentos:
Figura 5 - Modelo de dados dos dicionários
13
Segue abaixo o padrão utilizado para nomear com prefixos as tabelas e campos
do modelo:

dc – abreviação de dicionário

id – abreviação de identificador

co – abreviação de código

no – abreviação de nome

ing_no – abreviação de inglês e nome

esp_no – abreviação de espanhol e nome

ds – abreviação de descrição

ing_ds – abreviação de inglês e descrição

esp_ds – abreviação de espanhol e descrição

tp – abreviação de tipo

tx – texto
O formato padrão adotado para todos os arquivos de dados foi CSV. Já os
arquivos de configuração do ETL, o padrão adotado foi XML.
Seguem abaixo as tabelas de atributos que compõem o modelo desenvolvido.
Tabela 1 - Tabela dc_pesquisa
Tabela
Descrição
dc_pesquisa
Tabela que armazena os dados de código e descrição de pesquisas existentes.
Ex: TIC_DOM, Pesquisa de Domicílios.
Campos
Tipo
Descrição
id_pesquisa
Int
Chave primária da tabela dc_pesquisa. Identificador da pesquisa no
modelo de dados. Ex: 1.
ano
Int
Ano em que ocorreu a pesquisa.
co_pesquisa
Varchar Código da Pesquisa. Ex: Tic_Dom.
no_pesquisa
Varchar
ing_no_pesquisa
Varchar Nome da Pesquisa em inglês (Descrição). Ex: Household Survey.
esp_no_pesquisa
Varchar Nome da Pesquisa em espanhol (Descrição). Ex: Encuesta de Hogares.
Nome da Pesquisa em português (Descrição). Ex: Pesquisa de
Domicílios.
14
Tabela 2 - Tabela dc_unidade_analise
Tabela
Descrição
dc_unidade_analise
Tabela que armazena os dados de código e texto das unidades de análise de
uma pesquisa. Ex:Alunos.
Campos
Tipo
id_unidade_analise
Int
id_pesquisa
Int
co_unidade_analise
Varchar Código da unidade de análise.
no_unidade_analise
Varchar Nome da unidade de análise. Ex: Alunos.
Descrição
Chave primária da tabela dc_unidade_analise. Identificador da
unidade de análise no modelo de dados. Ex: 1.
Chave estrangeira da tabela dc_pesquisa. Identificador da pesquisa
no nosso modelo de dados. Ex: 1.
ing_no_unidade_analise Varchar Nome da unidade de análise em Inglês. Ex: Students.
esp_no_unidade_analise Varchar Nome da unidade de análise em Espanhol. Ex: Estudiantes.
Tabela 3 - Tabela dc_grupo_indicador
Tabela
dc_grupo_indicador
Campos
id_grupo_indicador
id_unidade_analise
Descrição
Tabela que armazena os dados de código e texto dos grupos de indicadores de
uma pesquisa. Ex: B, Uso da Internet.
Tipo
Descrição
Chave primária da tabela dc_grupo_indicador. Identificador do
Int
grupo de indicadores no modelo de dados. Ex:1.
Chave estrangeira da tabela dc_unidade_analise. Identificador da
Int
unidade de análise no modelo de dados. Ex: 1.
Campos
Tipo
co_grupo_indicador
Varchar Código do grupo de indicadores. Ex: B.
Descrição
no_grupo_indicador
Varchar Nome do grupo de indicadores. Ex: Uso da Internet.
ing_no_grupo_indicador Varchar Nome do grupo de indicadores em inglês. Ex: Uso da Internet.
esp_no_grupo_indicador Varchar Nome do grupo de indicadores em Espanhol. Ex: Uso da Internet.
Tabela 4 - Tabela dc_indicador
Tabela
Descrição
dc_indicador
Tabela que armazena os dados de código e descrições dos indicadores.
Ex: B6, PROPORÇÃO DE EMPRESAS QUE POSSUEM WEBSITE.
Campos
Tipo
id_indicador
Int
id_grupo_indicador
Int
co_indicador
Varchar
no_indicador
Varchar
no_indicador_harmonizado
Varchar
tp_indicador
Varchar
ds_indicador
Varchar
Descrição
Chave primária da tabela dc_indicador. Identificador do
indicador no modelo de dados. Ex: 1
Chave estrangeira da tabela dc_grupo_indicador.
Identificador do grupo de indicadores no modelo de dados.
Ex:1
Código do indicador. Ex: B6
Nome do indicador. Ex: PROPORÇÃO DE EMPRESAS
QUE POSSUEM WEBSITE.
Nome do indicador harmonizado. Ex: PROPORÇÃO DE
EMPRESAS QUE USAM WEBSITE
Tipo do indicador. Pode ser D- dicotômico, DD- dicotômico
derivado, N- normal
Descrição do indicador. Ex: Percentual sobre o total de
empresas com acesso à Internet¹.
15
 Descrição da base de dados do indicador. Ex: ¹Base: 6 231
Varchar empresas que declararam ter acesso à Internet, com 10 ou
mais pessoas ocupadas e etc.
 Descrição das notas relativas ao indicador. Ex:
ds_nota_indicador
Varchar Considerando-se o computador de uso principal no
domicílio.
Nome do indicador em inglês. Ex: PROPORTION OF
Ing_no_indicador
Varchar
ENTERPRISES OWN WEBSITE.
Descrição do indicador em Inglês. Ex: Percentage of total
Ing_ds_indicador
Varchar
number of enterprises with Internet access ¹.
Descrição da base de dados do indicador em inglês. Ex:
Ing_ds_base_indicador
Varchar ¹Base: 6231 companies that reported having Internet access,
with 10 or more employees e etc.
 Descrição das notas relativas ao indicador em inglês. Ex:
ing_ds_nota_indicador
Varchar
Considering the main computer use at home.
Nome do indicador em espanhol. Ex: PROPORCIÓN DE
Esp_no_indicador
Varchar
EMPRESAS SITIO WEB PROPIA.
Descrição do indicador em espanhol. Ex: Porcentaje del
Esp_ds_indicador
Varchar
número total de empresas con acceso a Internet ¹.
Descrição base de dados do indicador em espanhol. Ex:
Esp_ds_base_indicador
Varchar ¹Base: 6.231 empresas que reportaron tener acceso a
Internet, em 10 o más empleados e etc.
 Descrição das notas relativas ao indicador em espanhol. Ex:
esp_ds_nota_indicador
Varchar Teniendo en cuenta que el principal uso del ordenador en
casa.
 Nome do indicador harmonizado em inglês. Ex:
ing_no_indicador_harmonizado Varchar
PROPORTION OF ENTERPRISES OWN WEBSITE.
 Nome do indicador harmonizado em espanhol. Ex:
esp_no_indicador_harmonizado Varchar
PROPORCIÓN DE EMPRESAS SITIO WEB PROPIA.
 Código do peso a ser utilizado no cálculo da proporção. Ex:
co_peso
Varchar
PesoBase.
 Texto do filtro a ser utilizado no cálculo da proporção. Ex:
tx_filtro
Varchar
Se P26 = 1.
Ds_base_indicador
Tabela 5 - Tabela dc_pergunta
Tabela
Descrição
dc_pergunta
Tabela que armazena os dados de código e texto das perguntas de uma
pesquisa. Ex: est_civ, Estado civil do entrevistado.
Campos
Tipo
id_pergunta
Int
id_unidade_analise
co_pergunta
co_pergunta_harmonizada
no_pergunta
uso_analise
Descrição
Chave primária da tabela dc_pergunta. Identificador da
pergunta no modelo de dados. Ex: 1
Chave estrangeira da tabela dc_unidade_analise.
Int
Identificador da unidade de análise no modelo de dados. Ex:
1
Varchar Código da pergunta. Ex: sexo.
Varchar Código da pergunta harmonizada. Ex: Sexo.
Nome da pergunta em português (Descrição). Ex: Qual o
Varchar
sexo do respondente?
Indica se a pergunta é de agrupamento ou dimensão. Ex: A –
Varchar
Agrupamento e D – dimensão.
no_categoria
Varchar Nome da categoria em português. Ex: Tecnologia de rede.
uso_resposta
Varchar
ing_no_pergunta
Indica se o texto a ser exibido é o da pergunta ou da resposta.
Ex: S.
Nome da pergunta em inglês (Descrição). Ex: What is the
Varchar
16el16 f the respondent?
16
esp_no_pergunta
Varchar
ing_no_categoria
Varchar
esp_no_categoria
Varchar
no_categoria_harmonizada
varchar
ing_no_categoria_harmonizada Varchar
esp_no_categoria_harmonizada Varchar
co_unidade_analise
Nome da pergunta em espanhol (Descrição). Ex: ¿Qué e sexo
el encuestado?
Nome da categoria em inglês (Descrição). Ex: Network
technology.
Nome da categoria em espanhol (Descrição). Ex: Tecnología
de red.
Nome da categoria harmonizada em português. Ex:
Tecnologia de rede.
Nome da categoria harmonizada em inglês. Ex: Network
technology.
Nome da categoria harmonizada em espanhol. Ex:
Tecnología de red.
Varchar Código da unidade de análise. Ex: Aluno.
Tabela 6 - Tabela dc_resposta
Tabela
Descrição
dc_resposta
Tabela que armazena os dados de código e texto das respostas de uma pesquisa.
Ex: 2, Centro.
Campos
Tipo
id_resposta
Int
id_pergunta
Int
co_resposta
Int
no_resposta
Varchar Nome da resposta em português (Descrição). Ex: Sim.
no_harmonizado
Varchar
ing_no_resposta
Varchar Nome da resposta em inglês (Descrição). Ex: Yes.
esp_no_resposta
Varchar Nome da resposta em espanhol (Descrição). Ex: Sí.
Descrição
Chave primária da tabela dc_resposta. Identificador da resposta no
modelo de dados. Ex:1
Chave estrangeira da tabela dc_pergunta. Identificador da pergunta no
nosso modelo de dados. Ex: 1
Código da resposta. Ex: 1.
Nome harmonizado designado para a resposta em português
(Descrição). Ex: 1 salário mínimo.
Nome harmonizado designado para a resposta em inglês (Descrição).
Ex: 1 brazilian minimum wage.
Nome harmonizado designado para a resposta em espanhol
esp_no_harmonizado Varchar
(Descrição). Ex: 1 salario mínimo brasileño.
ing_no_harmonizado Varchar
4.2 Modelagem multidimensional – Template
O modelo de dados abaixo foi criado como um template genérico que representa o
modelo multidimensional do projeto. Esta modelagem é importante para que se possa
fazer análises em tempo real (em ferramenta OLAP) fazendo combinações de
agrupamentos diversos com dimensões. As várias tabelas fatos serão geradas para cada
pesquisa/ano/unidade de análise/idioma. Apesar de não estarem representados nesse
modelo, terão fatos multilíngues.
Cada pesquisa tem no banco, suas dimensões de variáveis de agrupamento
específicas (representadas por dm_regiao e dm_<var_agrupamento>). Tem também
suas várias dimensões de perguntas, para as usadas na contagem dos indicadores
(representadas por co e no <pergunta>).
17
O conteúdo do campo genérico co_<pergunta>, é o código da resposta dada para a
pergunta que aquele campo representa. Da mesma forma o conteúdo do campo genérico
no_<pergunta>, é o nome da resposta dada para pergunta que aquele campo representa.
Figura 6 - Modelo multidimensional
Segue abaixo o padrão utilizado para nomear com prefixos as tabelas e campos
do modelo:

dm – abreviação de dimensão

ft – abreviação de fato

id – abreviação de identificador

co – abreviação de código

no – abreviação de nome

<> – representa que os nomes são genéricos

ano – representa o ano da pesquisa

UA – representa a unidade de análise

var_agrupamento – representa variáveis de agrupamento
18
Seguem abaixo as tabelas da modelagem multidimensional.
Tabela 7 - Tabela dm_regiao
Tabela
Descrição
dm_regiao
Tabela da dimensão região. Escolhida para estar no template por constar em
todas as pesquisas.
Campos
Tipo
Descrição
co_regiao
Int
Chave primária da dimensão dm_regiao. Código da região. Ex: reg_tab
co_resposta
Varchar
Código da resposta. Ex: 1. (se referencia a “Norte” pelo dicionário de
respostas)
Tabela 8 - Tabela dm_<var_agrupamento>
Tabela
Descrição
dm_<var_agrupamento>
Tabela que representa as demais dimensões necessárias para as variáveis de
agrupamento de cada pesquisa. Ex: Porte.
Campos
Tipo
co_<var_agrupamento>
Int
co_resposta
Descrição
Na dimensão vai existir um código da variável de agrupamento
referente à pesquisa. Ex: zona_tab.
Na dimensão vai existir um código que se refere a resposta da
Varchar pergunta referente ao agrupamento. Ex: 2 (se referencia a “Rural”
pelo dicionário de respostas)
Tabela 9 - Tabela ft_pesquisa_<ano>_<ua>_<idioma>
Tabela
Descrição
ft_pesquisa_<ano>_<ua>
Tabela que representa a fato de cada pesquisa no ano e na unidade de analise
específica.
Campos
Tipo
id_quest
Int
co_regiao
co_<var_agrupamento>
Descrição
Chave primária da fato que contem o identificador do questionário.
Ex: 100
Chave estrangeira da dimensão região. Código da região. Ex:
Varchar
reg_tab
Representa a chave estrangeira das demais dimensões de variáveis
Int
de agrupamento. Ex: zona_tab.
co_<var_pergunta>
Varchar Representa os códigos das perguntas daquela pesquisa. Ex: P1.
co_resposta
Varchar
peso
Varchar Campo de peso da resposta. Ex: 0.285432.
O conteúdo dele será o código da resposta para aquela pergunta. Ex:
1.
4.3 Dicionários
Os dicionários consistem em arquivos gerados no formato adequado para a carga
dos dados no sistema. Foram estruturados baseados no modelo de dados dos dicionários
e harmonização do projeto CETIC. Devem ser preenchidos nos padrões observados
nesta seção para que a inserção dos dados seja bem sucedida. O objetivo dos arquivos
de dicionários é carregar as informações para o banco de dados do projeto com todas as
descrições e associações entre indicadores, perguntas e respostas.
19
Os nomes dos arquivos de dicionários devem obedecer o formato abaixo:
<Código da pesquisa>_<ano>_dicionario_perguntas.csv
<Código da pesquisa>_<ano>_dicionario_respostas.csv
<Código da pesquisa>_<ano>_<unidade_análise>_dicionario_indicadores.csv
<Código indicativo da Pesquisa>_<ano>_erro.csv
Dados_<Código indicativo da Pesquisa>_<ano>.csv
Onde:
Código da pesquisa é a abreviação TIC_ somada a abreviação (3 letras) designada a um
dos tipos de pesquisa existentes. Ex: TIC_DOM para Pesquisa de Domicílios.
Exemplo de nome de arquivo: TIC_DOM_2012_dicionario_perguntas.csv.
O projeto adotou como padrão que os arquivos fontes dos dados são de formato
CSV (comma-separated values). O sistema não será capaz de carregar arquivos em
outras extensões.
Exemplo de nome completo de arquivo: TIC_DOM_2012_dicionario_perguntas.csv
O padrão utilizado para nomear os campos dos arquivos de um dicionário segue
a mesma forma do modelo de dados, onde:

dc – abreviação de dicionário

id – abreviação de identificador

co – abreviação de código

no – abreviação de nome

ing_no – abreviação de inglês e nome

esp_no – abreviação de espanhol e nome

ds – abreviação de descrição

ing_ds – abreviação de inglês e descrição

esp_ds – abreviação de espanhol e descrição

tp – abreviação de tipo

tx – texto
20
4.4 Layout dos arquivos de dicionários
A estrutura de layout dos arquivos de dicionário é essencial para a parte de carga
dos dados do projeto CETIC. É necessário respeitar o nome, o conteúdo e a posição dos
campos para o processo de inserção dos dados seja bem sucedido.
4.4.1 Layout do dicionário de perguntas
O Layout do dicionário de perguntas é formado por dois campos essenciais
(co_pergunta e no_pergunta) a serem preenchidos para a carga dos dados e outros
opcionais.

tipo_var: Contém o tipo da pergunta (D – dimensão ou A – Agrupamento). Pode
ser observado na Figura 7 coluna A. Ex: D.

co_pergunta: Contém o código associado ao texto da pergunta de uma pesquisa.
Pode ser observado na Figura 7 coluna B. Ex: QUEST.

co_pergunta_harmonizada: Contém o código da pergunta harmonizada. Não foi
necessária a utilização da mesma no decorrer do projeto, logo ficará em branco.
Coluna C da Figura 7.

no_pergunta: Contém o valor do texto da pergunta de uma pesquisa. Pode ser
observado na coluna D da Figura 7. Ex: Número do Questionário.

no_categoria: Contém o valor do texto referente a uma categoria na dimensão, se
existir. Ex: Banda Larga. Pode ser observado na coluna E da Figura 7.

uso_resposta: Variável de controle para utilizar ou não a descrição da pergunta
no lugar da descrição da resposta. Se uso_resposta = S, o no_pergunta será
exibido no lugar da descrição da resposta dessa pergunta (Utilizado sempre
quando o indicador relacionado é do tipo Dicotômico Derivado – DD). Na
Figura 7 pode ser observado na coluna F.

ing_no_pergunta: Contém o valor do texto da pergunta de uma pesquisa em
inglês. É opcional. Na Figura 7 pode ser observado na coluna G.
Figura 7 - Layout do dicionario de perguntas - parte 1
21

esp_no_pergunta: Contém o valor do texto da pergunta de uma pesquisa em
espanhol. É opcional. Na Figura 8 pode ser observado na coluna H.

ing_categoria: Contém o valor do texto da categoria de uma pesquisa em inglês.
É opcional. Na Figura 8 pode ser observado na coluna I.

esp_categoria: Contém o valor do texto da categoria de uma pesquisa em
espanhol. É opcional. Na Figura 8 pode ser observado na coluna J.

no_categoria_harmonizada: Contém o valor do texto da categoria harmonizada.
Não foi necessária a utilização da mesma no decorrer do projeto, logo ficará em
branco. Coluna K da Figura 8.

ing_no_categoria_harmonizada: Contém o valor do texto da categoria
harmonizada em inglês. Não foi necessária a utilização da mesma no decorrer do
projeto, logo ficará em branco. Coluna L da Figura 8.

esp_no_categoria_harmonizada: Contém o valor do texto da categoria
harmonizada em espanhol. Não foi necessária a utilização da mesma no decorrer
do projeto, logo ficará em branco. Coluna M da Figura 8.
Figura 8 - Layout do dicionário de pergunta - parte 2
4.4.2 Layout do dicionário de respostas
O Layout do dicionário de respostas é formado por três campos essenciais a
serem preenchidos para a carga dos dados, outros quatro campos opcionais de idioma e
um opcional de harmonização. Segue abaixo a descrição de cada campo que compõe o
dicionário:

co_pergunta: Contém o valor da variável associada ao texto da pergunta nos
microdados de uma pesquisa. Na Figura 9 pode ser observado na coluna A. Ex:
SEXO.
22

co_resposta: Contém o valor da variável associada ao texto da resposta nos
microdados de uma pesquisa. Na Figura 9 abaixo pode ser observado na coluna
B. Ex: 1.

no_resposta: Contém o valor do texto da resposta de uma pesquisa. Na Figura 9
pode ser observado na coluna C. Ex: Masc.

ing_no_resposta: Contém o valor do texto da resposta de uma pesquisa em
inglês. É opcional. Na Figura 9 pode ser observado na coluna D.

esp_no_resposta: Contém o valor do texto da resposta de uma pesquisa em
espanhol. É opcional. Na Figura 9 pode ser observado na coluna E.

no_harmonizado: Contém o valor do texto da resposta harmonizada de uma
pesquisa. Será usado nas respostas de indicadores com evolução histórica. É
opcional. Na Figura 9 pode ser observado na coluna F.

ing_no_harmonizado: Contém o valor do texto da resposta harmonizada de uma
pesquisa em inglês. É opcional. Na Figura 9 pode ser observado na coluna G.

esp_no_harmonizado: Contém o valor do texto da resposta harmonizada de uma
pesquisa em espanhol. É opcional. Na Figura 9 pode ser observado a coluna H.
Figura 9 - Layout do dicionário de respostas
4.4.3 Layout do dicionário de indicadores
O Layout do dicionário de indicadores é formado por treze campos essenciais
(pesquisas com micro dados) a serem preenchidos para a carga dos dados e outros
campos opcionais de idiomas. Segue abaixo a descrição de cada campo que compõe o
dicionário:

no_pesquisa: Contém o nome da pesquisa padronizado por “TIC” + o nome da
pesquisa em letras maiúsculas. Ex: TIC DOMICÍLIOS. Na Figura 10 pode ser
observado na coluna A.

no_unidade_analise: Contém o nome da unidade de análise associada a pesquisa,
por convenção será também todas as letras em maiúsculo. Ex: USUÁRIOS. No
23
caso de pesquisas que não tenham unidade de análise deverá constar nesse
campo o nome da pesquisa. Observar o exemplo da Figura 10 abaixo na célula
B.

co_pergunta: Contém o valor da variável associada ao texto da pergunta nos
microdados de uma pesquisa. Na Figura 10 abaixo pode ser observado na coluna
C. Ex: b1.

co_indicador: Contém o valor do código do indicador associado a uma pergunta.
Ex: B1. Na Figura 10 abaixo pode ser observado na coluna D.

no_indicador: Contém o nome de um indicador. Ex: Proporção de indivíduos
que já utilizaram um computador. Na Figura 10 abaixo pode ser observado na
coluna E.
Figura 10 - Layout do dicionário de indicadores - parte 1

no_indicador_harmonizado: Contém o nome de um indicador harmonizado ao
longo dos anos. Quando este campo está preenchido, significa que este indicador
deverá ser exibido no gráfico da série histórica do portal. Ex. Proporção de
indivíduos que já utilizaram um computador. No exemplo da coluna F, ele está
em branco, logo não será harmonizado.

tp_indicador: Coluna que identifica o tipo do indicador. Código D – Dicotômico,
DD – Dicotômico Derivado e N – Não dicotômico. Ex: D exibido na coluna G.

co_grupo_indicador: Contém o valor do código do grupo de um indicador. Ex:
B. Na Figura 11 pode ser observado na coluna H.

no_grupo_indicador: Contém o nome do grupo de um indicador. Ex: Uso do
Computador. Na Figura 11 abaixo pode ser observado na coluna I.
24
Figura 11 - Layout do dicionário de indicadores - parte 2

ds_indicador: Contém a descrição do universo dos indivíduos entrevistados no
indicador. Ex: Percentual sobre o total da população. Na Figura 11 pode ser
observado na coluna J.

ds_base_indicador: Contém a descrição da base de dados do indicador. Ex:
Base: 6 271 empresas que declararam utilizar computador, com 10 ou mais
pessoas...”. Na Figura 12 pode ser observado na coluna K.

ds_nota_indicador: Contém a descrição do universo de entrevistados a ser
considerado no indicador. Na Figura 12 pode ser observado na coluna L.

ing_no_indicador: Contém o nome de um indicador em inglês. É opcional. Na
figura abaixo pode ser observado na coluna M.

ing_no_grupo_indicador: Contém o nome do grupo de um indicador em inglês.
É opcional. Na Figura 12 pode ser observado na coluna N.

ing_ds_indicador: Contém a descrição do indicador em inglês. É opcional. Na
Figura 12 pode ser observado na coluna O.
Figura 12 - Layout do dicionário de indicadores - parte 3

ing_ds_base_indicador: Contém a descrição da base de dados do indicador em
inglês. É opcional. Na Figura 13 pode ser observado na coluna P.

ing_ds_nota_indicador: Contém a descrição do universo de entrevistados a ser
considerado no indicado em inglês. É opcional. Na Figura 13 pode ser observado
na coluna Q.

esp_no_indicador: Contém o nome de um indicador em espanhol. É opcional.
Na Figura 13 pode ser observado na coluna R.
25

esp_no_grupo_indicador: Contém o nome do grupo de um indicador em
espanhol. É opcional. Na Figura 13 pode ser observado na coluna S.

esp_ds_indicador: Contém a descrição do indicador em espanhol. É opcional. Na
Figura 13 pode ser observado na coluna T.

esp_ds_base_indicador: Contém a descrição da base de dados do indicador em
espanhol. É opcional. Na Figura 13 pode ser observado na coluna U.

esp_ds_nota_indicador: Contém a descrição do universo de entrevistados a ser
considerado no indicado em espanhol. É opcional. Na Figura 13 pode ser
observado na coluna V.
Figura 13 - Layout do dicionário de indicadores - parte 4

ing_no_unidade_analise: Contém o nome da unidade de análise associada a
pesquisa em inglês. É opcional. Observar o exemplo da Figura 14 na célula W.

esp_no_unidade_analise: Contém o nome da unidade de análise associada a
pesquisa em espanhol. É opcional. Observar o exemplo da Figura 14 na célula
X.

ing_no_pesquisa: Contém o nome da pesquisa em inglês. É opcional. Observar o
exemplo da Figura 14 na célula Y.

esp_no_pesquisa: Contém o nome da pesquisa em espanhol. É opcional.
Observar o exemplo da Figura 14 na célula Z.

ing_no_indicador_harmonizado: Contém a descrição do indicador harmonizado
em inglês. É opcional. Observar o exemplo da Figura 14 na célula AA.
Figura 14 - Layout do dicionário de indicadores - parte 5
26

esp_no_indicador_harmonizado: Contém a descrição do indicador harmonizado
em espanhol. É opcional. Observar o exemplo da Figura 15 na célula AB.

co_peso: Contém o código do peso a ser calculado (somente quando há
microdados). Pode ser observado na coluna AC.

tx_filtro: Contém o texto da expressão do universo que será calculado (somente
quando há microdados). Pode ser observado na coluna AD.
Figura 15 - Layout do dicionário de indicadores - parte 6
27
5 Solução de ETL desenvolvida
O objetivo dessa seção é apresentar as funcionalidades do sistema, os parâmetros
de configurações, ferramentas utilizadas e o funcionamento de cada etapa.
5.1 Funcionalidades
As principais funcionalidades do sistema são:

Carregar os arquivos de microdados de determinadas pesquisas;

Carregar os arquivos de dicionários de perguntas, respostas e indicadores de
determinadas pesquisas;

Carregar apenas os pares de agrupamento x dimensão considerados válidos através da
tabela de erro;

Carregar as pesquisas pré-calculadas e estruturar os dados no mesmo modelo das
pesquisas calculadas;

Apagar o repositório de dados dos microdados de determinadas pesquisas;

Apagar o repositório de dados dos dicionários de determinadas pesquisas;
5.2 Ferramentas utilizadas
Para realizar a solução de ETL foi utilizada a ferramenta Talend Open Studio
versão 5.3.1. A Ferramenta de busca e indexação foi o Apache Solr versão 4.0. Foi
utilizada também a ferramenta OLAP Calandra BI versão 3.0.3.
5.3 Padrões
O padrão adotado de códigos de pesquisa, unidade de análise e idiomas do
projeto CETIC podem ser encontrados na Tabela 11 e na Tabela 10.
Tabela 10 - Padrão de códigos dos idiomas
Código do idioma
Idioma
pt
Português
en
Inglês
es
Espanhol
28
Tabela 11 - Padrão de códigos das pesquisas e unidades de análise
Código da unidade de análise (sem
Código da pesquisa
acento)
TIC_EMP
Empresas
TIC_DOM
Domicilios
TIC_DOM
Usuarios
TIC_EDU
Aluno
TIC_EDU
Coordenador
TIC_EDU
Diretor
TIC_EDU
Escola
TIC_EDU
Professor
5.4 Funcionamento
Foram desenvolvidas estruturas de arquivos XML que configuram o ETL. São
eles: “database.xml” e “email_log.xml”.

“database.xml”: Arquivo que possui as conexões com o banco de dados
MYSQL, endereço de e-mail e senha de autenticação para envio de log,
configurações de FTP e do solr. As configurações são preenchidas conforme o
exemplo da Figura 16:
Figura 16 - Arquivo de configuração "database.xml"
29

“email_log.xml”: Arquivo que possui as configurações de e-mail do destinatário
dos logs de execução do ETL. Será preenchido o “id”, nome do destinatário e
endereço de e-mail conforme Figura 17.
Figura 17 - Arquivo de configuração "email_log.xml"
Após a configuração dos arquivos XML é necessária a criação das tabelas do
banco de dados que serão utilizadas. Para tal foi gerado o script de criação utilizando o
programa Workbench.
5.4.1 Carga dos dados
Para
realizar
a
carga
dos
dados,
devemos
configurar
o
arquivo
“estrutura_generico.xml”. As duas primeiras linhas do código e a última são
obrigatórias para que o XML seja lido corretamente. Os blocos do meio vão se repetir
sempre no padrão ilustrado na Figura 18:
Figura 18 - Arquivo de configuração de carga de dados "estrutura_generico.xml"
5.4.1.1 Exemplo de carga de dados
No primeiro bloco da Figura 19, o arquivo XML está configurado para carregar
a pesquisa de Domicílios, do ano de 2010, unidade de análise de Domicílios e idioma
português. Nas marcações de dicionários e diretórios foram preenchidos o diretório de
entrada, nomes dos arquivos a serem carregados, diretório de saída e arquivo de
proporção. A pesquisa de domicílios do ano de 2010 é considerada como pré-calculada
e por isso a marcação com o nome do arquivo de microdados deverá estar vazia.
30
No segundo bloco da Figura 19, o arquivo XML está configurado para carregar a
pesquisa de Domicílios, do ano de 2011, unidade de análise de Domicílios e idioma
português. Nas marcações de dicionários e diretórios foram preenchidos o diretório de
entrada, nomes dos arquivos a serem carregados, diretório de saída e arquivo de erro.
Na pesquisa de domicílios do ano de 2011 existe o arquivo de microdados e por isso a
marcação <arq_pesquisa> está preenchida com o nome do arquivo.
Figura 19 - Exemplo de configuração de carga de dados
Nas pesquisas com microdados deverá conter um bloco preenchido para cada
pesquisa/ano/unidade_analise/idioma. Somente no caso das pesquisas pré-calculadas
deverá conter um bloco para cada pesquisa/ano/unidade_analise. Logo para fazer uma
carga com todas as pesquisas do ano de 2012, deve-se copiar o bloco com as marcações
de dicionários e diretórios para cada pesquisa/unidade_analise/idioma mantendo o ano
como 2012. Do mesmo modo, para realizar uma carga de uma determinada pesquisa ao
longo dos anos, deve-se ter um bloco por ano/unidade_analise/idioma mantendo o
mesmo código da pesquisa.
5.4.2 Exclusão dos dados
Para
realizar
a
exclusão
dos
“estrutura_generico.xml” da seguinte forma:
31
dados
basta
configurar
o
arquivo
Figura 20 – Arquivo de configuração “estrutura_generico.xml” configurado para excluir dados
Como mostrado na Figura 20, as marcações de diretórios e dicionários deverão
ficar vazias e preencher apenas o código da pesquisa, ano, unidade de análise e idioma a
ser apagado. No caso das pesquisas pré-calculadas, o idioma é desconsiderado tendo em
vista que não existe microdados. Desse modo, para apagar as pesquisas de um
determinado ano basta repetir o bloco com o código da pesquisa/unidade_analise/idioma
mantendo o ano igual para todos.
5.4.2.1 Exemplo de exclusão de dados
O comando de excluir dados pode ser realizado em conjunto com alguma carga,
pois o ETL é executado por bloco de estrutura sequencialmente. No exemplo da Figura
21, serão excluídos os dados da pesquisa de domicílios, ano de 2011, unidade de análise
domicílios e idioma português. No segundo bloco do XML, será realizada a carga dos
dados da mesma pesquisa.
Figura 21 – Exemplo de configuração do XML para exclusão de dados
32
5.5 Processo de ETL
A Figura 22 apresenta em alto nível o comportamento do sistema de ETL. Nas
subseções será mostrada cada etapa com maiores detalhes. Na ferramenta Talend Open
Studio essas etapas são chamadas de “job’s”.
Figura 22 - Fluxograma de funcionamento do ETL
33
5.5.1 ETL – Job Start
O job “Start” é responsável por ler o XML que contém as configurações do
banco de dados, configurações da autenticação de remetente de e-mail e carrega-las
como variáveis de contexto para que possam ser utilizadas no job filho
“job_orquestrador_generico”. Na Figura 23 podemos visualizar o “job Start”.
Figura 23 – Job Start
5.5.2 ETL – Job orquestrador
O “job_orquestrador_generico” foi dividido em sete partes e pode ser
visualizado na Figura 24:
Figura 24 - Job orquestrador_generico
34

A primeira parte é responsável por carregar as configurações do arquivo XML
(diretórios, nome dos arquivos, código da pesquisa, ano, unidade de análise)
identificar se será realizada a opção de apagar alguma base de dados (core de
microdados ou dicionários) e chamar o “job_deleta”;

A segunda parte apenas limpa as tabelas “stage”;

A terceira parte lê o arquivo XML, verifica se deve carregar alguma base de
dados e, se solicitado, chama o “job_carrega_stage”;

A quarta parte do ETL é a chamada DW, onde os dados carregados nas tabelas
stage
são
colocados
em
tabelas
no
banco
MYSQL
arquivo
de
metadados
pelo
“job_carrega_dw_dicionarios”;

A
quinta
parte
gera
“job_gera_arquivo_dicionario”
o
que
será
carregado
no
através
core
do
chamado
“cetic_dicionario”.

Na sexta etapa, são identificadas as pesquias que contém microdados através do
arquivo XML de configuração e é chamado o “job_microdado”.

O “job_orquestrador_generico” contém mais dois blocos isolados que capturam
informações de erros de execução do ETL, estatísticas e os carrega nas tabelas
“tos_log” e “tos_stats”. Na última etapa, é chamado o “job_send_logs”.
5.5.3 ETL – Job deleta
O “job_deleta”, exibido na Figura 25, será chamado quantas vezes forem
necessárias para apagar os core’s que foram configurados no XML. No primeiro bloco,
é apagado o core dos microdados relacionado à pesquisa/ano/unidade_análise/idioma
solicitado. Em seguida, apagam-se os dados relacionados no core de dicionários e
também no dicionário_resposta.
35
Figura 25 - Job Deleta
5.5.4 ETL - Job carrega stage
O “job_carrega_stage”, Figura 26, será executado da mesma forma que o
job_deleta, porém ele carregará as tabelas stage de acordo com as planilhas de
indicadores, perguntas, respostas e erro/proporção. Nessa etapa os arquivos são lidos e
carregados diretamente em tabelas no banco de dados.
Figura 26 - Job carrega stage
36
5.5.5 ETL - Job carrega dw dicionários
O “job_carrega_dw_dicionarios”, Figura 27, será executado uma única vez
independentemente da quantidade de pesquisas que foram carregadas. Nessa rotina são
realizadas as consultas nas tabelas stage e montadas as tabelas com as chaves
identificadoras de acordo com o modelo de dados do negócio.
Figura 27 – Job carrega dw dicionários
37
5.5.6 ETL – Job gera arquivo dicionário
No “job_gera_arquivo_dicionario”, Figura 28, são feitos todos os cruzamentos
de agrupamentos com dimensões e estrutura dos metadados que serão consumidos pelo
web service.
Figura 28 - Job gera arquivo dicionário – parte 1
Já na segunda parte do job, Figura 29, é feita uma comparação com a tabela de
erro/proporção para validar os cruzamentos considerados válidos. Em seguida é
carregado o arquivo “cetic_dicionario” no core de metadados com o mesmo nome do
arquivo. Além deste, o core “cetic_dicionario_resposta” também é carregado para que
seja traduzido para o sistema o texto que define o filtro a ser calculado em cada
indicador.
38
Figura 29 - Job gera arquivo dicionário - parte 2
5.5.7 ETL – Job microdado
O
“job_microdado”,
Figura
30,
é
executado
toda
vez
que
uma
pesquisa/ano/unidade_análise/idioma é solicitada para fazer a carga e tenha o arquivo de
microdados. Nesse job são feitas as manipulações dos microdados para trazer a
descrição no lugar do código da resposta. Na segunda parte do job, Figura 31, o core
solicitado é carregado e é criado o esquema de variáveis para ser importado no Calandra
BI.
Figura 30 - Job microdado – parte 1
39
Figura 31 - Job microdado - parte 2
5.5.8 ETL – Job send logs
O job_send_logs, Figura 32, será executado uma vez para enviar o log por email para o analista indicado no XML “email_log”. Além disso, duas tabelas de log são
alimentadas com os erros e estatísticas: tos_log e tos_stats.
Figura 32 - Job send logs
40
5.5.9 Execução do ETL
Após os arquivos XML’s estarem configurados, as tabelas e procedures do
banco de dados MySQL criadas, o usuário deverá executar o arquivo “start_run.sh” e
automaticamente o “job_start” será iniciado chamando os jobs filhos. O tempo de carga
varia de acordo com a quantidade de pesquisas a serem carregadas. O tempo total para
carregar todas as pesquisas do repositório foi de 7 minutos em ambiente de produção.
5.6 Interface do portal ao usuário final
As Figura 33,Figura 34, Figura 35 e Figura 36 apresentam as possíveis interfaces
ao usuário mostrando os indicadores que se encontram no repositório de dados do
CETIC.br. Essa ferramenta web foi desenvolvida pelo setor de desenvolvimento da
empresa Calandra e consome os dados tratos pelo ETL e armazenados no Solr que é o
repositório final de dados.
Figura 33 - Indicadores da pesquisa de Domicílios 2012
41
Figura 34 - Série histórica Domicílios por computador (2008 - 2012)
Figura 35 - Perfil de usuários com acesso as TIC's
42
Figura 36 – Proporção de Domicílios 2012 que possuem equipamentos TIC
43
6 Conclusão
Este capítulo conclui este trabalho, resumindo o que foi feito ao longo do
mesmo, os resultados obtidos, as possíveis extensões e trabalhos futuros para o projeto.
Relembrando, o primeiro capítulo expôs o objetivo do trabalho visto as necessidades do
cliente. O segundo capítulo apresenta o cliente e o problema prático em si. O terceiro
capítulo descreveu os conceitos usados ao longo projeto assim como as técnicas
utilizadas. O quarto capítulo expõe a modelagem de dados e estruturas de dados
desenvolvidas. No quinto capítulo foi apresentado a solução de ETL e explicado o papel
de cada etapa do desenvolvimento.
6.1 Resultados alcançados
A proposta deste trabalho foi estruturar os dados, fazer a modelagem e
desenvolver o ETL para que os dados sejam devidamente disponibilizados para que o
portal consuma essas informações. Dentro desse escopo, foram alcançados por este
trabalho os seguintes resultados:

O modelo de dados foi modelado corretamente garantindo que as relações entre
as tabelas fossem consistentes;

Foi desenvolvido um ETL que dispõe as regras do negócio cobrindo todos os
tipos e exceções das pesquisas sobre as tecnologias coordenadas pelo CETIC.br;

Com a evolução do protótipo apresentado ao cliente, foi aumentado a
performance do ETL em cerca de 95% quando constatado um baixo
desempenho de dois componentes da ferramenta Talend Open Studio e
desenvolvidos dois componentes que efetuavam a mesma função;

Satisfação do cliente quanto a facilidade de configuração, documentação e
execução do sistema de ETL desenvolvido;

Realização do treinamento para capacitação do cliente para operar o sistema e
conhecer melhor o funcionamento da ferramenta.
44
6.2 Trabalhos futuros e possíveis extensões
O desenvolvimento do ETL atendeu perfeitamente as necessidades e requisitos
do projeto. As possíveis extensões do projeto, que inclusive já foram contratadas pelo
cliente, são:

Substituição das planilhas de dicionários por uma aplicação em que o
preenchimento seja mais ágil e confiável minimizando os erros de digitação que
são frequentes. Com isso o cliente cadastraria as perguntas, respostas e
indicadores nas telas da aplicação e os dados seriam estruturados direto na etapa
de DW;

Efetuar o cálculo do erro dos cruzamentos de agrupamento x dimensão sob
demanda. Atualmente o cálculo do erro é realizado fora do ETL e a partir da
tabela de erro gerada pelo cliente o sistema valida os cruzamentos que devem ser
apresentados. Com o cálculo do erro sendo em tempo real, as possibilidades de
cruzamentos aumentam bastante, dando mais flexibilidade e poder ao usuário
final.
Este trabalho apresentou a solução desenvolvida para modelagem dos dados,
extração, transformação e carga dos dados das pesquisas do Brasil de uso da tecnologia
e informação que são monitoradas pelo CETIC.br.
A divulgação desse projeto foi autorizada previamente pelo cliente.
45
Bibliografia
[1] MACHADO, Felipe Nery Rodrigues, “Tecnologia e Projeto de Data Warehouse:
Uma visão multidimensional”. São Paulo, Brasil, 2008
[2] KIMBALL, Ralf, The Data Warehouse Toolkit: The Complete Guide to
Dimensional Modeling”. USA, 2002.
[3] Portal CETIC.br, http://cetic.br/, Acessado em Julho de 2014.
[4] Documento interno de requisitos da empresa Calandra – Projeto CETIC
[5] ECKERSON, Wayne, WHITE, Colin, “Evaluating ETL and Data Integration
Platforms”. USA, 2003.
[6] FERREIRA, João, MIRANDA, Miguel, ABELHA, Antonio, MACHADO, José,
“O processo ETL em Sistemas Data Warehouse”,
http://inforum.org.pt/INForum2010/papers/sistemas-inteligentes/Paper080.pdf
Acessado em Junho de 2014
[7] RIBEIRO, Lívia, “Um estudo sobre proveniência e complementação de dados no
contexto do processo de ETL”,
http://www.comp.ime.eb.br/techreports/repositorio/2010_01.pdf, Acessado em
Junho de 2014
[8] SANTOS, Valdinei, “Data Warehouse: Análise de ferramentas de ETL”,
http://www.uniedu.sed.sc.gov.br/wp-content/uploads/2013/10/Valdinei-Valmir-dosSantos.pdf Acessado em Julho de 2014
46
Download

Solução de ETL desenvolvida para o cliente