Ir para conteúdo
  • 0

Pegar o ultimo registro no contexto de linha


Ir para solução Solucionado por Alex Pereira ,

Pergunta

  • Alunos
Postado

Olá Senhores!

Estou com o desafio de pegar o ultimo registro da tabela de ocorrências e esse registo possa ser retornado no contexto de linha da tabela de conhecimentos.

O ambiente é composto por duas tabelas, fConhecimentos fOcorrencias

 Na tabela fConhecimentos e tenho a primeira ocorrência do conhecimento, e conforme a movimentação da carga, é feito os lançamentos das ocorrências.

Preciso saber se existe alguma ocorrência lançada na tabela fOcorrencias, 

Se sim, que retorne qual o código da ocorrência mais atual com base da data e hora. 

Vou pegar como exemplo o CTE 551200315. Sim ele tem ocorrências e o ultimo registro é o código 303 que foi no dia 14/10/23 as 14:00 (Nesse dia teve dois registros).

Gostaria que retornasse conforme imagem em anexo.

image.png.fcc81c24cb01a425aa54d928384b9aa1.png

Se existe, eu consegui identificar e também consegui saber qual é a quantidade de ocorrências que existe da tabela fOcorrencias.

image.png.695ad1a79e426bcc173ec829a6d2a340.png

Falta agora é saber qual é a ultima ocorrência lançada.

Muito obrigado pela atenção e ajuda. 

 

 

Ultima_ocorrencia.zip

11 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Postado

Experimente essa nova versão

 

Ult Ocorrencia = 
VAR v_DataFinal = 
    CALCULATE (
        MAX (f930[DT_HR]),
        ALLEXCEPT (f930, f930[CTE]), 
        f930[CTE] = EARLIER(f455[CTE]) 
    )
VAR v_Resultado = 
    CALCULATE (
        MAX (f930[COD_OCO]),
        ALLEXCEPT (f930, f930[CTE]), 
        f930[DT_HR] = v_DataFinal,
        f930[CTE] = EARLIER(f455[CTE]) 
    )
RETURN
    IF (
        NOT (ISBLANK (v_DataFinal)),
        v_Resultado,
        BLANK()
    )

 

  • 0
  • Alunos
Postado

O que você terá que fazer é uma forma de ligar sua fato ocorrencias com a fato_conhecimentos. Feito isso, o que você fara:



 

Ult Ocorrencia = 
VAR v_Data Final = MAX(f_occorencias[DATA])

VAR v_Resultado = 
CALCULATE(
     MAX(f_ocorrencia[COD_OCORR]),
    f_ocorrencia[DATA] = v_Data Final
)

RETURN
    v_Resultado

 

  • 0
  • Alunos
Postado
58 minutos atrás, Alex Pereira disse:

@Alex Pereira, obrigado pela ajuda, funcionou, mas só está aparecendo para o 551200315, e preciso que mostre para os cte 551200305 e 551200310.

image.png.4e3b8203cca8f95956c28c3f551deb15.png

Pra o cte 551200305 a ultima ocorrência é a 301

Pra o cte 551200310 a ultima ocorrência é a 302

Pra o cte 551200315 a ultima ocorrência é a 303

Abaixo a legenda pra ajudar na identificação 

image.png.33a056d9bd6a7ae1da704c96f6493fdf.png

 

 

O que você terá que fazer é uma forma de ligar sua fato ocorrencias com a fato_conhecimentos. Feito isso, o que você fara:



 

Ult Ocorrencia = 
VAR v_Data Final = MAX(f_occorencias[DATA])

VAR v_Resultado = 
CALCULATE(
     MAX(f_ocorrencia[COD_OCORR]),
    f_ocorrencia[DATA] = v_Data Final
)

RETURN
    v_Resultado

 

image.png

  • 0
  • Alunos
Postado
10 minutos atrás, Alex Pereira disse:

Tente isso:

 

Ult Ocorrencia = 
VAR v_DataFinal = MAX(fOcorrencias[DATA])
VAR v_Resultado = 
CALCULATE(
    MAX(fOcorrencias[COD_OCO]),
    fOcorrencias[DATA] = v_DataFinal
)
RETURN
    v_Resultado

 

@Alex Pereira essa estrutura é igual a da primeira postagem.

  • 0
  • Alunos
Postado

Você quer dessa forma?


`

Ult Ocorrencia = 
VAR v_DataFinal = MAX(fOcorrencias[DATA])
VAR v_Resultado = 
CALCULATE(
    MAX(fOcorrencias[COD_OCO]),
    fOcorrencias[DATA] = v_DataFinal
)
RETURN
    IF(
        v_DataFinal <> BLANK(), 
        v_Resultado,
        ""
    )




image.png.d3426ae3908f2425b2a84663fafe093f.png

  • 0
  • Alunos
Postado
18 minutos atrás, Alex Pereira disse:

Tente isso:

 

Ult Ocorrencia = 
VAR v_DataFinal = MAX(fOcorrencias[DATA])
VAR v_Resultado = 
CALCULATE(
    MAX(fOcorrencias[COD_OCO]),
    fOcorrencias[DATA] = v_DataFinal
)
RETURN
    v_Resultado

 

Essa medida esta funcionando mas ela traz ps valores somente dos ctrc's que tiveram ocorrencia

  • 0
  • Alunos
Postado
56 minutos atrás, Alex Pereira disse:

Você quer dessa forma?


`

Ult Ocorrencia = 
VAR v_DataFinal = MAX(fOcorrencias[DATA])
VAR v_Resultado = 
CALCULATE(
    MAX(fOcorrencias[COD_OCO]),
    fOcorrencias[DATA] = v_DataFinal
)
RETURN
    IF(
        v_DataFinal <> BLANK(), 
        v_Resultado,
        ""
    )




image.png.d3426ae3908f2425b2a84663fafe093f.png

@Alex PereiraFuncionou! Mas eu preciso que seja uma coluna calculada e não uma medida.

  • 0
  • Alunos
Postado

Verifica se isso te atende:

 

Ult Ocorrencia = 
VAR v_DataFinal = 
    CALCULATE (
        MAX (fOcorrencias[DATA]),
        FILTER (
            ALL (fOcorrencias), 
            fOcorrencias[CTE] = EARLIER(fConhecimentos[CTE] )
        )
    )
VAR v_Resultado = 
    CALCULATE (
        MAX (fOcorrencias[COD_OCO]),
        FILTER (
            fOcorrencias,
            fOcorrencias[DATA] = v_DataFinal
        )
    )
RETURN
    IF (
        NOT (ISBLANK (v_DataFinal)),
        v_Resultado,
        BLANK()
    )





image.png.9a02f5c37b9bbbb00541ab2a5dc69788.png

  • 0
  • Alunos
Postado

@Alex Pereira, deu certo na base de teste, mas ao colocar a função na base de produção para alguns conhecimentos o código da ocorrência ficou diferente.

Exemplo: ABCXYS381922-11

Conforme imagem abaixo a função Ult Ocorrencia está mostrando a ocorrência 83, nesse caso deveria mostra a ocorrência 82 da tabela de ocorrência.

image.png.18c7e63e325c924c6e3afc4db8d5e5c8.png

Como na tabela de ocorrência tem data e hora, adicionei uma coluna no Power Query (DT_HR) pra identificar o ultimo lançamento.

DT_HR = Number.From([DATA])+Number.From([HORA])

Em anexo base de dados e o PBIX de teste.

Desde já agradeço pela atenção.

Ultima_ocorrencia_PRO.zip

  • 0
  • Alunos
Postado
Em 09/10/2023 em 08:43, Alex Pereira disse:

Experimente essa nova versão

 

Ult Ocorrencia = 
VAR v_DataFinal = 
    CALCULATE (
        MAX (f930[DT_HR]),
        ALLEXCEPT (f930, f930[CTE]), 
        f930[CTE] = EARLIER(f455[CTE]) 
    )
VAR v_Resultado = 
    CALCULATE (
        MAX (f930[COD_OCO]),
        ALLEXCEPT (f930, f930[CTE]), 
        f930[DT_HR] = v_DataFinal,
        f930[CTE] = EARLIER(f455[CTE]) 
    )
RETURN
    IF (
        NOT (ISBLANK (v_DataFinal)),
        v_Resultado,
        BLANK()
    )

 

Deu certo @Alex Pereira, muito Obrigado!

Vou falar com o @Leonardo Karpinski, e indicar você para sentar na cadeira dos Incomparáveis. 

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...