Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Assuntos relacionados a criação de medidas, fórmulas e funções DAX, relacionamentos etc
#65170
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.
#65216
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?
#65231
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 )
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord