terça-feira, 29 de dezembro de 2015

Tableau LOD Expression e Microstrategy Level Metrics

Bom dia.

No artigo de hoje, resolvi falar sobre este assunto que julgo importante, não só para a comunidade Tableau, como também para meus amigos, que assim como eu, vieram do mundo Microstrategy e hoje são multiplataformas: Tableu LOD Expression e Microstrategy Level Metrics.



Quando iniciei com Tableau na versão 8.3, apresentado pelo meu amigo Raphael Almeida (mestre do mundo do marketing digital), fiquei encantado, com a facilidade de criação de análises e dashboards, tudo já pré-formatado, dentro das melhores práticas de visualização.

Logo então, parti para os cálculos pesados, fiquei maravilhado com o recurso Table Calculation. Porém senti falta do que tinha no Microstrategy, o que chamávamos de "métricas dimensionalizadas", Level Metrics.

Na versão 9.0, a Tableau nos trouxe um super presente, o recurso de LOD Expression, que sanava toda essa necessidade de cálculos de nível, exclusão, fixação e inclusão de nível, dentre outras possibilidades.

Vou além, das ferramentas de Data Discovery que conheço, nenhuma possui este recurso. Algumas, possuem em sua versão Enterprise, opções de criação de métricas de nível, criação de datasets para utilização em seu produto de Data Discovery.

Falando um pouco de como funciona Level Metrics no Microstrategy, na criação da métrica, temos uma configuração de Level (Dimensionality). Nesta opção, por padrão, todas as métricas são Report Level, ou seja, do nível do relatório. Você pode inserir então, atributos, definindo 3 opções:

  • Target - define o nível que a métrica será calculada
  • Filtering - define como a métrica irá trabalhar em relação ao filtro do relatório
  • Grouping - define o agrupamento da métrica, Target ou ignora Target 

Basicamente falando, toda métrica é convertida pelo engine do Microstrategy, em um passo de SQL no relatório. O que as opções acima farão, nada mais é do que configurar as cláusulas
Select, Where e Group By (não necessariamente ligadas a cada uma das opções acima).

Falando agora de Tableau LOD Expression. É muito simples. basta criar um campo calculado como o abaixo:


Onde:
  • INCLUDE - palavra chave para calcular em um nível inferior
  • EXCLUDE - para calcular em um nível superior
  • FIXED - para calcular em um nível fixo
  • [Order ID] - declaração de dimensão (uma ou mais)
  • Sum(Valor da Venda) - expressão de agregação

Vamos aos exemplos. Suponha que na minha base de item de pedidos, queira uma média do valor dos pedidos. Se eu simplesmente fizer um AVG(Valor das Vendas), terei uma média dos itens, como abaixo:



O que preciso fazer é: primeiro somar todos os itens por pedido. Depois fazer a média dessa somatória. Como na minha análise o nível de detalhe é Categoria e Ano, vou criar um campo calculado com a expressão Include para calcular em um nível de detalhe inferior a somatória, por Pedido, e depois fazer simplesmente a média por Categoria e Ano.


Repare que o valor é diferente. Agora vamos tirar a prova, criando uma planilha por pedido, na Categoria Tecnologia, no Ano de 2011.



Repare o Grand Total que é a média da soma dos pedidos. 

O segundo exemplo é com Exclude. Temos Categoria e Subcategoria. Coloquei o valor das vendas  por subcategoria e também os totais por categoria. Agora quero visualizar uma métrica com Exclude (calculando em um nível de detalhe acima), para ver, na subcategoria, o total de sua categoria.



Isso é muito utilizado no Microstrategy para construção de Percentual do Total. Mas você não precisa disso no Tableau para construir percentual do total, pode simplesmente usar Table Calculation, explicado no meu artigo anterior, é uma alternativa. 

Agora vamos a mais um exemplo. Também podemos reproduzir o mesmo resultado anterior, com Fixed, fixando o nível de cálculo para Categoria apenas.


Um detalhe interessante sobre o Fixed, segundo a base de conhecimento Tableau, é a ordem em que seu filtro é executado, logo após os filtros de contexto, e antes dos filtros de dimensões. As expressões do tipo Include e Exclude são executadas após o filtro de dimensão.

Outro teste que fiz, pelo fato de seu nível ser fixo, é colocar ou não em sua expressão, as dimensões que estão no filtro. Repare neste teste com Exclude, excluindo a subcategoria Mesas, como o total de sua categoria muda e a métrica com o Exclude reflete este total.


Porém, ao fazer o mesmo teste com o Fixed, colocando somente categoria na métrica, ele desconsidera o filtro de subcategoria excluindo Mesas.



Repare que o total continua sendo de toda a categoria, sem retirar a subcategoria mesas. Agora repare nesta planilha de vendas por ano:




Vamos filtrar 2011 e colocar nossa métrica de total por categoria - Fixed.



Observe, que enquanto a métrica valor de vendas filtrou 2011, a métrica com Fixed não levou em consideração o filtro. Porém, se adicionarmos em sua definição o atributo Data de Venda, passará a trazer os valores corretos:




E assim concluímos nosso artigo. Na minha opinião se uma ferramenta, seja de BI ou Analytics, não fornecer suporte para métricas de nível, métricas de acumulado YTD, MTD e métricas não agregáveis, como saldo de estoque, saldo bancário, é falha na parte de cálculo. Essas duas ferramentas passam tranquilamente neste teste.


Maiores informações na base de conhecimento Tableau:

15 principais expressões de LOD

Entendendo as Expressões de nível de detalhe (LOD)

Espero que tenham apreciado.

Um abraço.

Fabio Idalgo

Um comentário: