Modelador de Dados

13. Fato

13.1. Agregado

As fatos agregadas são informações que estão consolidadas por uma determinada regra de hierarquia do negócio, e que são baseadas em outra fato já existente no modelo que está geralmente no menor nível da hierarquia:

O maior exemplo deste tipo é agregação pelo tempo, como uma tabela de vendas. Uma tabela que analisa vendas faz mais sentido em uma tabela de agregado, pois as vendas somadas ao longo do tempo contemplam o total de vendas em uma semana, um mês ou um ano. Ou seja, teríamos uma tabela de venda por dia, uma agregada com a consolidação da venda por mês (agregando todos os dias de cada mês) e uma agregada por ano (consolidando as vendas dos meses por ano). Sempre uma tabela sendo base para a próxima, conforme a imagem abaixo:


Importante que o critério de tempo não é a única regra de possível agregação. Pode-se fazer por exemplo, uma regra de agregação, junto com o tempo ou separadamente, por uma estrutura de hierarquia mercadológica de produto ("Categoria do Produto", "Setor do Produto", "Família", "Sub-Família", etc.). No 4Insights, para fazer a agregação só é preciso definir um critério de agregação baseado em uma hierarquia (a própria dimensão de tempo é uma hierarquia).

O 4Insights pode realizar consolidações pelas regras de soma, maior valor, menor valor, ou uma regra que possa ser aplicada juntamente com estes critérios. Ex: soma de (se valor de venda for nulo, venda igual a 0, senão venda).

Para criar uma tabela agregada é muito simples, basta clicar com o botão direito do mouse na área em branco e clicar na opção "Adicionar Elemento" e selecionar o tipo "Agregado", nela também é possível criar a configuração de limpeza de histórico, a configuração é feita da mesma forma a tabela de fatos. após preencher todas as informações salve e arraste as ligações para a tabela agregada, logo depois de arrastar todos os campos desejados, clique com o botão direito do mouse na tabela agregada e clique na opção "Editar propriedades", será exibida a tela de edição e é nesse momento que definimos qual será o atributo de transformação.

Neste exemplo teremos uma tabela de fatos de "Vendas" e iremos agregar por mês, sendo assim nosso atributo será o campo de Data da Venda.



Após abrir para edição a tabela de agregada, clique no botão "Editar" do atributo desejado, o atributo deve ser uma chave estrangeira para que seja possível realizar a transformação, após clicar no botão "Editar" será possível visualizar uma nova seção chamada de "Agrupamento" nela vão conter 3 opções "Lookup de Transformação", "Função de Agregação" e "Agrupar", neste momento iremos usar a primeira opção Lookup de Transformação e nela será exibida uma arvore contendo a estrutura da Lookup e nesse momento definimos por qual campo será feita a transformação, neste exemplo como estamos usando um campo de data que utiliza a dimensão de tempo padrão do 4insights podemos escolher qualquer dos campos da imagem abaixo.


Neste caso selecionamos o campo "COD_MES" que representa o código do mês (Ex.: Data da Venda 01/01/2018 o Código do mês será 012018) ao clicar no botão "Associar" é exibido ao lado da opção "Lookup de Transformação" a informação de qual atributo foi selecionado.


Dessa forma já temos a nossa transformação de Dia para Mês, clique em "Salvar" para continuar as configurações, agora devemos configuras os campos que são agrupados, como por exemplo o Valor da Venda, para realizar essa configuração encontre um dos campos que serão agregados, no nosso exemplo iremos usar o atributo chamado "Valor Vendas Com Impostos", clique no botão "Editar" do atributo escolhido e será exibida a mesma seção "Agrupamento" da configuração do atributo anterior, mas a diferença é para esse campo iremos utilizar a opção "Função de Agregação" que representa qual a estrategia de agregação que aquele atributo vai usar (Ex.: Soma, Média, Contagem, Minimo, Maximo), mas também é possível não utilizar nenhuma função de agregação padrão e escrever um trecho de SQL no campo "Expressão" para que incluir uma regra customizada.



Após configurar todos os atributos que devem ser agregados, salve as alterações do elemento e as alterações podem ser visualizar dessa forma:



Por que criar uma tabela Agregada?

Outro ponto importante das tabelas agregadas é o ganho de espaço e a performance nas análises.

Espaço: considere que temos uma tabela de fato de vendas de um varejo com uma rede de supermercados com 1.000 lojas, e são vendidos por hora 10 milhões de itens. Neste caso teríamos uma tabela de 240 milhões por dia com 7,2 bilhões de itens vendidos por mês, por ano 172,2 bilhões. Além disso, esta tabela possui todos os detalhes da venda (dimensões): "Data da Venda", "Produto Vendido", "Loja que Vendeu", "Ponto de Venda", "Número da Nota Fiscal", "Horário da Venda", "Cliente que comprou" e as métricas: "Valor da venda com impostos", "Valor dos impostos", "Custo da Venda". Utilizando um agregado, podemos reduzir o número de linhas da tabela, mantendo-se a visão somente por mês, por exemplo, com os cálculos consolidados já prontos.

Performance: apesar de ser possível realizar análises de drill down ou drill up pelas ferramentas de front-end, isto acaba exigindo maior esforço e tempo, porque a cada mudança de nível, é necessário uma nova consulta no banco de dados para gerar a informação necessária. Através de uma tabela já agregada pelo nível que interessa, o acesso a informação torna-se mais rápido já que a informação está pronta e não é necessária transformação. Importante citar que pela agregada seria possível somente fazer drill up (subir nível) pelo front-end.

Para as tabelas agregadas, deve-se definir uma chave de atualização (refresh key). Esta chave é a regra que determina como a informação na tabela agregada será atualizada dependendo do que for atualizado na tabela fato original. Ex: supondo uma tabela fato de vendas por dia, loja, produto, valor de venda, e sua agregada por mês, loja, produto e valor de venda, a chave de atualização pode ser o mês e a loja. A chave de atualização deve sempre ser um critério que garanta que a informação agregada seja exatamente a mesma que exista na tabela original. Cuidado também para não criar uma regra genérica demais (por exemplo somente mês). Isto pode impactar na performance dos cálculos.