Ir para conteúdo
  • 0

Cálculo Dax Acumulado


Thiago Pedrazi
Ir para solução Solucionado por Bruno Abdalla de Souza ,

Pergunta

  • Alunos

Ola Pessoal! Boa noite!

Estou com um problema num relatório que só fui perceber hoje após uma solicitação do meu chefe.

Se eu quiser por exemplo, avaliar meu resultado acumulado desse ano até o dia 16. Os meus dados só vão até o dia 16..então é só eu não filtrar nada que está certo!

Mas se eu quiser comparar o acumulado desse ano até o dia 16/Fev x mesmo período do ano anterior terei problemas! Eu tenho que filtrar 2022, Jan e Fev e do dia 1 ao dia 16..
Mas o filtro vai pegar Jan do dia 1 ao dia 16, e Fev do dia 1 ao dia 16 de 2022 e vai comparar com esses mesmo períodos de 2021..
Logo estaria reportando o resultado errado...

Eu queria avaliar Jan/22 (31 dias) + Fev/22 (16 dias) x Jan/21(31 dias) + Fev/21 (16 dias).

Nesse cartão eu tenho uma medida de soma e 3 medidas YoY pq eu comparo esse ano com outros anos anteriores, mas o calculo é parecido nas 3 situações de YoY.

Total Pax = SUM(fFrequencia[Pax])

YoY Pax = 
IF(DISTINCTCOUNT(dCalendario[Ano])>1,0,
IF(ISBLANK([Total Pax LY]),0,
DIVIDE([Total Pax],[Total Pax LY])-1))

 

Agradeço a ajuda!

image.png.8d095f36ddc1f14e4a5f9e88c3bc97f5.pngimage.png.142ba73cc43eeaf3c902a1f4a9ed44ac.png

 

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Você só mandou datas de 2022. Aí fica difícil de fazer comparar com ano anterior. Mas segue uma tentativa.

Atual vs. Ano Anterior = 
	VAR vUltimaData = 
		MAX(dCalendario[Data]) //No seu caso seria 16/02/2022
	VAR vPrimeiraData = 
		MIN(dCalendario[Data]) //No seu caso 01/01/2022
	VAR vUltimaDataAnt = 
		EDATE(vUltimaData, -12*1) //Multiplique por -2 se quiser 2 anos atrás, por exemplo
	VAR vPrimeiraDataAnt = 
		EDATE(vPrimeiraData, -12*1) //Multiplique por -2 se quiser 2 anos atrás, por exemplo
	VAR vValorAtual = 
		CALCULATE(
			[%Fat x Meta],
			DATESBETWEEN(
				dCalendario[Data],
				vPrimeiraData,
				vUltimaData
			)
		)
	VAR vValorAnt = 
		CALCULATE(
			[%Fat x Meta],
			DATESBETWEEN(
				dCalendario[Data],
				vPrimeiraDataAnt,
				vUltimaDataAnt
            )
        )
RETURN
	DIVIDE(
		vValorAtual - vValorAnt,
		vValorAnt
	)

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Imagino que seria algo assim, mas só vendo o pbix para ver se todos os contextos estão sendo considerados ou não.
 

Atual vs. Ano Anterior = 
	VAR vUltimaData = 
		MAX(dCalendario[Data]) //No seu caso seria 16/02/2022
	VAR vPrimeiraData = 
		MIN(dCalendario[Data]) //No seu caso 01/01/2022
	VAR vUltimaDataAnt = 
		EDATE(vUltimaData, -12*1) //Multiplique por -2 se quiser 2 anos atrás, por exemplo
	VAR vPrimeiraDataAnt = 
		EDATE(vPrimeiraData, -12*1) //Multiplique por -2 se quiser 2 anos atrás, por exemplo
	VAR vValorAtual = 
		CALCULATE(
			[SuaMedida],
			DATESBETWEEN(
				dCalendario[Data],
				vPrimeiraData,
				vUltimaData
			)
		)
	VAR vValorAnt = 
		CALCULATE(
			[SuaMedida],
			DATESBETWEEN(
				dCalendario[Data],
				vPrimeiraDataAnt,
				vUltimaDataAnt)
			)
		)
RETURN
	DIVIDE(
		vValorAtual - vValorAnt,
		vValorAnt
	)

 

Editado por Bruno Abdalla de Souza
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
2 horas atrás, Bruno Abdalla de Souza disse:

Imagino que seria algo assim, mas só vendo o pbix para ver se todos os contextos estão sendo considerados ou não.
 

Atual vs. Ano Anterior = 
	VAR vUltimaData = 
		MAX(dCalendario[Data]) //No seu caso seria 16/02/2022
	VAR vPrimeiraData = 
		MIN(dCalendario[Data]) //No seu caso 01/01/2022
	VAR vUltimaDataAnt = 
		EDATE(vUltimaData, -12*1) //Multiplique por -2 se quiser 2 anos atrás, por exemplo
	VAR vPrimeiraDataAnt = 
		EDATE(vPrimeiraData, -12*1) //Multiplique por -2 se quiser 2 anos atrás, por exemplo
	VAR vValorAtual = 
		CALCULATE(
			[SuaMedida],
			DATESBETWEEN(
				dCalendario[Data],
				vPrimeiraData,
				vUltimaData
			)
		)
	VAR vValorAnt = 
		CALCULATE(
			[SuaMedida],
			DATESBETWEEN(
				dCalendario[Data],
				vPrimeiraDataAnt,
				vUltimaDataAnt)
			)
		)
RETURN
	DIVIDE(
		vValorAtual - vValorAnt,
		vValorAnt
	)

 

@Bruno Abdalla de Souza, segue anexo Pbix. Eu alterei os numeros apenas pro questões de Segurança..

Sem filtro nenhum aplicado ele vai pegar a meta cheia dos 3 meses...e o real acumulado até 17/Fev..
Se eu aplicar filtro de Janeiro e fevereiro apenas..ele vai pegar Fevereiro a meta cheia até o final do mês..
E se eu filtrar Jan e Fev..e até o dia 17 apenas...ele vai pegar Jan até o dia 17..e fev até o dia 17...😪😪

Dash_Draft.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
2 minutos atrás, Bruno Abdalla de Souza disse:

Tem muita coisa no dashboard. Que medida que tenho que olhar, em qual visual?

@Bruno Abdalla de Souza, desculpe! Seria mais a parte do velocimetro e da matriz..

As medidas de %Fat x Meta (realizado x meta)
A primeira pagina é somente o resultado de Fevereiro..
A segunda pagina é o resultado do 1 Trimestre. o Problema maior é nessa pagina..
Pq se eu filtrar Janeiro e Fevereiro, ele vai pegar a meta cheia dos dois meses, mas meu resultado só vai até o dia 17/Fev..então no velocimetro fica errado.
E se eu filtrar o dia de 1 a 17 e o meses de Jan e Fev, tbm fica errado...Pq o filtro vai pegar os primeiros 17 dias de Janeiro. E na verdade eu queria pegar a meta acumulada do ano até o dia 17 de Fev e o resultado acumulado do ano até o dia 17 de Fev..
Dessa forma iria conseguir reportar certo no velocimetro por exemplo...
 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 hora atrás, Bruno Abdalla de Souza disse:

Você só mandou datas de 2022. Aí fica difícil de fazer comparar com ano anterior. Mas segue uma tentativa.

Atual vs. Ano Anterior = 
	VAR vUltimaData = 
		MAX(dCalendario[Data]) //No seu caso seria 16/02/2022
	VAR vPrimeiraData = 
		MIN(dCalendario[Data]) //No seu caso 01/01/2022
	VAR vUltimaDataAnt = 
		EDATE(vUltimaData, -12*1) //Multiplique por -2 se quiser 2 anos atrás, por exemplo
	VAR vPrimeiraDataAnt = 
		EDATE(vPrimeiraData, -12*1) //Multiplique por -2 se quiser 2 anos atrás, por exemplo
	VAR vValorAtual = 
		CALCULATE(
			[%Fat x Meta],
			DATESBETWEEN(
				dCalendario[Data],
				vPrimeiraData,
				vUltimaData
			)
		)
	VAR vValorAnt = 
		CALCULATE(
			[%Fat x Meta],
			DATESBETWEEN(
				dCalendario[Data],
				vPrimeiraDataAnt,
				vUltimaDataAnt
            )
        )
RETURN
	DIVIDE(
		vValorAtual - vValorAnt,
		vValorAnt
	)

 

 

Fala @Bruno Abdalla de Souza ! Boa tarde!
Eu separei a variável que vc fez em cálculos isolados. Consigo entender mais fácil assim..
Eu fiz o seguinte pra achar o % Real x Meta Acumulado..mudei algumas coisas na sua fórmula..

PrimeiraData = MIN(fFaturamento[Data]) // Primeiro Data de Faturamento na Tabela
UltimaData = MAX(fFaturamento[Data]) //Ultima Data de Faturamento na Tabela
% RealxMeta ACC = 
        CALCULATE(
            [%Fat x Meta],
            DATESBETWEEN(
                dCalendario[Data],
                [PrimeiraData],
                [UltimaData]
            )
)

No seu cálculo você usou o Data Máxima da dCalendario...mas acho que teria que ser a Data Máxima onde tenho Faturamento na Tabela de Faturamento..
Eu fiz desse jeito e funcionou! 
Achei o %Real x Meta analisando a Meta acumulada do ano e realizado acumulado do ano..mas até o dia 17/Fev.
Agora no velocimetro, eu não preciso nem mais usar filtro..pq ele vai me mostrar o % Real x Meta Acumulado certinho...

Eu tenho outro relatório onde tenho Faturamento desde 2018..vou testar sua váriavel nesse outro relatório e te aviso! Eu acho que lá vai funcionar!  Lá eu faço análise YoY...

image.thumb.png.2bb14feb1b4bb9663b8974dea9944a26.pngimage.png.4e0dba04e739ada0122d708c9c40fc94.pngimage.png.fab51fb26e6c3ed0e214c03259cdb145.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
16 horas atrás, Thiago Pedrazi disse:

Fala @Bruno Abdalla de Souza ! Boa tarde!
Eu separei a variável que vc fez em cálculos isolados. Consigo entender mais fácil assim..
Eu fiz o seguinte pra achar o % Real x Meta Acumulado..mudei algumas coisas na sua fórmula..

PrimeiraData = MIN(fFaturamento[Data]) // Primeiro Data de Faturamento na Tabela
UltimaData = MAX(fFaturamento[Data]) //Ultima Data de Faturamento na Tabela
% RealxMeta ACC = 
        CALCULATE(
            [%Fat x Meta],
            DATESBETWEEN(
                dCalendario[Data],
                [PrimeiraData],
                [UltimaData]
            )
)

No seu cálculo você usou o Data Máxima da dCalendario...mas acho que teria que ser a Data Máxima onde tenho Faturamento na Tabela de Faturamento..
Eu fiz desse jeito e funcionou! 
Achei o %Real x Meta analisando a Meta acumulada do ano e realizado acumulado do ano..mas até o dia 17/Fev.
Agora no velocimetro, eu não preciso nem mais usar filtro..pq ele vai me mostrar o % Real x Meta Acumulado certinho...

Eu tenho outro relatório onde tenho Faturamento desde 2018..vou testar sua váriavel nesse outro relatório e te aviso! Eu acho que lá vai funcionar!  Lá eu faço análise YoY...

image.thumb.png.2bb14feb1b4bb9663b8974dea9944a26.pngimage.png.4e0dba04e739ada0122d708c9c40fc94.pngimage.png.fab51fb26e6c3ed0e214c03259cdb145.png

Bom dia @Bruno Abdalla de Souza, tudo bem?
Conforme eu tinha falado..eu usei seu cálculo num outro relatório meu onde eu tenho dados desde 2018 até o momento...e está tudo certo!

Eu separei o seu cálculo em medidas isoladas pq dessa forma eu entendo melhor..e faz total sentido o que vc fez! Te agradeço! Obrigado!

A única coisa que eu mudei, foi que vc usou a Max da dCalendario..mas a minha dCalendario é fixa até 31/12/2022. Então eu alterei esse trecho da fórmula pro Max da minha Fato..

Se eu filtrar 2022 por exemplo, ele pega certinho o acumulado desse ano e compara com o mesmo período do ano anterior! Fiz outros testes usando outros períodos tipo de 2021 e etc. e está tudo ok!

Mas seu eu deixar sem filtro nenhum aplicado, ele me da um cálculo final que não faz mto sentido.....mas o cálculo que vc fez está perfeito!
Teria algum modo de qdo não tiver filtro aplicado, o meu calculo final, que é o seu Return da fórmula, ficar zerado? Ou seja só vai aparecer a variação qdo a pessoa filtrar o período desejado. 

Obrigado! image.thumb.png.c07ba6617d37016069c5cc9031bc2593.png

image.thumb.png.f779e0f12dc32ebe1565dedff64dfdd4.png


 

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...