Power BI DAX Total Acumulado

O que é Total Acumulado, ou Running Totals? Total Acumulado é a soma acumulada ao longo de um tempo, ou de alguma outra coluna que possa ser colocada em ordem.

No caso da nossa imagem abaixo é o acumulado de itemValor ao longo da dataItem.

total acumulado

E como fazer isso no Power BI usando DAX?

Acumulado com Gaps

Normalmente criamos uma medida assim:

max data fato

Se olharmos assim numa tabela, parece que deu certo.

Porém, observe as datas, perceba que no período 1 temos gaps, enquanto que no período 2 não temos gaps (vai do dia 1 ao dia 20 direto, sem faltas). Se colocarmos isso num gráfico de linha fica mais fácil de perceber.

O problema com essa medida é que ela gera esses gaps. Isso porque nas datas que não temos dados na fato ela retorna blank, gerando esses gaps, isso acontece porque não há interseção entre datas na dimensão calendário com essas mesmas datas na fato.

E como resolver isso?

Acumulado sem Gaps, mas com Data Futura

Pra resolver o problema dos gaps, podemos ajustar a medida simplesmente alterando a variável de DATACORTE pra utilizar a data da dimensão calendário e não mais da fato.

max data calendario

O problema é que isso vai gerar valores futuros, assim:

Perceba que agora não temos mais gaps, mas os valores continuaram a serem exibidos em datas futuras. Devia ter parado ali em 20-01, mas continuou, se olharmos num gráfico de linha fica mais fácil de perceber.

o gráfico avança no futuro

E como fazer pra resolver isso?

Acumulado com IF

O jeito mais fácil de resolver essa questão é com um bom e velho IF. A medida fica assim:

Nesse caso precisamos adicionar uma variável nova, que é a vDATACORTE, que diz pra gente até que data tem dado pra ser exibido.

Daí no IF é verificado se a dataContexto é menor ou igual a DataCorte, portanto quando a data do contexto for dia 21-01, que é uma data que já não tem mais dados, o que vai ser retornado é apenas o valor da medida [Amount], que vai ser BLANK() já que na fato não temos mais dados pra serem exibidos nessas datas.

Colocar [Amount] ali na condição do else é importante pra exibir os valores de [Amount] nos totalizadores (headers, sub-totals, essas coisas). Vamos ver como fica na matriz:

medida com IF funcionando lindamente =)

Vamos ver como fica o resultado no gráfico de linha:

Pronto! Esse é o resultado que estávamos buscando! Existem outras formas de realizar esse acumulado, eu sei de pelo menos mais outras duas, mas que são mais complexas e fazem uso de coluna calculada adicionada ao modelo, portanto, vou preferir não falar delas aqui também pra não extender mais o post.

Se esse post te ajudou de alguma forma, compartilha! 🙂

O Modelo e a Base de Dados

fato
dimensão

Publicado por Pedro Carvalho

Apaixonado por anlise de dados e Power BI

Um comentário em “Power BI DAX Total Acumulado

Deixe uma resposta

× Como posso te ajudar?
%d blogueiros gostam disto: