-
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.
-
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 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 dia.
-
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
que faz a transformação
-
e demonstra
a idade na resposta de negócios.
-
Só que essa idade
ela 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 é um 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 dimensional
-
e a gente entender mais quatro informações
importantes,
-
A primeira delas é a junk
dimensional de lixo, 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.