Ir para conteúdo
  • 0

Ultimo Valor do Registro de cada Dia


Matheus Henrique .
Ir para solução Solucionado por Edson Igari ,

Pergunta

  • Alunos

Fala Pessoal,
Beleza.

Como sempre na jornada de resolver alguns desafios ja resolvidos, mas tentando fazer por conta propria com base nos estudos ate o momento. Esse ja foi um desafio resolvido, porem surgiu outra duvida de contexto estou a pouco mais de 2 dias tentando e tentando.

Basicamente e o seguinte cada dia possui varios registros e preciso sempre do valor do ultimo registro.

 

Como pode ver a solucao 01 ja faz isso, porem a minha e a segunda que tambem esta certinho, porem quando olho o valor total ele me traz o valor maximo do ultimo registro. Dentro do contexto nao esta errado ate porque ele aplica dentro de cada data e para o total ele faz outra coisa. So que o total gostaria que somasse esses valores. Tentei usar a SUMX porem como o resultado esperado e sempre 1890 ela itera para as 50 datas unicas esse mesmo valor e nao o valor maximo de cada registro. Em anexo tem duas solucoes uma da comunica , a solucao 1 que e a minha e a outra e eu teimoso tentando chegar no resultado de uma forma passo a passo que faca mais sentido. Conseguem me dar essa forca de aprendizado.

 image.png.abf89824d668815ab0729da19145e66a.png

Situacao.pbix

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Grande Mestre @Edson Igari
Tudo beleza.

Obrigado e exatamente isso.

Porem me tirar uma duvida por gentileza.

Eu apliquei a SUMX apos o return. De fator contexto entendo que a variavel armazena a medida ja calculada com o resultado e quando eu jogo para o return junto a SUMX nao ocorre a transicao de contexto onde a data e o valor ja calculado se aplica e repete entre as 50 datas.

Por que dentro da variavel nao funciona da mesma forma que quando abro uma nova medida e utilizo a funcao?

Att.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa noite, @Matheus Henrique .;

Quando você abre uma nova medida, e invoca dentro da SUMX, acontece a transição de contexto, medidas naturalmente realizam transição de contexto.

Se você tentar obter o mesmo resultado em uma única medida, você teria que colocar todo o código dentro do SUMX, conforme abaixo:
 

Resultado = 
SUMX(
    VALUES(data[Data]),
    VAR MaiorRegistroData =   
    CALCULATE(
        MAX(data[createdAt]),
        FILTER(
            ALL(data),
            MAX(data[Data]) = data[Data]))

    VAR MaiorValordoRegistro = 
    CALCULATE(
        [mBalance],
            MaiorRegistroData = data[createdAt])

    RETURN
    MaiorValordoRegistro
)

Porém, escrevendo dessa forma ainda não funcionaria por conta de um detalhe. Falta realizar a transição de contexto dentro da SUMX, que na abordagem do Edson, acontece quando você transforma em uma medida, nesse caso acima, basta inserir um CALCULATE:

Resultado = 
SUMX(
    VALUES(data[Data]),
    CALCULATE(
    VAR MaiorRegistroData =   
    CALCULATE(
        MAX(data[createdAt]),
        FILTER(
            ALL(data),
            MAX(data[Data]) = data[Data]))

    VAR MaiorValordoRegistro = 
    CALCULATE(
        [mBalance],
            MaiorRegistroData = data[createdAt])

    RETURN
    MaiorValordoRegistro
    )
)

 

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

  • 0
  • Alunos

Opaa mestre @Erick Oliveira
Obrigado mais uma vez ae por sempre fortalecer nos contextos.

Inclusive foi ate um dos conceitos que me explicou sobre o funcionamento da max dentro de fora de uma funcao iteradora, devido a essa transicao de contexto.

Entao nesse caso eu preciso passar por completo a variavel dentro para que isso aconteca dentro da interadora caso use o meio de ter tudo em uma unica medida. Se eu calcular em uma variavel fora e trazer pronto, vai funcionar mais nao vai iterar devido a falta de transicao de contexto.

Agora ta claro, obrigdao mesmo.

Tmj.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
2 horas atrás, Erick Oliveira disse:

Boa noite, @Matheus Henrique .;

Quando você abre uma nova medida, e invoca dentro da SUMX, acontece a transição de contexto, medidas naturalmente realizam transição de contexto.

Se você tentar obter o mesmo resultado em uma única medida, você teria que colocar todo o código dentro do SUMX, conforme abaixo:
 

Resultado = 
SUMX(
    VALUES(data[Data]),
    VAR MaiorRegistroData =   
    CALCULATE(
        MAX(data[createdAt]),
        FILTER(
            ALL(data),
            MAX(data[Data]) = data[Data]))

    VAR MaiorValordoRegistro = 
    CALCULATE(
        [mBalance],
            MaiorRegistroData = data[createdAt])

    RETURN
    MaiorValordoRegistro
)

Porém, escrevendo dessa forma ainda não funcionaria por conta de um detalhe. Falta realizar a transição de contexto dentro da SUMX, que na abordagem do Edson, acontece quando você transforma em uma medida, nesse caso acima, basta inserir um CALCULATE:

Resultado = 
SUMX(
    VALUES(data[Data]),
    CALCULATE(
    VAR MaiorRegistroData =   
    CALCULATE(
        MAX(data[createdAt]),
        FILTER(
            ALL(data),
            MAX(data[Data]) = data[Data]))

    VAR MaiorValordoRegistro = 
    CALCULATE(
        [mBalance],
            MaiorRegistroData = data[createdAt])

    RETURN
    MaiorValordoRegistro
    )
)

 

Eu ia tentar explicar, mas o mestre @Erick Oliveira é muito melhor que eu nisso rs. Matou a pau

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