-
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 de 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?
-
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 são fundamentais
para que você não esqueça
-
como o seu modelo
foi organizado.
-
Então, 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 "outrigger".
-
Toda vez que você incrementa
uma dimensão, uma granulometria,
-
você está criando uma tabela
denominada "outrigger".
-
Por exemplo, quando
você tem datas
-
e aí você organiza essas datas
de forma anual, ou diária,
-
ou semestral,
-
cada uma dessas formas são
classificadas como "outriggers".
-
Não vai interferir em nada, mas
é um conceito interessante
-
para você tê-las
já reservadas
-
para quando você
criar a sua modelagem
-
específica para aquele
departamento,
-
você já ter essa tabela
dimensional separada
-
e pronta 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 esse ID.
-
Esse ID é sempre puxado
pela surrogate key.
-
Então esse conceito de "playing"
é muito interessante
-
porque você já vai construindo
tabelas dimensionais
-
que vão servir para o apoio
de diversas modelagens.
-
E isso facilita muito o seu trabalho
à 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,
-
à 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,
-
eu vou ter o semestre,
o bimestre, o dia.
-
E aí, em vez de eu puxar
a informação semestral
-
que não vai ser importante,
eu pulo 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.