Académique Documents
Professionnel Documents
Culture Documents
Transformao de bases de
dados transacionais em Data
Warehouse
Veremos neste artigo como construir um Data Warehouse para
aplicaes em Business Intelligence partindo de uma base de dados
transacional. Veremos, passo a passo, como fazer o processo de
converso a partir do Delphi.
esta que tcnicas de BI (Business Intelligence) podem ser aplicadas, bem como a
minerao de dados. Este artigo til para quem deseja efetuar a construo de uma
estrutura assim a partir de uma base de dados transacional. Para isso, veremos neste
artigo como desenvolver uma aplicao em Delphi para automatizar esse processo.
histricos de empresas em bases de dados, de forma que estes possam ser utilizados
posteriormente para tomada de decises estratgicas. Para que isso seja possvel, aps o
dados, com o intuito de encontrar conhecimento til nos dados apresentados. A sua
deciso, pois ele possibilita a organizao dos dados de forma a facilitar a integrao com
Dentro deste contexto, existem os sistemas OLTP (Online Trasaction Processing), que se
sistemas transacionais so: possuir um alto grau de detalhe das informaes, ser voltil e
Por outro lado, um data warehouse deve ser estruturado para possibilitar um alto nvel de
agregao das informaes, bem como possibilitar uma viso dos dados integrados
sistema OLTP voltil e rpido para oferecer detalhes minuciosos nos dados, um DW
deve ser projetado para ser estvel e rpido para fornecer agregaes sobre os dados. A
incluir, alterar, excluir e acessar. Por outro lado, em um data warehouse os dados so
desse tipo no podem ser alterados depois de carregados a menos que seja necessrio
Para que a construo de um data warehouse seja possvel necessrio existir pelo
menos uma fonte da qual os dados sero extrados. Normalmente, esses dados so
diversas outras fontes podem ser utilizadas, tais como dados de webservices, documentos
de texto ou planilhas eletrnicas. A Figura 2 apresenta um esquema que mostra esse fato,
centro da figura. Aps a juno dos dados, diversos tipos de acesso podem ser feitos,
Esse tipo de base de dados possui caractersticas distintas de uma base transacional. Por
esse motivo, caso uma empresa deseje trabalhar com essa tecnologia, primeiramente
precisa que sua base transacional, que utiliza normalizao de dados, seja convertida
diversas adaptaes no novo banco, bem como a importao dos dados transacionais
para o novo formato. Baseado nisso, o objetivo do presente artigo DW. Ser construdo
principais processos envolvidos nesta tarefa, bem como a reduo de registros e o pr-
transacional e um DW.
objetivo principal desta base de dados controlar a venda de produtos nas diversas filiais
de uma determinada empresa, existindo para isso nove tabelas. possvel notar que o
controle dos produtos feito por quatro delas, a saber: produtos, produto_categorias,
existentes na loja, sendo representada somente pelo nome e pela categoria do produto. A
categorizao dos produtos dada pelas trs outras tabelas. Para exemplificar, considere
das bebidas alcolicas, que por sua vez est ligado famlia de produtos das bebidas.
A tabela cidades est relacionada com as tabelas de clientes e lojas, que por sua vez
esto ligadas com a tabela de vendas. Como pode ser notado no esquema da base de
dados, cada venda possui um cliente e uma loja na qual a venda foi realizada. Uma venda
apresentando somente os dados que sero utilizados nas anlises. Foram adicionados os
campos cidade e estado diretamente nas tabelas de clientes e lojas. Nessas tabelas,
pode-se notar tambm que os campos nome foram retirados, pois este tipo de informao
cliente no traria muitos benefcios e insights para os gestores, pois talvez no faa muito
sentido agrupar as vendas de todos os clientes com o nome de Maria, por exemplo. J
com relao s lojas, talvez fosse interessante agrupar os totais de vendas pelo nome da
loja, pois assim o gestor poderia tomar decises baseado em cada filial. Neste data
Outra abreviao realizada na base de dados foi a juno das quatro tabelas sobre os
produtos somente em uma, a qual possui a famlia, o departamento e a categoria dos
dos dados invivel. Desta forma, foram utilizadas somente as 47 categorias existentes na
processados; o que facilita tambm o agrupamento dos dados. Com isso, possvel
visualizar os valores totais vendidos em cada grupo, como o total de unidades vendidas na
categoria Cervejas.
seja, as unidades vendidas e o valor vendido. Essa tabela, alm de apresentar as chaves
estrangeiras para clientes, lojas e classe de produtos, armazena os valores totais de cada
pelo dia da semana, ms e quadrimestre. Esses dados podem ser obtidos por meio do
primria e chave estrangeira, por exemplo. Outro ponto a frisar que como sua
dos produtos em uma nica tabela, evitando consultas SQL com juno em quatro
contexto, importante frisar trs conceitos: tabela fato, medidas e dimenses. A tabela
fato onde encontram-se os valores numricos que iro representar algum tipo de
que possibilitam que as medidas sejam visualizadas de forma a possibilitar o gestor tomar
decises e/ou analisar os dados existentes na empresa. Por exemplo, com base na
Figura 4 possvel agrupar os dados pela famlia dos produtos, pelo tipo da loja ou pelo
Existem basicamente dois tipos de modelos dimensionais: estrela (star scheme) e floco de
neve (snow flake). No primeiro, as tabelas que representam as dimenses esto todas
ligadas tabela fato, o que o deixa mais simples e possibilita melhores formas de
navegao nos dados pelas ferramentas OLAP, como o FastCube, por exemplo. Por outro
lado, h um pouco de desperdcio de espao pelo fato das mesmas descries serem
Por outro lado, no modelo floco de neve as tabelas que representam as dimenses podem
no estar ligadas diretamente tabela fato. Por exemplo, na Figura 4 poderia existir a
tabela cidades relacionada com a tabela de clientes e de lojas ao invs deste campo ser
armazenado em formato texto diretamente nessas tabelas. Este modelo mais complexo
uma das dimenses. A Listagem 1 mostra o script para a criao da dimenso clientes, e
conforme abordado na seo anterior, os tipos de dados dos campos cidade e estado so
incompleto, Ensino mdio completo, Ensino superior incompleto, Ensino superior completo
e Ps-graduao completo. Por fim, o campo gnero composto somente pelos valores M
Em geral, em aplicaes comerciais criada uma nova base de dados para arma
zenar o data warehouse. Neste exemplo optou-se por utilizar a mesma base por
questes didticas, e para diferenciar as tabelas est sendo utilizado o prefixo d
w para indicar as tabelas que fazem parte de sua estrutura.
estado seguem a mesma lgica apresentada para a dimenso clientes. A nica diferena
empresa. Similarmente aos campos cidade e estado, o campo tipo tambm do tipo
textual.
A Listagem 3, por sua vez, apresenta o comando SQL para a criao da dimenso
categoria dos produtos, todos textuais. Esse fato foi explanado nas sees anteriores e
do ano (Q1 at Q4). Todos esses campos so alfanumricos, com exceo da chave
primria idtempo que do tipo inteiro e possui a propriedade para auto incremento
(identity). Pode-se notar que as outras dimenses no possuem auto incremento, e isso
se deve ao fato de que nas outras tabelas o valor da chave primria ser importado das
Por fim, a Listagem 5 apresenta o comando SQL para a criao da tabela fato, a qual
que neste modelo as medidas j apresentam os valores totalizados para cada venda. Por
Uma venda pode possuir vrios produtos, porm, na tabela dwvendas_fato exist
e somente um campo idproduto, o qual armazenar somente o primeiro produto
da tabela vendas_produto. Caso o projeto fosse de um data warehouse real, seri
a necessrio um melhor tratamento desta questo.
warehouse, bem como as principais diferenas entre ambos. Neste contexto, o objetivo
das prximas sees mostrar como importar os dados da base transacional e popular as
dimenses e a tabela fato do DW. Esse procedimento ser implementado via cdigo e,
para isso, a prxima etapa a criao de uma aplicao do tipo VCL no Delphi
e para a tabela fato, enquanto que o componente de conexo o responsvel por realizar
a ligao com a base de dados do SQL Server. Por outro lado, os componentes
posteriormente. Esses dois componentes devem ter a sua propriedade Connection setada
deve ter a sua propriedade DriverID configurada para MSSQL. Os outros parmetros que
devem ser preenchidos so o Database com o nome da base de dados (Vendas), o Server
com o valor localhost e a propriedade OSAuthent deve estar com o valor Yes. O SQL
Server possui integrao com a segurana do prprio Windows, e esse parmetro informa
que usurios autenticados no sistema operacional tero acesso base de dados. Caso a
propriedade Login Prompt do TFDConnection deve ser definida como False para que a
janela de login e senha no seja aberta a cada tentativa de conexo. A Figura 6 apresenta
a janela de configurao.
Importando os clientes
O objetivo geral da importao dos dados basicamente: (i) ler os dados da base
transacional, (ii) realizar possveis pr-processamentos e/ou ajustes nos dados e (iii)
procedimento que ser executado ao clicar no boto para importao dos dados dos
(dwclientes). Por outro lado, na linha 7 executada uma consulta que une a tabela de
dados de acordo com as necessidades do data warehouse. Como existem 10.282 clientes
nesta tabela, na linha 8 definida uma estrutura de repetio para percorrer cada um dos
processo necessrio devido ao fato de que existe uma grande variabilidade de rendas
com valores nicos. Por exemplo, caso seja executado o comando SQL select
distinct(renda) from clientes, sero obtidos 9.936 valores de rendas distintas, o que
neste data warehouse esto sendo armazenadas as categorias em formato textual. Por
Importando as lojas
Semelhante importao dos clientes, o procedimento para importar as lojas bastante
siglas. Optou-se por essa representao para demonstrar que em bases de dados
transacionais os campos nem sempre podem estar padronizados, fato que torna
Importando os produtos
A Listagem 8 apresenta o cdigo fonte para realizar a importao dos produtos. Na linha
3 foi declarada uma varivel para armazenar a instruo SQL da consulta na base
transacional. Pode-se observar na linha 5 que a consulta longa, pois a seleo dos
dados para o data warehouse feita com base em todos os produtos existentes na base
categorizao que existe entre os produtos. Isso se deve ao fato de que dependendo da
base de dados, pode existir uma grande variedade de produtos, o que pode tornar as
do produto foi suprimido. Por esse motivo, na linha 10 a chave primria da dimenso
recebe o mesmo valor da chave primria da tabela de produtos. Por meio dessa
importao, posteriormente o analista poder agrupar os dados por essas categorias, por
vendas do modelo transacional. Isso ocorre porque a dimenso tempo formada somente
venda. A Listagem 9 apresenta o cdigo necessrio para realizar essa operao, no qual
possvel observar na linha 4 que utilizada a funo datepart para extrair o dia da
semana e o quadrimestre, e a funo month para extrair o ms. Essas funes retornam
um nmero inteiro que corresponde a cada perodo, por exemplo: considerando o campo
tambm possvel observar que utilizado o comando distinct, que tem a funo de buscar
registros nicos nessa dimenso para 84, conforme pode ser observado caso a consulta
processamento adicional necessrio para que esses valores sejam convertidos para
cdigo fonte por j ter sido mostrado anteriormente e por questes de espao.
vendas_produto do modelo transacional. Para isso, foi definida uma varivel do tipo record
1 type
2 TotalVenda = Record
3 UnidadesVendidas: Integer;
4 ValorTotal: Real;
5 End;
6 type
7 TfrmPrincipal = class(TForm)
...
8 private
9 function GetIdTempo(ADiaSemana, AMes, AQuadrimestre: Integer): Integer;
10 function GetIdProdutoClasse(AIdVenda: Integer): Integer;
11 function GetTotalVenda(AIdVenda: Integer): TotalVenda;
12 public
13 end;
Para gerar a implementao das funes, deve-se pressionar ao mesmo tempo as teclas
Listagem 11 apresenta o cdigo das funes para buscar a classe do produto e os dados
criada uma query em tempo de execuo, que executa o comando SQL definido na linha
anteriormente, no projeto deste data warehouse possvel ligar uma venda somente a um
produto, e por esse motivo na linha 6 utilizado o comando top 1 para retornar o primeiro
por meio da consulta definida na linha 19, que filtra os registros com base nos parmetros
como explanado anteriormente, a tabela fato armazena somente os totais das unidades
isso, a funo recebe como parmetro o idvenda e retorna uma varivel do tipo record
TotalVenda que foi declarado na Listagem 10. O record possui dois campos: um para
representar as unidades e outro para representar o valor total, e seu objetivo facilitar o
retorno da funo. O comando SQL da linha 8 faz a soma das unidades vendidas, bem
como realiza a multiplicao do valor vendido pelas unidades para obter o valor total. Nas
funo.
definido o comando SQL que faz a busca na tabela de vendas da base transacional,
enquanto que na linha 8 definido o comando para insero dos dados. O processo
bastante similar s outras importaes realizadas, com exceo das linhas 13 a 17, que
condicional foi feita para verificar se existe alguma venda sem produtos cadastrados, e,
nesta situao, o parmetro da classe do produto setado para nulo. Neste exemplo
esto sendo carregados para o data warehouse todas as vendas, independente de terem
produtos associados. Na base de dados de exemplo, existem mais de 100 vendas nesta
esses dados teriam que ser avaliados pelo analista, e possivelmente ajustados ou
A importao de dados de uma base transacional para um data warehouse pode ser uma
essa operao. Somente devem ser carregados no DW dados consistentes e que possam
representar algum tipo de informao til, portanto, em bases comerciais deve-se tomar
um maior cuidado antes de transferir os dados. Neste contexto, diversas outras formas de
Referncias
131, 2015.
Compartilhe:
Ficou com alguma dvida?
Renato Oliveira
Parabns! Excelente artigo.
h +1 ms
Ol, Renato
Que bom que gostou ficamos felizes.
Qualquer dvida estamos a disposio.
Abraos.
h +1 ms
Adicionar um comentrio...
Estevao Dias
Muito bom Pessoal,
Parabns!
h +1 ms
Douglas
Opa Estevo,
Um abrao. :)
h +1 ms
Adicionar um comentrio...
Fernando Gaspar
muito bom, parabns!
h +1 ms
h +1 ms
Adicionar um comentrio...
Mais posts
Microartigo
Microartigo
Artigo
Artigo