Ir para conteúdo
  • 0

Resultado do ano anterior no mesmo dia da semana atual


Elinatan Amorim de Oliveir
Ir para solução Solucionado por reinaldoc ,

Pergunta

  • Alunos

Pessoal, tudo bem?! Quem puder ajudar, eu tenho uma tabela fVendas2023 e fVendas com valores a partir de 01/01/2024, o motivo de ter uma tabela para 2023 é que mudaram o sistema e o histórico ficou numa planilha em Excel, e a fVendas é uma consulta SQL, ambas as tabelas tem a mesma estrutura e o cliente quer que elas continuem separadas. Eu preciso comparar as vendas entre os anos, porém a lógica é a seguinte, hoje dia 1/07 é uma segunda, eu comparo com o dia 3/07/2023, pois foi a primeira segunda, eu não comparo por datas iguais. Outro exemplo, as vendas do dia 26/06/2024 eu comparo com 28/06/2023, pois é uma quarta. Também tenho uma dCalendário.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Postado (editado)

Marque apenas 2024 no segmentador. No seu PBIX está marcado todos os anos.

Alterei a Vendas 2023 para essa fórmula:

Vendas Dia Equiparado do Ano Anterior = 
VAR _DIA_CONTEXTO = SELECTEDVALUE(dCalendario[Date])
VAR _DIA_SEMANA_CONTEXTO = SELECTEDVALUE(dCalendario[Diadasemana])
VAR _DIA_ANO_ANTERIOR = EDATE(_DIA_CONTEXTO, -12)
VAR _DIA_SEMANA_ANO_ANTERIOR =
   CALCULATE(
      SELECTEDVALUE(dCalendario[Diadasemana]),
      dCalendario[Date] = _DIA_ANO_ANTERIOR
   )
VAR _DIA_EQUIPARADO =
   CALCULATE(
      SELECTEDVALUE(dCalendario[Date]),
      dCalendario[Date] = _DIA_ANO_ANTERIOR + (_DIA_SEMANA_CONTEXTO - _DIA_SEMANA_ANO_ANTERIOR)
   )
RETURN    
 CALCULATE(
   SUM(fVendas2023[Venda Realizada]),
   dCalendario[Date] = _DIA_EQUIPARADO
 )

 

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

  • 0
  • Alunos
23 minutos atrás, reinaldoc disse:

Marque apenas 2024 no segmentador. No seu PBIX está marcado todos os anos.

Alterei a Vendas 2023 para essa fórmula:

Vendas Dia Equiparado do Ano Anterior = 
VAR _DIA_CONTEXTO = SELECTEDVALUE(dCalendario[Date])
VAR _DIA_SEMANA_CONTEXTO = SELECTEDVALUE(dCalendario[Diadasemana])
VAR _DIA_ANO_ANTERIOR = EDATE(_DIA_CONTEXTO, -12)
VAR _DIA_SEMANA_ANO_ANTERIOR =
   CALCULATE(
      SELECTEDVALUE(dCalendario[Diadasemana]),
      dCalendario[Date] = _DIA_ANO_ANTERIOR
   )
VAR _DIA_EQUIPARADO =
   CALCULATE(
      SELECTEDVALUE(dCalendario[Date]),
      dCalendario[Date] = _DIA_ANO_ANTERIOR + (_DIA_SEMANA_CONTEXTO - _DIA_SEMANA_ANO_ANTERIOR)
   )
RETURN    
 CALCULATE(
   SUM(fVendas2023[Venda Realizada]),
   dCalendario[Date] = _DIA_EQUIPARADO
 )

 

Muito obrigado!!!! Espero um dia chegar neste nível em Dax! Muito foda!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

A medida que o Reinaldo criou puxou corretamente todos os dias que testei entre junho a 7 de julho, com exceção dos dias 01/07 e 02/07, pois o dia 01/07/2024 deveria retornar 03/07/2023, porém retornou ás vendas de 26/06/2023, o mesmo aconteceu com o dia 02/07/2024, ao selecionar retorna as vendas do dia 27/06/2023, mas deveria retornar o dia 04/07/2024.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Com a ajuda do Reinaldo, fiz alguns ajustes e funcionou, caso alguém também precise, segue a medida:

 

Vendas Dia Equiparado do Ano Anterior = 
VAR _DIA_CONTEXTO = SELECTEDVALUE(dCalendario[Date])
VAR _DIA_SEMANA_CONTEXTO = WEEKDAY(_DIA_CONTEXTO, 2) -- 2 para considerar segunda como 1
VAR _ANO_ANTERIOR = YEAR(_DIA_CONTEXTO) - 1
VAR _MES_CONTEXTO = MONTH(_DIA_CONTEXTO)
VAR _DIA_ANO_ANTERIOR = DATE(_ANO_ANTERIOR, _MES_CONTEXTO, DAY(_DIA_CONTEXTO))

-- Encontrar a primeira ocorrência do mesmo dia da semana após a data ajustada
VAR _DIA_EQUIPARADO = 
    CALCULATE(
        MIN(dCalendario[Date]),
        dCalendario[Year] = _ANO_ANTERIOR,
        dCalendario[Date] >= _DIA_ANO_ANTERIOR,
        WEEKDAY(dCalendario[Date], 2) = _DIA_SEMANA_CONTEXTO
    )

RETURN    
    CALCULATE(
        SUM(fVendas2023[Venda Realizada]),
        dCalendario[Date] = _DIA_EQUIPARADO
    )
 

  • Like 1
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...