Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Controle de Vidas - Pneu - Setando dados por evento

Olá, bom dia!

Tudo bem?

Estou com uma solicitação da área de negócio de realizar o controle de pneus por "Km Rodado por Vida", nisso teria que gerar uma coluna condicional no banco tratando no histórico em que vida o pneu se encontra na "data do evento", tipo ele começar com a vida "1" e quando chegar no evento "10" ele muda para vida "2" e assim incrementando conforme tendo esse evento.

Então a forma que pensei para isso seria gerar uma coluna condicional que começaria com "1" e mudaria conforme o evento "10"(Reforma) para incrementar mais uma vida.

Segue exemplo que queria realizar em SQL coluna "VIDA":

Resultado Desejado coluna "Vida"

Ex: Segue uma imagem do sistema gerando a informação de KM Rodado por Vida

Imagem Sitema Controle de Km por Vida

No Banco de dados ele só tem uma de tabela de pneu que informa somente em que vida está o Pneu no momento atual e para chegar nisso teria que aplicar uma regra

Histórico de Pneus

Tabela: Histpneu (Com movimentações na Histórico de Pneus)

Tabela Pneu com o número da Vida Atual Pneu

Tabela: Pneu

Eu utilizei a função LAG para chegar na condição, mas não obtive sucesso para esse resultado agora desejado.

https://datatuning.com.br/blog/t-sql-tip-02-funcao-lead-e-lag/

Att,

Mateus Silva.

1 resposta
solução!

Olá, bom dia!

Resolvido com um código de python a coluna "Vida":

df = df.sort_values(['CD_PNEU', 'DH_EVENTO']) df = df.reset_index()

df['inicioPneu'] = df.groupby('CD_PNEU').cumcount() df['inicioPneu'] = df['inicioPneu'].map(lambda x: 1 if x==0 else np.nan)

df['Vida'] = df[df['CD_EVENTO']==10].groupby('CD_PNEU').cumcount() + 2

df['Vida'] = df['Vida'].combine_first(df['inicioPneu'])

df['Vida'] = df['Vida'].ffill() df = df.drop(columns='inicioPneu')

Att,