sexta-feira, 25 de julho de 2014

PowerPivot – DAX – Entendendo o contexto de execução

16MAY/116
Introdução ao Contexto de Execução
Antes de entrar nas especificidades de cada função, conforme anunciei no meu último post que o faria, é importante frisar que o resultado obtido é sempre baseado no contexto atual. O contexto pode vir da tabela que você está trabalhando (novas colunas ao modelo) ou ao conjunto tratado pela measure.
E o que pode afetar/criar esse contexto?
Basicamente o contexto vem dos filtros aplicados (filtros nas funções ou slicers). Isso afeta o resultado esperado, por exemplo ao utilizar um slicer (segmentador de dados) temos uma redução de contexto.
Quando estamos trabalhando com valores relativos, por exemplo, considere o seguinte conjunto de dados e a seguinte DAX:
image
=SUM(Tabela[Categoria])
Temos um resultado semelhante a:
image
Neste momento estamos trabalhando com o conjunto total dos dados, mas ao marcar um slicer, por exemplo “Rock”, temos o filtro sobre o conjunto usado:
image
 image
Ok, Thiago até aí ok, mas em que cenários que devo me atentar quanto a isso? Por exemplo, e se você possuir uma expressão DAX para calcular uma média, onde o denominador seja o somatório total das vendas ?
Algo como:
Vendas / Todas as vendas independente de categoria ?
Você poderia pensar em algo como =SUM(Tabela[Categoria])/SUM(Tabela[Categoria]), e manter a divisao por categorias, mas a conta não faria sentido, pois tanto o numerador quanto o denominador resultariam em um valor flutuante de acordo com o contexto.
Como resolver então?
Existem três funções que podem ajudar que são: CALCULATE(), ALL() e ALLExcept().
O CALCULATE serve para manipular o contexto, e o ALL e ALLExcept servem para retornar regiões dos dados de forma invariável ao contexto dos slicers (ALL) e podendo ter excessões (ALLExcept).
Na prática ficaria algo como:
=SUM(Tabela[Valor])/CALCULATE(SUM(Tabela[Valor]),ALL(Tabela))
Assim, mesmo aplicando um slicer, o resultado da medida (measure) para aquela categoria é baseado no valor total(denominador) e não mais no contexto dos slicers, veja:
image
image

Por Thiago Zavaski

Nenhum comentário:

Postar um comentário

Sharepoint enviando email através de SMTP externo com autenticação

Sharepoint enviando email através de SMTP externo com autenticação Uma demanda interna nossa é que na nossa sede não tem IP Fixo. nesse c...