Modelo Dimensional de Dados Aqui nós precisamos mencionar o autor Ralph Kimball, que difundiu esta técnica de modelagem para data warehouses baseados em banco de dados relacionais. O modelo dimensional de dados também é conhecido como modelo estrela, star esquema e também como dimensional normal form, DNS. E nós vamos perceber que essa técnica de modelagem faz um amplo uso da desnormalização. Interessante aqui a gente já perceber que em banco de dados relacionais, na hora que nós fizermos um modelo dimensional de dados, que é uma organização dos acontecimentos de negócio, das ocorrências, dos eventos, isto é, dos fatos de negócio, pelas suas dimensões. Então, quando aconteceu determinado fato de venda, então data da venda, quando aconteceu um retorno, um estorno de pagamento, então data do estorno, data do retorno, data da devolução, quem fez isso, qual é o cliente, qual é o fornecedor? Qual é o produto? Então, todos esses elementos que explicam, que caracterizam essa ocorrência, ou seja, este fato, são as dimensões. E organizar os dados em dimensões e fatos, torna este dado novamente próximo ao raciocínio humano, ou seja, uma pessoa de área de negócios está muito habituada a falar de vendas, a falar de clientes, a falar de entregas, pelas suas respectivas dimensões. Então, quando a gente faz essa modelagem, nós voltamos a aproximar a informação que antes estava distante na terceira forma normal para uma forma mais humanizada. E como a tecnologia de persistência do banco de dados relacional nos obriga a colocar essa informação em tabelas com respectivos relacionamentos, nós vamos estabelecer que a tabela dimensão vai ter um relacionamento de 1 para muitos com a tabela fato e não vai acontecer relacionamento direto entre as dimensões. Este relacionamento de uma dimensão com a outra sempre vai acontecer por meio de uma tabela fato. Então, já ante esses pontos de qualidade do seu modelo estrela, se você tiver uma dimensão com relacionamento em relação ao fato diferente de um para muitos, está equivocado. Então, dimensão é um para muitos fatos. Além disso, essa organização entre fato e dimensões, geralmente nos softwares de modelagem de dados, faz com que este modelo se pareça com uma estrela. Então, daí o no modelo estrela, nos permite ter uma sensação de cubo, cubo de informações que nós vamos ter N dimensões para a gente fazer aquele movimento do slice and dice. Então, geralmente, quando nós estamos na nossa ferramenta de visualização de dados, arrastando as caixinhas e as métricas que nós estamos compondo a nossa análise, é esse movimento, slice and dice. Então, isso é o cubo. Nesse exemplo aqui, a gente tem do lado esquerdo as categorias de produto, compondo uma das arestas desse cubo. Do outro lado, nós temos o tempo, fazendo a outra dimensão, a outra aresta do cubo. E também nós temos aqui as métricas. Quantidade de vendas, custo de vendas, valor vendido. Então tudo isso são os fundamentos, os conceitos fundamentais do modelo dimensional de dados. Aqui um outro exemplo para a gente ver como é que isso fica nas diferentes ferramentas de modelagem de dados Então ao centro nós temos aqui uma tabela fato de vendas Então vendas de internet, sendo explicada pelas dimensões produto, cliente, data desta venda. Aqui também nós vamos observar que existem pelo menos ali três possíveis relacionamentos em relação ao tempo. A dimensão tempo tem essa característica de desempenhar diferentes papéis. Então nós temos o tempo da ordem, o tempo da venda, a data em que a venda aconteceu. O due date aqui é a data de entrega, quando que essa venda precisa ser entregue e o Shift Date é a data de envio. Então, a dimensão tempo é uma única dimensão, porém, que tem esses diferentes papéis nos eventos de negócio. Além disso, aqui a gente tem essa venda sendo explicada por promoção, sendo organizada pelo território de vendas e também sendo realizada em determinada moeda. Então percebam que uma breve navegação desse modelo a gente já aproximou para conceitos de negócio. Técnica para modelagem de dados. Técnica para modelagem de dados A pessoa modeladora de dados, quando precisar fazer uma modelagem dimensional Precisa tomar quatro decisões A primeira decisão é selecionar o processo de negócio A gente comentou agora sobre um modelo de vendas Então ali estou falando de vendas. Então, ali estou falando de vendas pela internet. Poderia ser aquisição de cliente, poderia ser retornos, poderiam ser pedidos de garantia, pedidos de seguro. Então, a primeira decisão é qual é o processo de negócio que estamos modelando. Segundo, nós vamos definir ou declarar o grão desta análise. Aqui pode soar um pouco estranho para quem não está habituado, mas declarar o grão significa compreender o que cada registro significa, o que cada linha na nossa tabela está representando. Como a gente viu no modelo anterior, estávamos falando de vendas pela internet e aquela venda acontece em determinado tempo, de um determinado produto, de um determinado território realizado para um determinado cliente. Então, essa compreensão dessa granularidade, daí a palavra GRAM, é o que vai nos permitir fazer o nosso modelo dimensional. Depois disso, finalmente identificamos as dimensões, ou seja, pelo que estamos analisando. É pelo tempo, é pelo cliente, pelo fornecedor, pelo produto, pelo parceiro, pelo entregador. E finalmente chegamos aos fatos, que são as medições daquele processo de negócio. Vendas realizadas, quantidade vendida, então todas aquelas métricas estão relacionadas, estão atreladas aqui aos fatos dessa ocorrência. Ao tomar essas quatro decisões, os nossos modelos de dados vão ficar com essa aparência. Então, aqui ao centro, nós temos uma tabela fato. A fato item de venda. Então, aqui nós já podemos observar, inclusive, o grão. O grão dessa venda é o item pela data da venda, pela hora da venda, a loja vendida, a loja que vendeu, o produto vendido, o vendedor, a transação daquela venda e o item especificamente com as suas expectativas métricas, quantidade, preço de venda, custo, frete, tributo, margem de lucro, valor daquele lucro. Aqui a gente pode relacionar com um modelo que nós antecipadamente iniciamos aqui a análise, que foi a North Wind. Você se lembra que lá nós vimos a tabela de pedido e a tabela item de pedido, ou detalhe do pedido? Então, aqui nós temos a mesma coisa, a mesma informação, porém modelada de maneira dimensional. Então, aqui à esquerda, nós vamos ver a data de vendas. Então, aqui nós temos um conceito interessante que é o SK, é uma chave artificial que existe aqui no sistema de BI, então a Surrogate Key é uma chave artificial. Essa chave é um sequencial numérico e vai representar, no caso aqui da nossa venda, vai ter todos os atributos. Então eu tenho o dia, o mês da venda e eu também vou trazer o ID original. Então o SK é a chave primária para o BI e o ID é o ID do meu sistema de origem. Então essa venda veio do RP. Então aquele ID ali vem lá do meu RP. E eu vou fazer, vou montar a minha tabela de dimensão com todos os atributos que eu conheço e que eu tenho disponíveis nos sistemas de origem. Então, aqui tem até uma anedota. Uma vez o Ralph King escreveu, ou comentou, que o número ideal de atributos de uma dimensão é 78. Ou seja, se a sua tabela de dimensão ficar com bastante atributo, você está indo num caminho certo de modelagem. Observe aqui comigo ainda, falando de vendas, a data de vendas. Eu tenho na dimensão venda o dia desta venda, o mês, o trimestre, o ano, o trimestre fiscal e o ano fiscal desta venda. O trimestre fiscal e o ano fiscal dessa venda. Tudo aqui eu estou relacionando pela SK, data de venda, no item, fato item venda, pela mesma surrogate aqui, pela mesma SK. Vamos observar também que a hora dessa venda é numa dimensão separada. Então, imagina você ter 10 anos de venda multiplicados por 3.600 minutos no dia. Isso seria uma tabela muito grande nessa dimensão. Então, hora é modelada em uma tabela separada da data. Então, aqui nós vamos ter, se for no minuto, 3.600 minutos em um dia. Se for por hora, 24 linhas, 24 horas sendo modeladas. Aqui, inclusive, eu adicionei nesse modelo o período. Eu posso classificar minha hora como manhã, tarde, noite e madrugada, por exemplo. Então, esse tipo de atributo que ajuda a análise, você vai colocar na sua dimensão. Vamos observar também loja, a dimensão loja. Além de ter a unidade que realizou a venda deste item, perceba que aqui eu uni a unidade com o endereço desta loja, porque certamente uma unidade de análise vai ser saber qual foi a cidade que vendeu, qual foi o bairro, qual foi o país daquela venda. Então a gente vai unir isso aqui na dimensão loja. Do lado direito, nós temos a dimensão produto. Aí aqui você vai se lembrar que lá no nosso sistema Northwind, que está em terceira forma normal, nós temos a dimensão produto e a dimensão categoria de produto. Observe que aqui eu unifiquei. Eu trouxe quatro entidades na mesma dimensão. Então, fabricante do produto, Product Vendor, que nós vimos naquele modelo transacional, categoria do produto, subcategoria de produto e produto, efetivamente. Então, aqui a gente une, numa única dimensão, quatro tabelas ou quatro entidades que estavam modeladas lá na terceira forma normal. Mesma coisa acontece para a dimensão vendedoror e aqui eu tenho uma dimensão interessante, aqui uma dimensão do tipo degenerada, que quando a gente tem um atributo único, geralmente transação, transação só tem um ID, o código daquela transação, aquela passada de cartão e aqui a gente pode simplesmente fazer uma dimensão curtinha como essa dimensão transação venda, e criar explicitamente. Ou, se você não criar essa dimensão, mas deixar isso somente lá na fato item venda, você acabou de criar uma dimensão degenerada. Então, geralmente a dimensão transação tem essa característica no contexto de vendas. Vamos aproximar um pouco mais na dimensão loja. Eu comentei que eu juntei com endereço. Então, eu tenho ali o país, unidade federativa, cidade, bairro e as características daquela loja, o nome da loja, a quantidade em metros quadrados. A mesma coisa aqui, a dimensão vendas, então dia, mês, trimestre, ano, trimestre fiscal, ano fiscal e vendas. Então aqui o destaque vai sempre para o relacionamento 1 para muitos, então dimensão loja, uma loja tem muitos fatos de item de venda relacionado pela loja SK, surrogate key, chave artificial. Mesmo raciocínio, uma data para muitas vendas, relacionando a minha dimensão pelo atributo data vendas SK, surrogate key, sequencial numérico, inteiro, relacionado com o fato item venda. E a mesma coisa com dimensão hora, fato de item venda. E a mesma coisa com dimensão hora. Hora da nossa venda. Agora aqui, a gente vai ter uma visão completa da família de dimensão. Então, olha só. Eu mostrei para você antes somente a dimensão loja. Se eu fizer uma análise baseada em bairro, eu vou utilizar a dimensão bairro, que contém também a cidade, o estado e o país. Se eu fizer uma análise por cidade, eu uso a dimensão cidade, que vai ter os dados também da cidade, do estado e do país, se não somente por estado, o F, ou então somente por país. Você vai ter todas essas dimensões à sua disposição para a sua análise. E conforme você vai mudando isso, você está mudando a granularidade, mudando o grão também, porque uma venda pode ser por loja, pode ser por bairro, pode ser por cidade, então você tem essa possibilidade. Isso é o drill up e drill down que o seu modelo dimensional permite fazer. E aqui também, dando uma aproximação na parte do produto, então nós temos o produto, uma análise por produto, eu consigo em uma única junção ver o fabricante, a categoria e subcategoria, além do próprio produto que foi vendido, mas eu posso ter análises que serão por subcategoria, ou pela categoria, ou pelo fabricante. Então, isso aqui vai ter no seu modelo dimensional, serão dimensões separadas e você vai usar conforme a análise de negócios que você está conduzindo.