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

By | 16/05/2011

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

6 thoughts on “PowerPivot – DAX – Entendendo o contexto de execução

  1. Eduardo Schmidt

    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!

    Reply
  2. Thiago Zavaschi Post author

    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)

    Reply
  3. Marcos

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

    Reply
  4. Alan

    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

    Reply
  5. Thiago Zavaschi Post author

    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!

    Reply
  6. Thiago Zavaschi Post author

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

    Reply

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *