Ir para conteúdo
  • 0

Medida DAX no cartão, utilizando o contexto do mês atual e não do total


Isadora Lupchinski
Ir para solução Solucionado por Rodrigo R1 ,

Pergunta

  • Alunos

Estimados, bom dia

Preciso de um help. Tenho uma medida de contactos acumulados ao desse ano a dividir pelo nº de contactos acumulados no ano anterior.

Coloquei numa tabela para visualizarem:

image.png.2d710ef3239fc48c48f70114ec797b36.png

No entanto, quero colocar essa medida no cartão. Mas quero que retorne o 23,72% (que leva em consideração a última data do contexto) e não o -55,59% do total.

A Dax que estou utilizando é a seguinte:

% Contactos acumulados vs LY =
var EsteAno= YEAR(MAX(CRM_Total[Data]))
var AnoAnterior = EsteAno-1
var DataMaximaContactoLY = CALCULATE(MAX(CRM_Total[Data]), SAMEPERIODLASTYEAR('dCalendário'[Date]))
var vAtual = TOTALYTD([Nº de contactos], 'dCalendário'[Date])
var vAtualAcumulado = IF(ISBLANK([Nº de contactos]), BLANK(), vAtual)
var vLYAcumulado = CALCULATE(
[Nº de contactos] ,
FILTER(ALL('dCalendário'), 'dCalendário'[Date] <= DataMaximaContactoLY && 'dCalendário'[Ano] = AnoAnterior)
)
RETURN
DIVIDE(vAtualAcumulado - vLYAcumulado, vLYAcumulado, 0)

Obrigada desde já, 

Isadora

 

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 1
  • Alunos
  • Solução

Boa tarde @Isadora Lupchinski, tudo bem?

Se me permite uma sugestão, a Live 52 é referente a criação de tabela dcalendário super completa e o Leo disponibiliza um arquivo que você pode copiar e colar no Editor avançado do Power Query. Depois dessa Live minhas dcalendários são criadas assim...rsrsrs...além de facilitar demais os cálculos em Dax também...rsrs

Chamo atenção para a coluna de Offset do Mês, que já calcula a diferença do mês atual (0 - zero) para os meses anteriores (-1, -2, -3, etc).

Então você pode usar essa coluna como filtro na sua medida ou até mesmo filtro no visual usando aquela opção lateral direita.

Fazendo esse filtro usando essa coluna Offset do Mês como 0 (zero), quando a sua base de dados for atualizada, a sua dcalendário será atualizada automaticamente também - e assim o seu visual e/ou medida também serão atualizados para o mês atual vigente. Ex: Hoje o Offset zero é o mês de Maio, quando seus dados de Junho forem disponibilizados, o novo Offset zero será junho, e assim, sucessivamente. Com isso não precisará de manutenção mensal no seu dash também.

Portanto, sugiro seguir os passos da Live 52 para a criação da sua dcalendário e o raciocínio que mencionei acima....acredito que assim você chegará no resultado que deseja.

Eu já usei esse solução para um cliente meu e deu super certo...rsrs.

Sucesso para você e se o post atender a sua necessidade, gentileza marca-lo como a solução.

 

 

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

  • 0
  • Alunos
37 minutos atrás, Isadora Lupchinski disse:

Estimados, bom dia

Preciso de um help. Tenho uma medida de contactos acumulados ao desse ano a dividir pelo nº de contactos acumulados no ano anterior.

Coloquei numa tabela para visualizarem:

image.png.2d710ef3239fc48c48f70114ec797b36.png

No entanto, quero colocar essa medida no cartão. Mas quero que retorne o 23,72% (que leva em consideração a última data do contexto) e não o -55,59% do total.

A Dax que estou utilizando é a seguinte:

% Contactos acumulados vs LY =
var EsteAno= YEAR(MAX(CRM_Total[Data]))
var AnoAnterior = EsteAno-1
var DataMaximaContactoLY = CALCULATE(MAX(CRM_Total[Data]), SAMEPERIODLASTYEAR('dCalendário'[Date]))
var vAtual = TOTALYTD([Nº de contactos], 'dCalendário'[Date])
var vAtualAcumulado = IF(ISBLANK([Nº de contactos]), BLANK(), vAtual)
var vLYAcumulado = CALCULATE(
[Nº de contactos] ,
FILTER(ALL('dCalendário'), 'dCalendário'[Date] <= DataMaximaContactoLY && 'dCalendário'[Ano] = AnoAnterior)
)
RETURN
DIVIDE(vAtualAcumulado - vLYAcumulado, vLYAcumulado, 0)

Obrigada desde já, 

Isadora

 

Olá, bom dia!

Você pode estar realizando isso com um filtro no visual do cartão.

1. Clique no Cartão
2. Adicione o campo de data como filtro visual
3. Escolha o tipo de filtro N Superior
4. Coloque Superior > 1
5. em "por valor" arraste a coluna de mês da sua dcalendario
6. Aperte em Aplicar filtro

image.png.de12489f28f932cadfa2d965acddf0f5.png

Acredito que também dê certo alterando a sua medida para considerar apenas o contexto de mês, mas essa solução é mais rápida e resolver o seu problema.

Caso tenha te ajudado, consegue marcar a minha resposta como correta?

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

  • 0
  • Alunos

Veja se dá certo

% Contactos acumulados vs LY cartão =
	VAR vDataFim = 
		MAX(CRM_Total[Data])
	VAR vEsteAno = 
		YEAR(vDataFim)
	VAR vAnoAnterior = 
		EsteAno - 1
	VAR vDataMaxLY = 
		DATE(vAnoAnterior, MONTH(vDataFim), DAY(vDataFim ))
	VAR vAtualAcumulado = 
		CALCULATE(
			[Nº de contactos], 
			FILTER(
				ALL('dCalendário'), 
				'dCalendário'[Date] <= vDataFim && 
				'dCalendário'[Ano] = vEsteAno 
			)
		)
	VAR vLYAcumulado = 
		CALCULATE(
			[Nº de contactos] ,
			FILTER(
				ALL('dCalendário'), 
				'dCalendário'[Date] <= vDataMaxLY && 
				'dCalendário'[Ano] = vAnoAnterior 
			)
		)
RETURN
	DIVIDE(
		vAtualAcumulado - vLYAcumulado, 
		vLYAcumulado, 
		0
	)

 

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

  • 0
  • Alunos
Em 10/05/2022 em 16:14, Rodrigo R1 disse:

Boa tarde @Isadora Lupchinski, tudo bem?

Se me permite uma sugestão, a Live 52 é referente a criação de tabela dcalendário super completa e o Leo disponibiliza um arquivo que você pode copiar e colar no Editor avançado do Power Query. Depois dessa Live minhas dcalendários são criadas assim...rsrsrs...além de facilitar demais os cálculos em Dax também...rsrs

Chamo atenção para a coluna de Offset do Mês, que já calcula a diferença do mês atual (0 - zero) para os meses anteriores (-1, -2, -3, etc).

Então você pode usar essa coluna como filtro na sua medida ou até mesmo filtro no visual usando aquela opção lateral direita.

Fazendo esse filtro usando essa coluna Offset do Mês como 0 (zero), quando a sua base de dados for atualizada, a sua dcalendário será atualizada automaticamente também - e assim o seu visual e/ou medida também serão atualizados para o mês atual vigente. Ex: Hoje o Offset zero é o mês de Maio, quando seus dados de Junho forem disponibilizados, o novo Offset zero será junho, e assim, sucessivamente. Com isso não precisará de manutenção mensal no seu dash também.

Portanto, sugiro seguir os passos da Live 52 para a criação da sua dcalendário e o raciocínio que mencionei acima....acredito que assim você chegará no resultado que deseja.

Eu já usei esse solução para um cliente meu e deu super certo...rsrs.

Sucesso para você e se o post atender a sua necessidade, gentileza marca-lo como a solução.

 

 

Excelente ideia, Rodrigo. Por acaso penso o mesmo: vai mudar a forma como crio minhas calendários e faço meus cálculos.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Em 11/05/2022 em 12:30, Barony disse:

@Isadora Lupchinski

Você pode fazer das duas formas abaixo, dexei duas medidas é soh vc colocar sua medida desejada.

image.png.833c6857fb05d4bbdabb908532e603e8.png

image.png.2ad38c9c1e6b41c62c57e36b12bfedf2.png

 

image.png.ec243b4560eb3fe88c5c1d263055da0c.png

Olá @Barony, boa tarde

Obrigada pela ajuda. Consegui resolver pela sugestão do Rodrigo. Ainda não testei a sua solução, mas deve dar certo também. 

Obrigada desde já, pela disponibilidade :DD

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Em 11/05/2022 em 13:20, Bruno Abdalla de Souza disse:

Veja se dá certo

% Contactos acumulados vs LY cartão =
	VAR vDataFim = 
		MAX(CRM_Total[Data])
	VAR vEsteAno = 
		YEAR(vDataFim)
	VAR vAnoAnterior = 
		EsteAno - 1
	VAR vDataMaxLY = 
		DATE(vAnoAnterior, MONTH(vDataFim), DAY(vDataFim ))
	VAR vAtualAcumulado = 
		CALCULATE(
			[Nº de contactos], 
			FILTER(
				ALL('dCalendário'), 
				'dCalendário'[Date] <= vDataFim && 
				'dCalendário'[Ano] = vEsteAno 
			)
		)
	VAR vLYAcumulado = 
		CALCULATE(
			[Nº de contactos] ,
			FILTER(
				ALL('dCalendário'), 
				'dCalendário'[Date] <= vDataMaxLY && 
				'dCalendário'[Ano] = vAnoAnterior 
			)
		)
RETURN
	DIVIDE(
		vAtualAcumulado - vLYAcumulado, 
		vLYAcumulado, 
		0
	)

 

Olá @Bruno Abdalla de Souza, boa tarde
Muito obrigada pela disponibilidade e resposta. Entretanto, consegui resolver pela solução do Rodrigo. Mas vou testar a sua ideia também. 

:DD

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