-
Modelagem dimensional: as melhores
práticas e as regras de ouro
-
para que a gente construa
uma arquitetura precisa e funcional.
-
A gente, agora, vai se atentar
a alguns fundamentos técnicos
-
para que a sua modelagem seja
funcional e seja sustentável,
-
para que, à medida que a sua
empresa vá crescendo,
-
conforme os dados
vão crescendo junto,
-
eles consigam continuar
se correlacionando entre si.
-
Então, vamos para a tela
e eu vou mostrar para vocês
-
quais são essas regras de ouro
-
e como a gente deve construir
do zero uma modelagem dimensional.
-
Então, olha só, lembra que temos
aqui a Fato no coração
-
e as dimensões, que são
as tabelas complementares.
-
Fundamental relembrarmos
que toda a modelagem dimensional
-
é baseada na linguagem
não estruturada,
-
então o que a gente entendeu
no formato de tabela,
-
a gente pode escrever
de uma forma não estruturada.
-
Então, olha só que importante:
-
nossa tabela Fato sempre vai
receber a palavra "fato" na frente
-
para identificar
que ela é uma Fato.
-
Em todas as colunas
dela vai estar escrito,
-
vão estar identificadas
como "sk"
-
Todas as dimensões vão
receber esta seta indicativa
-
mostrando que, aqui, nós
temos as chaves primárias
-
representadas às vezes
por aquele pé de galinha,
-
às vezes por esse condensado.
-
E a nossa tabela dimensional
vai receber essa seta
-
e, aqui, o que era chave primária
vira chave estrangeira.
-
Então olha só, em uma
modelagem fato-dimensão,
-
a gente tem as chaves primárias
e as chaves estrangeiras,
-
sendo correlacionadas entre si.
-
Outro detalhe fundamental:
"sk" vai indicar
-
que a gente tem
uma "surrogate key".
-
O que é isso?
-
É uma chave
que vai demonstrar
-
que todas as informações
importantes e fundamentais
-
que estão aqui
na nossa tabela Fato
-
também estão na nossa
tabela Dimensão.
-
Então, note que todas
as nossas tabelas Dimensão
-
vão receber a mesma
identificação, por quê?
-
Porque conforme eu vou
construindo a minha Fato,
-
eu vou puxar essa informação
e vou completar essa informação
-
aqui na minha tabela Fato.
-
Então, eu vou ter sempre
uma linha que vai se conectar
-
da Fato para a Dimensão e, aí, eu
consigo fazer as famosas joins,
-
eu consigo juntar
uma informação na outra
-
para formar o desenho estatístico
dessa minha correlação.
-
Então, "surrogate key" significa
a chave mais forte da sua tabela,
-
aquela chave que vai se repetir
tanto na tabela Fato
-
quanto na tabela Dimensão.
-
É através dessa chave que a gente
consegue linkar as informações
-
e essas informações
serem replicadas
-
em qualquer funcionamento
estatístico
-
que você queira atribuir para a sua
modelagem dimensional.
-
Além disso, existe também
a chave natural, ou "natural key",
-
como a gente gosta de falar.
-
Então, vamos entender
onde ela entra.
-
Natural key é fundamental
para a auditoria dos dados,
-
são aqueles dados que são
exclusivos de uma entidade,
-
e elas vão servir para
a rastreabilidade do meu item.
-
Por exemplo, quando a gente
tem, no cliente, o CPF dele,
-
com certeza esse dado sempre
vai ser exclusivo desse cliente.
-
Por isso, essa "sk" do cliente vai
estar vinculada a uma natural key
-
para que esse dado seja rastreável
ao longo de todo o processo.
-
Então, vamos imaginar
que esse cliente
-
seja replicado em outras
modelagens dimensionais.
-
Eu vou ter a certeza que ele
continua sendo o mesmo cliente
-
por causa da identificação
natural key, ou "nk".
-
Além dos conceitos
de surrogate key e natural key,
-
a gente também pode se aprofundar
no conceito de "smart key".
-
E como o próprio nome já diz,
é uma chave inteligente,
-
porque ela vai ter
duas funções:
-
a primeira função é de ser
uma surrogate key, ou seja,
-
ser uma chave forte
-
que vai vincular e linkar todas
as entidades nas minhas tabelas,
-
mas ela também vai servir
-
para ordenar e organizar
as minhas informações.
-
Normalmente, isso acontece
com informações de data
-
e com informações geográficas.
-
Então, vamos ver aqui
na nossa tabela esse exemplo:
-
olha só, a smart key normalmente vai
ser representada por essa setinha,
-
por esse triângulo
para cima ou para baixo,
-
indicando já que essa tabela,
além de ter uma surrogate key,
-
também pode ser ordenada
em um formato crescente
-
ou decrescente.
-
Se eu utilizasse, por exemplo,
para clientes,
-
eu poderia indicar que eu estou
escrevendo os meus clientes
-
em forma alfabética
ou em forma geográfica,
-
eu poderia demonstrar que eu estou
dividindo esses meus clientes
-
por estado, por cidades,
-
enfim, são informações inteligentes
que vão estar associadas
-
e que, além de mostrar
qual é a informação,
-
vai conseguir organizar
melhor a minha tabela.
-
Além de todas essas
chaves fundamentais,
-
existe também uma chave que a gente
chama de "degenerada", por quê?
-
Porque são informações importantes
para cada departamento,
-
mas que não servem
para fazer uma métrica,
-
uma modelagem
estatística disso.
-
Só que elas precisam estar
contidas na nossa tabela,
-
e aí, a gente identifica isso
como "dd", "degenerate key".
-
Então, olha aqui,
por exemplo,
-
eu tenho a minha tabela Fato
e a minha tabela Dimensão.
-
Dentro da minha
dimensão "produto",
-
eu vou ter a descrição
do que é esse produto.
-
Vamos supor, se eu
tenho uma camisa,
-
eu direi: "Ah, é uma camisa
verde, do tamanho G,
-
feita do material poliéster" etc.
-
Então, é uma informação que eu
não vou criar estatística sobre,
-
mas que é importante estar
contida aqui na minha tabela,
-
nas minhas informações
complementares.
-
E aí, a gente identifica
isso, ou classifica isso,
-
como "degenerate key".
-
E a gente pode também, para
incrementar e complementar,
-
colocar o sufixo "dd".
-
Mas, como é uma informação
que a gente não vai utilizar
-
nas nossas estatísticas,
-
então estar identificado ou não,
não faz tanta diferença assim.
-
Outra regra de ouro para que a gente
construa de forma saudável
-
a nossa modelagem dimensional
é se atentar no conceito do "5W3H".
-
E o que isso significa?
-
É a tradução para "por que,
quando, onde, para quem,
-
quantos, qual a quantidade".
-
Todas essas informações
são interessantes
-
para que você se direcione
-
na construção
de respostas de negócios.
-
Então, no que você
deve se atentar?
-
De que as suas tabelas
Fato e Dimensão
-
têm que conter
essas respostas.
-
Então, não necessariamente
você tem que ter sempre
-
todas essas informações,
-
mas quanto mais dessas informações
você tiver na sua tabela, melhor.
-
Um outro conceito fundamental
é o conceito de granulometria.
-
Vem exatamente da palavra "grãos",
o tamanho desses grãos.
-
Então, quanto maior
esse dimensionamento,
-
menor a minha granulometria.
-
Por exemplo, se a gente
medir datas:
-
datas, eu posso medir por ano,
por semestre, por bimestre, por dias.
-
Então, quanto mais refinada for,
maior é a minha granulometria.
-
Pode ser que,
para o seu negócio,
-
esse diferente grão não
faça tanta diferença,
-
mas para uma outra
pergunta de negócio,
-
essa diferenciação
seja importante.
-
Então, por exemplo,
se eu quero identificar
-
qual é o melhor dia para eu
lançar uma promoção,
-
eu preciso ter a minha
data bem granular.
-
Se eu quero saber qual é o melhor
mês, eu não preciso do dia,
-
eu preciso das minhas
informações agrupadas em mês.
-
Por isso esse conceito
de granulometria,
-
eu posso ter uma dimensão
-
com uma granulometria
bastante aguçada,
-
mas, para cada
modelagem dimensional,
-
eu vou puxar
uma granulometria diferente.
-
Pode ser que, no seu negócio, essa
diferença não seja significativa.
-
Por exemplo, se você quiser lançar
uma promoção para aquele mês,
-
o seu grão tem que ser
agrupado por mês.
-
Agora, você quer saber o melhor dia
para você lançar uma promoção,
-
o seu grão tem que ser
agrupado por dia.
-
Então, vai de acordo
com a pergunta de negócio.
-
O importante é que você
tenha uma tabela dimensional
-
com todas as datas definidas
e, para cada modelagem,
-
você vai agrupando de acordo
com a sua pergunta de negócio.
-
Outro conceito fundamental é você
entender quais são as dimensões
-
que se alteram lentamente
ou rapidamente.
-
Então, por exemplo, quando
a gente tem data de nascimento,
-
na verdade, o que é sua
pergunta de negócio se refere
-
é sempre a idade.
-
Então, a gente pega
a data de nascimento,
-
faz a transformação e demonstra
a idade na resposta de negócios.
-
Só que essa idade vai
se alterar ano a ano,
-
então é uma dimensão
que se altera lentamente.
-
Um outro exemplo disso é,
por exemplo, o seu endereço.
-
Você não se muda todo dia,
-
então esse endereço
também é uma dimensão
-
que se altera lentamente.
-
Um exemplo de dimensão que
se altera rapidamente é a venda.
-
De uma venda para outra,
alterou o produto,
-
então é uma dimensão
que a gente tem que se atentar,
-
porque, a cada linha, ela
vai ter uma interação
-
e uma alteração
bastante significativa.
-
E, agora, para a gente fechar
os nossos conceitos fundamentais
-
para montar uma boa arquitetura
de dados dimensionais,
-
é a gente entender mais quatro
informações importantes.
-
A primeira delas é
a "junk dimension".
-
"Junk", "lixo",
o que significa?
-
São informações
que você precisa ter,
-
mas são informações
estruturais do seu modelo,
-
são informações
que muito raramente
-
o departamento
de analytics vai utilizar.
-
Só que é fundamental para que você não
esqueça como seu modelo foi organizado.
-
Então você além de criar a sua modelagem
tradicional,
-
você vai criar uma outra tabela
para indicar todas essas estruturas
-
e vai ser como um guia,
como um dicionário para sua modelagem.
-
Outro conceito é o conceito de Al Tigre.
-
Toda vez que você incrementa
-
uma dimensão, uma granulometria,
-
você está criando uma tabela denominada
-
como o tigre, por exemplo,
quando você tem datas
-
e aí você organiza essas datas
de forma anual ou diária, ou semestral,
-
Cada uma dessas formas
ela é classificada como al Tigres.
-
Não vai interferir em nada,
mas é um conceito interessante
-
para você ter elas já reservado
para quando você criar a sua modelagem
-
específica para aquele departamento,
você já tem essa tabela dimensional
-
separada
e pronto para montar naquela modelagem.
-
Outro conceito fundamental
é o conceito de role playing.
-
Normalmente a gente
não sai comentando sobre isso,
-
só que ele é um conceito
que vai te ajudar na estrutura.
-
São tabelas que vão servir para diversos
modelos dimensionais que você cria.
-
Então,
quando você tem uma base de endereços
-
e você vincula essa
base de endereços a um ID,
-
o que você vai fazer?
-
Essa base de endereços
vai servir para diversos modelos
-
e em cada modelo
você vai puxar apenas e de.
-
Esse é dia
sempre puxado pela sua corrente que.
-
Então esse conceito de playing
é muito interessante
-
porque você já vai
construindo tabelas dimensionais
-
que vai servir para o apoio
de diversas modelagens.
-
Isso facilita muito o seu trabalho.
-
A medida que você estiver criando
novas modelagens para o seu negócio.
-
E para finalizar, o conceito de bridge
table, ou seja, tabela ponte.
-
O que é isso?
-
Novamente,
naquele formato de granulometria,
-
a medida que eu
tenho que utilizar informações de tabelas
-
diferentes, de agrupamentos diferentes,
eu chamo isso de ponte.
-
Por quê?
-
Porque dentro da minha tabela ano
-
eu vou ter o ano,
vou ter o semestre, bimestre o dia.
-
E aí ao invés de eu puxar a informação
semestral que não vai ser importante,
-
eu pingo essa informação
e pego somente a informação diária
-
para construir o meu modelo.
-
Agora você está pronto para construir
modelagens dimensionais
-
de forma saudável, assertiva
e que vai perdurar ao longo do tempo.