Ir para conteúdo
  • 0

Medida que filtra as compras com data Menor e igual a do contexto - [O Mestre Resolve] Entenda Contexto de Avaliação com CASE REAL de DAX


kenzo.takeda

Pergunta

  • Alunos

Bom dia,

  No vídeo, o [O Mestre Resolve] Entenda Contexto de Avaliação com CASE REAL de DAX, Leo criou uma medida em anexo.

Não consegui entender por que no filter, logo debaixo do return, a condição passada via variavel vUltimoMesCompras, funciona se colocamos a variavel ou se colocamos o script da medida, mas não se criamos uma medida e lhe passam.os a mesma.


RETURN
CALCULATE(
    [Compras],
    Filter( 
         all( dcalendario), dcalendario[mes] = vUltimoMesCompras

)

Por exemplo, se ao inves de colocar a variavel vUltimoMesCompras, colocamos diretamente:
Calculate(
   Month ( Max ( fCompras[DataCompra])),
  Filter(
          all(dcalendario),
          dCalendario´Data] <= vDataAtual
)       

De ai a medida funciona, mas se criamos uma medida explicita para vUltimoMesCompra, não retorna nada. Eu achei que podia ser uma questão de transição de contexto, mas, como a medida ja leva um calculate, a transição esta acontecendo, tanto no script direto como na medida.
Achei interessante entender para poder compreender como funcionam os contextos.

Obrigado!

 

Medida.png

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Nesse seu RETURN, ele fez o filter para a calculate percorrer toda a dCalendario e trazer pra você as compras iguais ao último mês.
Você poderia declarar esse código dentro de uma variável, mas como ele já identificou que o resultado que ele precisa está armazenado dentro desse bloco, ele já fez direto e colocou dentro do RETURN.

Espero ter sido claro.

Forte abraço.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 hora atrás, kenzo.takeda disse:

Bom dia,

  No vídeo, o [O Mestre Resolve] Entenda Contexto de Avaliação com CASE REAL de DAX, Leo criou uma medida em anexo.

Não consegui entender por que no filter, logo debaixo do return, a condição passada via variavel vUltimoMesCompras, funciona se colocamos a variavel ou se colocamos o script da medida, mas não se criamos uma medida e lhe passam.os a mesma.


RETURN
CALCULATE(
    [Compras],
    Filter( 
         all( dcalendario), dcalendario[mes] = vUltimoMesCompras

)

Por exemplo, se ao inves de colocar a variavel vUltimoMesCompras, colocamos diretamente:
Calculate(
   Month ( Max ( fCompras[DataCompra])),
  Filter(
          all(dcalendario),
          dCalendario´Data] <= vDataAtual
)       

De ai a medida funciona, mas se criamos uma medida explicita para vUltimoMesCompra, não retorna nada. Eu achei que podia ser uma questão de transição de contexto, mas, como a medida ja leva um calculate, a transição esta acontecendo, tanto no script direto como na medida.
Achei interessante entender para poder compreender como funcionam os contextos.

Obrigado!

 

Medida.png

Mano, cê que saber porque que com a variavel funciona e com o a medida não?

É porque a variavel ela "GRAVA" o valor, não considera contexto. A medida segue a sequência que é escrita, logo ele calcula essa data lá em cima e grava o valor dela e ai ela funciona dentro do filter.
Se você coloca uma medida lá dentro ele vai recalcular aquele valor de acordo com cada contexto que ele tiver inserido, logo esse valor vai ficar sendo alterado sempre e ai dá resultados diferentes.

É o lado bom e ruim de variável, se você usar ela dentro do calculate vai dar "ruim" porque ela não considera o contexto. Mas nesse caso como você realmente quer que ela não considera e não mude essa data faça chuva ou faça sol (obviamente após ela ser calculada) então é o melhor caminho.

Se essa resposta te ajudou, consegue marcar como correta?

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