Thiago Zavaschi R2 www.zavaschi.com

16May/117

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

Olá a todos!

Hoje continuo com o tema DAX.

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 hoje é só pessoal! :)

Este artigo é parte de uma série de artigos sobre PowerPivot e DAX. Confira os outros artigos sobre PowerPivot no link: http://zavaschi.com/index.php/tag/powerpivot/

Abraços!
Thiago Zavaschi

Comments (7) Trackbacks (0)
  1. Zavaschi! blz?, cara estou com uma dúvida em um cálculo de porcentagem que estou fazendo no Powerpivot. Porém no resultado final ele está me trazendo um valor muito grande, por exemplo: O resultado correto é 2,4% e ele está trazendo 247,48%. Não usei nenhum parâmetro de arredondamento porque não sei como fazer estou apenas usando o “Formatar” da aba mesmo. Saberia se uso algum código no cálculo? obrigado!

  2. Tem como você mandar a planilha para eu dar uma olhada?
    Acho que deve ser só a formatação do campo conflitando com a definição de ponto decimal..
    (Não havia visto o comentário antes, desculpe a demora)

  3. Thiago, saberias me informar se o excel 365 (que vem no pacote office 365) pode habilitar o Powerpivot e o PowerView?

  4. Tiago, Forte abraço.
    Estou tendo uma dificuldade na excução desse comando quando trabalhado em tabelas diferentes, em resumo tenho uma tabela dinamica ja pelo pivot relacionada com dados de orçado e realizado de fontes distintas estou tentando colocar mais uma coluna que divida uma pela outra, e nao estou obtendo o resultado esperado por ultima tentativa tentei relacionar pelo conjuntos mas esta retornando com erro existe alguma solução? obrigado fera seus tuto me ajudam muito

  5. Marcos, Até ond eme consta pelo Office 365 você tem direito (em uma das assianturas) ao pacote Office Professional Plus 2013.
    Essa edição contém o PowerPivot e o Power View nativos (abilitar em Opções). As demais edições do 2013 não suportam o PowerPivot/View.
    Caso seja o Office 2010, basta baixar o addin em http://www.powerpivot.com
    Abraços!

  6. Alan, você pode compartilhar uma planilha de exemplo comigo? Qual versão do powerpivot e do excel você está usando?

  7. Zavaschi, tenho uma coluna de data a qual está em texto, contudo não consigo alterar para data. Tem alguma função DAX que tem como transformar para data?


Leave a comment


No trackbacks yet.