Modelagem Multidimensional

Sandro Rogério
6 min readSep 12, 2022

--

Finalizando a sessão nostalgia, esse artigo publicado originalmente em 2012, veio na sequência do artigo Visão geral de um Data Warehouse e seus componentes.

E mesmo tendo se passado mais de 10 anos, muito conteúdo continua relevante por abordar, principalmente, conceitos e fundamentos.

Se quiser saber o que estou estudando, experimentando ou escrevendo, visite o meu Diário de Bordo e veja as novidades.

Cubo de Dados

Um DW tem como principal objetivo servir de repositório para a análise de grandes massas de dados através de consultas OLAP , neste cenário observa-se dados centrais (os fatos ou métricas) que serão consultados sob diversas perspectivas (as dimensões ou parâmetros) criando a abstração do cubo de dados, conforme figura abaixo:

Fonte: http://www.devmedia.com.br/parceiros/fig02.jpg

Modelo Estrela || Floco de Neve

Conceitualmente, uma base de dados multidimensional é representada pelo cubo de dados; mas partindo para o modelo lógico e físico, a forma mais simples de representar uma base de dados multidimensional é a figura abaixo:

Fonte: http://www.ime.usp.br/~jef/apostila.pdf

Essencialmente teremos no centro do modelo a “tabela fato” contendo de 0 (zero) a n (várias) métricas, e nas bordas teremos pelo menos 1 (uma) “tabela dimensão”, podendo ter quantas mais forem necessárias.

Durante o processo de modelagem da base de dados multidimensional, os itens abaixo devem ser analisados cuidadosamente:

  • Escopo;
  • Granularidade;
  • Dimensões e;
  • Métricas.

Escopo

A experiência e o conhecimento do analista de SAD ou analista de BI (como são conhecidos atualmente) sobre o negócio é fundamental para a correta definição do escopo de um projeto de DW.

É imprescindível ter uma visão do que é importante para o negócio, ou melhor, saber qual informação será necessária extrair dos dados armazenados no DW, para que a organização obtenha algum conhecimento novo e a partir deste ponto os gestores possam tomar as decisões mais acertadas.

Fonte.: http://revistas.utfpr.edu.br/pb/index.php/CAP/article/download/933/544

Vale lembrar que cada projeto é único e portanto deve ser analisado individualmente, e que muitas variáveis influenciam as decisões, por exemplo: tempo para implantação, custo, capital humano e recursos tecnológicos disponíveis, etc.

Esses dentre outros fatores influenciarão na escolha de um dos dois paradigmas que envolvem os projetos de DW, que são as propostas de Inmon e Kimball .

Inmon propõe que o projeto do DW deve partir do DW corporativo para depois desmembrar nos DM departamentais com isto ganha-se na consistência dos dados armazenados mas o tempo para a obtenção de resultados práticos aumenta.

Em contrapartida, Kimball propõe o caminho inverso: partir de DM departamentais para o DW corporativo, buscando observar a consistência das informações. Neste processo, os resultados aparecem mais rapidamente, porém o risco de inconsistência aumenta.

O bom senso entre as pessoas envolvidas sempre deve ser levado em conta no momento da decisão do projeto, para se buscar um equilíbrio entre o melhor dos dois mundos.

Granularidade

Durante o desenho da solução, o analista de SAD define quais métricas serão armazenadas nas tabelas fatos e quais parâmetros serão armazenados nas tabelas dimensões. Observe a figura abaixo.

Fonte: http://hub05.neogrid.com.br/Docs/help/pt_BR/release_notes.htm

A definição correta da granularidade de uma tabela fato implica no desempenho das consultas OLAP , tomando como base o modelo proposto. Imagine os seguintes cenários:

  • Poucas lojas e pouca abrangência (poucos CEP´s);
  • Muitas lojas e pouca abrangência (poucos CEP´s);
  • Poucas lojas e abrangência nacional;
  • Muitas lojas e abrangência nacional.

É de se concordar que o volume de dados armazenados na tabela fato na última situação poderá chegar a bilhões de registros, podendo impactar no desempenho das consultas que não necessitem de um detalhamento maior.

Nestes casos uma alternativa é quebrar a tabela fato em domínios menores, onde além de uma tabela com o nível máximo de detalhes, existiriam outras tabelas sumarizadas por cidade ou estado, por exemplo.

No geral, para granularidades distintas teremos tabelas fatos distintas.

Dimensões

Vamos falar um pouco sobre a tabela “dimensão”, um item importante na modelagem multidimensional e que tem algumas características próprias que devemos observar:

  • Projete a tabela dimensão na perspectivas do usuário. Utilize textos descritivos e códigos que sejam de fácil entendimento do usuário final, não tente economizar alguns bytes neste quesito;
  • Evite utilizar técnicas de normalização dos dados. Esta técnica aumenta a complexidade das consultas, impactando no desempenho, além de não compensar a economia de espaço obtida;
  • Utilize uma chave primária genérica e simples. Este procedimento evita problemas de atualização que surgem aos utilizar, por exemplo, o próprio código do cliente ou produto como chave primária, além de proporcionar um melhor desempenho na utilização dos índices;
  • Utilize múltiplas colunas de atributos. Com isto ficará mais fácil identificar a chave em questão.

Abaixo alguns exemplos de atributos que podem ser utilizados para ajudar a detalhar uma chave, facilitando na definição dos parâmetros da consulta OLAP.

  • Atributos estruturais para relacionamentos pai-filho.
Fonte: HARRISON, Thomas H. Intranet Data Warehouse. São Paulo, Berkeley, 1998. 362 p.
  • Atributos para definição de nível
Fonte: HARRISON, Thomas H. Intranet Data Warehouse. São Paulo, Berkeley, 1998. 362 p.
  • Atributos tipo “flag” de resolução e/ou de seqüência
Fonte: HARRISON, Thomas H. Intranet Data Warehouse. São Paulo, Berkeley, 1998. 362 p.

Métricas

Agora vamos aos “fatos”, às “métricas”, ao centro das atenções, pois são as tabelas fatos que irão guardar no data warehouse a respota para todas as questões.

É na tabela fato que o analista de SAD armazenará as métricas do negócio, possibilitando recuperar dados quantitativos e responder, por exemplo, quanto foi vendido de um determinado produto? em determinada época? em determinado local? dentre outras questões.

Os fatos ou métricas armazenadas podem ser de três tipos:

  • Aditivas: São as métricas que podem ser sumarizadas, adicionando seus valores ao longo do tempo. Por exemplo: o valor, o custo e/ou a quantidade de um pedido podem ser somados independente das combinações dos parâmetros das dimensões;
  • Não-aditivas: É o inverso das aditivas. Por exemplo: valores percentuais no geral não são somados, e como normalmente são derivadas de outras métricas aditivas, fica mais prático calcular em tempo de execução do que armazenar estas métricas.
  • Semi-aditiva: Estas métricas podem ser sumarizadas apenas em algumas dimensões, como exemplo temos o saldo de uma conta corrente, que pode ser sumarizada na dimensão cliente, já na dimensão agência não faz sentido somar o saldo da conta ao longo do tempo.

Ampliando esta questão dos tipos de métricas, temos o exemplo da temperatura (métrica não-aditiva) e do saldo da conta (métrica semi-aditiva) que não faz sentido somar, mas podemos utilizar outras operações como média, máximo e mínimo.

Normalmente, na tabela fato a chave primária (PK) é composta, sendo que cada elemento é uma chave estrangeira (FK) vinculada à uma tabela dimensão, sendo que a dimensão tempo sempre faz parte deste conjunto.

Em alguns casos podemos ter uma tabela sem fato, onde apenas a relação entre as dimensões já é o suficiente para a área de negócios, conforme o exemplo:

Conclusão!

Espero que este artigo tenha lhe ajudado a entender um pouco mais sobre modelagem multidimensional.

Gostou do conteúdo? bata palmas e compartilhe nas suas redes sociais.

Sentiu falta de algo? quer conversar a respeito? tem alguma dúvida, crítica ou sugestão? deixe seu comentário.

Obrigado pela atenção, até o próximo! Fui!

Se quiser saber o que estou estudando, experimentando ou escrevendo, visite o meu Diário de Bordo e veja as novidades.

--

--

Sandro Rogério

Tenho alma de Desenvolvedor, estou trabalhando em Operações e compartilhando o que aprendo aqui e no meu Diário de Bordo https://sandrorgguimaraes.github.io/