Ir para conteúdo
  • 0

DAX: Como Replicar e Acumular Valores de Anos Anteriores no Power BI


Luiz_Mattos

Pergunta

  • Alunos

Estou tentando criar uma medida em DAX no Power BI que replique e acumule valores de um ano para o próximo. O objetivo é que, para cada ano, a medida some o valor do ano atual com o valor acumulado de todos os anos anteriores.

Por exemplo:

  • Para o ano de 2021, a medida deve retornar o valor de 2021.
  • Para 2022, a medida deve retornar o valor de 2021 + o valor de 2022.
  • Para 2023, a medida deve retornar o valor acumulado de 2021 e 2022 + o valor de 2023.
  • E assim por diante para os anos subsequentes.

    Estou tentando utilizar a seguinte fórmula DAX, mas ainda não consegui o resultado esperado:

    Repetir ano anterior = 
    VAR CurrentYear = YEAR([Data minima])
    VAR CurrentYearValue = 
        CALCULATE([Ganho total recorrente USD MRF atual], CalendarioDax[Ano] = CurrentYear)
    VAR PreviousYearValue = 
        CALCULATE([Ganho total recorrente USD MRF atual], FILTER(ALL(CalendarioDax), CalendarioDax[Ano] = CurrentYear - 1))
    VAR SameperiodLY = 
        CALCULATE([Ganho total recorrente USD MRF atual], SAMEPERIODLASTYEAR(CalendarioDax[Date]))
    RETURN 
    CurrentYearValue + PreviousYearValue + SameperiodLY

    image.png.c646d33cd9f7b62a07dcf58458432656.png


Quero que na tabela replique a mesma lógica para 2023, 2024, etc...mas com a formula atual ela para em 2022.

Alguém poderia me ajudar a ajustar essa medida para que funcione corretamente e replique os valores acumulados de ano para ano?
 

Link para o comentário
Compartilhar em outros sites

25 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

@Luiz_Mattos experimenta aí: 

Valor Acumulado = 
CALCULATE(
     [Ganho total recorrente USD MRF atual],
     FILTER(ALL(CalendarioDAX),
            CalendarioDax[Date] < = MAX(CalendarioDax[Date])
         )
)

   

Editado por Henrique Merola Faria
Correção - ")" sobrando....
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
55 minutos atrás, Henrique Merola Faria disse:

@Luiz_Mattos experimenta aí: 

Valor Acumulado = 
CALCULATE(
     [Ganho total recorrente USD MRF atual],
     FILTER(ALL(CalendarioDAX),
            CalendarioDax[Date] < = MAX(CalendarioDax[Date])
         )
)

   

Primeiramente, obrigado pela ajuda.

Usando sua formula, deu o seguinte resultado :
image.png.86a87d1f33e2bb5e3b2832e59ad0651b.png

O que eu preciso é, seria que em 2022, fosse a soma do ano anterior + o ano atual ($14.068.829), e a mesma logica para 2023, 2024 etc igual a tabela abaixo:

image.png.687ada55b338e9d5f78dc082681e1091.png

 

 

image.png

Editado por Luiz_Mattos
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
46 minutos atrás, Luiz_Mattos disse:

Primeiramente, obrigado pela ajuda.

Usando sua formula, deu o seguinte resultado :
image.png.86a87d1f33e2bb5e3b2832e59ad0651b.png

O que eu preciso é, seria que em 2022, fosse a soma do ano anterior + o ano atual ($14.068.829), e a mesma logica para 2023, 2024 etc igual a tabela abaixo:

image.png.687ada55b338e9d5f78dc082681e1091.png

 

 

image.png

Estranho, vc pode colocar aqui a medida [Ganho total recorrente USD MRF atual] por favor ?

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
7 minutos atrás, Henrique Merola Faria disse:

Estranho, vc pode colocar aqui a medida [Ganho total recorrente USD MRF atual] por favor ?

 

Ganho total recorrente USD MRF atual =
[Ganho ano de entrega USD MRF atual] + [Ganho ano seguinte USD MRF atual]
 
Ganho ano de entrega USD MRF atual =
sum(F_CasuloOneDrive_MRF_Atual[Ganho no Ano de Entrega]) / [Cambio MRF atual]
 
Ganho ano seguinte USD MRF atual =
sum(F_CasuloOneDrive_MRF_Atual[Ganho no Ano Seguinte]) / [Cambio MRF atual]


 
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
36 minutos atrás, Edson Igari disse:

Veja se é isso.
image.png.047ae9f344b312bd0254c395e6a6f11a.png

basta adaptar a medida abaixo para o seu contexto.

Acumulado Ano =
CALCULATE(
    [Gross Sales],
    WINDOW(
        1,ABS,
        0,REL,
        ALLSELECTED(dCalendar[Year]),
        ORDERBY(dCalendar[Year],ASC)
    )
)

Também não funcionou, 
 

Teste acumulado 2 =
CALCULATE(
    [Ganho total recorrente USD MRF atual],
    WINDOW(
        1,ABS,
        0,REL,
        ALLSELECTED(CalendarioDax[Ano]),
        ORDERBY(CalendarioDax[Ano],ASC)
    )
)


image.png.346bba625b76b02e4587ee928c0823fe.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
11 minutos atrás, Luiz_Mattos disse:

Também não funcionou, 
 

Teste acumulado 2 =
CALCULATE(
    [Ganho total recorrente USD MRF atual],
    WINDOW(
        1,ABS,
        0,REL,
        ALLSELECTED(CalendarioDax[Ano]),
        ORDERBY(CalendarioDax[Ano],ASC)
    )
)


image.png.346bba625b76b02e4587ee928c0823fe.png

Pq vc soma o atual + o seguinte???

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
27 minutos atrás, Luiz_Mattos disse:
Ganho total recorrente USD MRF atual =
[Ganho ano de entrega USD MRF atual] + [Ganho ano seguinte USD MRF atual]
 
Ganho ano de entrega USD MRF atual =
sum(F_CasuloOneDrive_MRF_Atual[Ganho no Ano de Entrega]) / [Cambio MRF atual]
 
Ganho ano seguinte USD MRF atual =
sum(F_CasuloOneDrive_MRF_Atual[Ganho no Ano Seguinte]) / [Cambio MRF atual]


 

Bem mais complexo do que eu imaginei.
Alguma possibilidade de vc disponibilizar o pbix com uma amostra dos dados ?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
8 minutos atrás, Edson Igari disse:

Pq vc soma o atual + o seguinte???

Tenho que somar as duas medidas para obter o ganho total do projeto. 

Tem projetos que são entregues no mesmo ano e outros no ano atual e no ano seguinte. Ai para ter o ganho total do projeto temos que somar as duas informações.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
10 minutos atrás, Henrique Merola Faria disse:

Bem mais complexo do que eu imaginei.
Alguma possibilidade de vc disponibilizar o pbix com uma amostra dos dados ?

Infelizmente não posso disponibilizar com conta da confidencialidade das informações.

Eu estou tentando aqui de diversas formas e não estou conseguindo, até tive que partir pro excel para fazer um grafico pro meu chefe. kkkk

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 minuto atrás, Luiz_Mattos disse:

Tenho que somar as duas medidas para obter o ganho total do projeto. 

Tem projetos que são entregues no mesmo ano e outros no ano atual e no ano seguinte. Ai para ter o ganho total do projeto temos que somar as duas informações.

então coloca essa soma dentro do acumulado pra ver

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
12 minutos atrás, Henrique Merola Faria disse:

Bem mais complexo do que eu imaginei.
Alguma possibilidade de vc disponibilizar o pbix com uma amostra dos dados ?


Usando esta formula aqui, chego no total de ganho ao longo de 4 anos. Mas não aparece os outros anos nem soma o ano anterior acumulado.
image.png.08e1105ee68cc1844c8cce0195e4e56e.png

Total de Ganho total recorrente acumulado MRF atual para Date =
SUMX(
    VALUES(CalendarioDax[Ano]),
    CALCULATE(
    [Ganho total recorrente acumulado MRF atual],
    ALLSELECTED('CalendarioDax'[Date])
))
 
 
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Ola,

Existe relacionamento entra a tabela calendario e a tabela que a medida [Ganho total recorrente USD MRF atual]  se refere? se sim, acredito que essa solução deva funcionar:

Valor Acumulado = 
CALCULATE(
     [Ganho total recorrente USD MRF atual],
     FILTER(ALL(CalendarioDAX),
            Year(CalendarioDax[Date]) < = YEAR(MAX(CalendarioDax[Date])) 
         )
)

 ou

Valor Acumulado = 
CALCULATE(
     [Ganho total recorrente USD MRF atual],
     FILTER(ALL(CalendarioDAX),
            Year(CalendarioDax[Date]) <= YEAR([Data minima])
         )
)

  • Thanks 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
11 minutos atrás, Yuri Ximenes De Figueiredo Mota disse:

Ola,

Existe relacionamento entra a tabela calendario e a tabela que a medida [Ganho total recorrente USD MRF atual]  se refere? se sim, acredito que essa solução deva funcionar:

Valor Acumulado = 
CALCULATE(
     [Ganho total recorrente USD MRF atual],
     FILTER(ALL(CalendarioDAX),
            Year(CalendarioDax[Date]) < = YEAR(MAX(CalendarioDax[Date])) 
         )
)

 ou

Valor Acumulado = 
CALCULATE(
     [Ganho total recorrente USD MRF atual],
     FILTER(ALL(CalendarioDAX),
            Year(CalendarioDax[Date]) <= YEAR([Data minima])
         )
)

A questão é que para o ano de 2022, 2023 e 2024 o valor da tabela original é 0.

O que quero fazer é além de replicar o valor anterior,  quero somar o valor do ano anterior. 

Como esta:

image.png.0a808578578a80de9e55b0767655a4cd.png

 

Como gostaria:

image.png.8b0474109b8efc9bb7ba6f27ce08265d.png

image.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
9 minutos atrás, Henrique Merola Faria disse:

@Luiz_Mattos, fiz um modelo bem simplificado com as medidas que vc passou,
considerando que os valores vem de colunas de uma única tabela.
Veja se é algo parecido com isso o resultado que vc precisa, no pbix em anexo.



image.png.05e5a09396acd648e32d494421135554.png

Acumulado Ganhos.pbix 44.39 kB · 0 downloads

Muito legal ver a galera toda tentando ajudar!

O problema é o seguinte, a tabela de dados dos projetos nesse caso só tem dados em 2021...eu quero que replique 2021 e faça a soma do valor replicado em 2022, igual no exemplo abaixo:

image.png.f80ba709822c7adfcfdc82afb0299d23.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 minuto atrás, Henrique Merola Faria disse:

Ok, e quando tiver dados em 2022 ou 2023, o  que é para acontecer ?
Ou essa é uma situação específica, que não vai mais se repetir ?

Todos os projetos só terão ganhos no ano de sua implantação, nesse exemplo ai foi 2021.

Como são "ganhos recorrentes" em teoria um mesmo ganho de 2021 vai ser replicado para os anos posteriores.  

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Luiz_Mattos
Certo, que tenho numa outra situação aqui, que posso adaptar para vc:
- Até setembro de 2024, vem acumulando a soma das últimas colunas, fecha em 95k.
- A partir de outubro, não tem mais valor, então acumula o último valor, 10 k, mês a mês.
> No seu caso teria uma linha inicial com os ganhos do ano de implantação e a partir daí
   acumularia ao infinito e além os ganhos recorrentes.
image.png.7956801fd2a00a3897fb0cdbab82925a.png

Editado por Henrique Merola Faria
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
16 horas atrás, Henrique Merola Faria disse:

@Luiz_Mattos
Certo, que tenho numa outra situação aqui, que posso adaptar para vc:
- Até setembro de 2024, vem acumulando a soma das últimas colunas, fecha em 95k.
- A partir de outubro, não tem mais valor, então acumula o último valor, 10 k, mês a mês.
> No seu caso teria uma linha inicial com os ganhos do ano de implantação e a partir daí
   acumularia ao infinito e além os ganhos recorrentes.
image.png.7956801fd2a00a3897fb0cdbab82925a.png

A coluna do total acumulado é uma medida?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Consegui aqui pessoal! Ufa!

Segui esta linha aqui:

1º criei usei esta formula:
 

Total de Ganho total recorrente acumulado MRF atual para Date =
SUMX(
    VALUES(CalendarioDax[Ano]),
    CALCULATE(
    [Ganho total recorrente acumulado MRF atual],
    ALLSELECTED('CalendarioDax'[Date])
))

2º Depois usei a formula anterior nesta outra formula:

Total acumulado por projeto desde de o inicio =
CALCULATE(
    [Total de Ganho total recorrente acumulado MRF atual para Date],
    FILTER(
        ALLSELECTED('CalendarioDax'[Date]),
        ISONORAFTER('CalendarioDax'[Date], MAX('CalendarioDax'[Date]), DESC)
    )
)


Ai funcionou!!

image.png.537654e476bd6c0d9c93527450e05bfe.png

Obrigado o apoio de todos!

  • Like 2
Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...