Dimensão Lixo! Entenda como uma Junk Dimension pode te ajudar

Murilo Cremon
Murilo Cremon
Published in
3 min readMay 15, 2020

Quando estamos falando de modelos dimensionais, é comum vermos um Star Schema sendo composto por dimensões e fatos, o problema é que e as vezes, existem campos inseridos na própria fato que não são nem métricas e nem chaves estrangeiras (FK, do inglês Foreign Key) das dimensões, o que deveria ser atribuído para alguma dimensão (a não ser que seja uma dimensão degenerada).

Existem técnicas de modelagem para persistir estes tipos de atributos, que de certa forma ficam de fora das dimensões, mas precisam ser utilizados, o que chamamos de Junk Dimension (Dimensão Lixo).

Junk Dimension

Este tipo de dimensão, é muito esquecida durante as modelagens, pois não são abordadas em livros e nem cursos, quase ninguém ensina.

O objetivo deste tipo de dimensão, é armazenar os atributos que não fazem parte de nenhuma outra dimensão, porém, são campos que serão utilizados em algum tipo de análise. Se formos levarmos ao pé da letra, o nome de Dimensão Lixo faz total sentido, já que os campos não se encaixam em nenhuma outra tabela, porém devem ser utilizados.

Imagine este caso…

Você está modelando um Start Schema, cujo a necessidade é analisar os valores de vendas e descontos, por:

  • Tempo;
  • Cliente;
  • Produto;
  • Tipo de assinatura;
  • Tipo de pagamento;
  • Tipo de plano.

Reparou quantos tipos, possui? E eles não se encaixam em nenhuma das supostas dimensões que devemos ter. Não iríamos descartar, já que a análise por estes campos é essencial, logo não podemos inserir na fato e muito menos criar uma dimensão para cada tipo. O que nos resta é adicionar uma Junk Dimension, que será composta por estes atributos. Como a imagem abaixo.

Repare que na Junk, temos somente três campos:

  • tipo_sk: Armazena a SK, incremental sequêncial;
  • tipo: Trata o campo se é um Pagamento, Assinatura ou Plano;
  • descrição: Armazena a descrição para cada tipo.

E note que, para a tabela de fato, retornamos o valor tipo_sk, para realizar a relação, assim podemos realizar todas as análises necessárias.

Já ia me esquecendo!

Na hora da transformação para realizar o Lookup de retorno da chave para a fato, realizamos o comparativo pelos campos de Tipo e Descrição da Junk que vem do sistema de origem.

Se você utiliza PDI (Pentaho Data Integration), assim como eu, existe um step que realiza todo o procedimento de carga e transformação da Junk, apresento-lhes…

O funcionamento deste step é simples, os registros recebidos serão comparados com a dimensão Junk existente, se eles existirem, o step retornará a SK, caso contrário, ele verificará se há uma nova combinação (o nome já diz) de valores dos atributos e então realizará uma persistência na Junk e retornará a SK para preencher a tabela de Fato. Tudo isso em um único step, incrível.

Vantagens da Junk Dimension

  • Forneça um ponto de entrada menor e mais rápido para consultas em comparação com o desempenho quando esses atributos estiverem diretamente na tabela de fatos;
  • Evita a criação de diversas tabelas de dimensão;
  • Dependendo de seu contexto, pode ser reutilizada em outras transformações e modelos.

--

--

Murilo Cremon
Murilo Cremon

Bem Vindo! Neste blog, compartilharei minhas experiências e conhecimentos sobre Business Intelligence, Visualização de Dados, Tableau e outros assuntos!