Página 1 de 1

Buscar o ID do ultimo dia do mês e data mais recente

Enviado: 14 Jun 2021 às 11:03
por RafaelPrestes
Bom Dia a todos.

Estou com uma grande dificuldade (ao menos no meu ponto de vista) para conseguir extrair uma informação no PBI e agradeço muito se alguém puder me ajudar.

Em resumo, eu preciso apresentar o saldo do estoque do produto em alguns cenários. Esse saldo é mensal, ou seja, quanto o produto tinha de estoque no ultimo dia do mês de Janeiro, Fevereiro, etc. Caso o mês não esteja finalizado deve mostrar o saldo da data da atualização do PBI.

A informação do saldo do item está em meu modelo em uma tabela chamada fTransasald, que é uma consulta feita no EPR. Abaixo uma imagem dos dados que essa tabela contem.
https://imgur.com/vKWbzMg

Note que nesta imagem eu destaquei 2 campos importantes, a Data e o ID. A informação do saldo de cada item no ultimo dia de cada mês, sempre no registro do ultimo dia deste mês (ou data mais próxima do ultimo dia) e com o Maior ID. Então se existirem 3 registros com data 31/01/2021, o registro com maior ID deste item e data é onde estará o saldo do produto, na coluna SALQTDEFILIAL.

Para tentar resolver esse problema eu fiz o seguinte. Primeiro criei uma nova tabela usando a função SUMMARIZE afim de agrupar os itens com data e id. Abaixo imagem desta tabela.
https://imgur.com/7Wfn4gw

Além desta função adicionei mais 3 novas colunas:
AnoMes = YEAR('Summarize saldos estoque'[DATATRANSACAO])&"-"&MONTH('Summarize saldos estoque'[DATATRANSACAO])
SaldoQtdFilial = LOOKUPVALUE(fTransasald[SALQTDEFILIAL],fTransasald[ID],'Summarize saldos estoque'[maiorID])
ValorEstFilial = LOOKUPVALUE(fTransasald[SALVALESTFILIAL],fTransasald[ID],'Summarize saldos estoque'[maiorID])

Essa novas colunas servem para serem utilizadas então em outra nova tabela que faz um novo SUMMARIZE destas informações, agora agrupando pelo MAX(DataTransação) para ter as informações de saldo e valor sempre do ultimo dia de cada mês. Abaixo imagem desta tabela.
https://imgur.com/hQ8AYoC

Então é ai que está meu problema. Note que para esse produto que peguei como exemplo (144p) ele tem uma data de saldo no dia 31/01/2021 com o ID 1666489. Esse ID é o maior do mês 01/2021 mas do dia errado.

Nas funções summarize que estão sendo executas o PBI está trazendo, no dia 31/01/2021, o ID 1666489 que pertence a outro dia (no caso deste item dia 30/01/2021) porque o ID que está neste dia é maior que o ID do dia 31. Isso ocorre porque no ERP houve uma movimentação de estoque com data retroativa. Ai o ERP gravou um ID maior para uma data menor.

Neste item o correto seria apresentar para dia 31/01/2021 o ID 1666474 e ai assim as minhas informações da quantidade e saldo ficariam corretas.

O que eu preciso é ajustar isso, fazer buscar o ID correto (maior ID) para a ultima data (maior data) de cada mês, por item.

Espero ter conseguido me expressar para explicar o problema.

Novamente agradeço a quem puder me ajudar.

Abraços.
Att, Rafael.

Re: Buscar o ID do ultimo dia do mês e data mais recente

Enviado: 14 Jun 2021 às 17:30
por Vilmar
teste:
Código: Selecionar todos
Saldo = 
CALCULATE (
    SUM ( fTabela[Salqtdefilial] );
    FILTER (
        ALL ( fTabela );
        fTabela[Data] = MAX ( fTabela[Data] ) && 
        fTabela[ID] = MAX ( fTabela[ID] )
    )
)

Re: Buscar o ID do ultimo dia do mês e data mais recente

Enviado: 16 Jun 2021 às 08:45
por RafaelPrestes
Bom Dia Vilmar,

Obrigado pelo retorno. Eu já havia feito algo neste sentido mas infelizmente o resultado não é o esperado.

Veja na imagem que eu fiz a formula conforme seu modelo. Perceba no resultado que para o mês de janeiro não vem nenhuma informação para este produto que filtrei.
https://imgur.com/THuc4F5

Isso acontece porque o PBI não encontra o MAX ID para a MAX DATA, justamente porque para esse produto de exemplo o maior ID está no dia 30/01 e não no dia 31/01.
https://imgur.com/jO1MfkJ

Deve ter alguma forma de resolver isso certo?

Re: Buscar o ID do ultimo dia do mês e data mais recente

Enviado: 16 Jun 2021 às 22:16
por Vilmar
Tente esta medida:
Código: Selecionar todos
Saldo =
VAR Var1 =
    FILTER (
        ALL ( fTabela ),
        fTabela[Data] = MAX ( fTabela[Data] )
            && fTabela[ID] = MAX ( fTabela[ID] )
    )
VAR Var2 =
    MAXX (
        FILTER (
            ALL ( fTabela ),
            fTabela[Data] = MAX ( fTabela[Data] )
                && fTabela[ID] <> MAX ( fTabela[ID] )
        ),
        fTabela[ID]
    )
VAR Var3 =
    CALCULATE ( SUM ( fTabela[Salqtdefilial] ), Var1 )
VAR Var4 =
    CALCULATE ( SUM ( fTabela[Salqtdefilial] ), fTabela[ID] = Var2 )
RETURN
    IF ( Var3 <> BLANK (), Var3, Var4 )

Re: Buscar o ID do ultimo dia do mês e data mais recente

Enviado: 01 Jul 2021 às 15:49
por RafaelPrestes
Boa Tarde Vilmar.

Usando essa sua solução consegui resolver aqui o problema. Foi preciso apenas retirar o ALL que estava ali e então a condição de modo geral trouxe os dados corretamente.

Deixo aqui meu Muito Obrigado pela ajuda.

Abraços.