Creazione di una nuova colonna basata sul raggruppamento di altre colonneCiao a tutti,
Sto cercando di creare una nuova colonna "Stato" che restituirà "Attivo" o "Sostituito" in base alla seguente specifica (parte allegata della tabella con la colonna "Stato" come illustrazione del risultato previsto).
Ogni TOOL e sito può sostituire diversi Sub_Tool nel tempo ed esegue diverse unità con il suo timestamp. Il Sub_Tool più recente per lo specifico strumento e sito dovrebbe ricevere Attivo nella colonna di stato e tutti i precedenti Sub_Tool che erano utilizzati su quello strumento e sito dovrebbero ricevere Sostituito.
Come nell'esempio allegato, lo stesso Sub_Tool potrebbe ripetersi nel tempo ma solo nelle ultime esecuzioni dovrebbe essere contrassegnato come Attivo.
Il file reale ha molti strumenti e ogni strumento ha molti siti, quindi è necessaria una codifica solida.
Il tuo aiuto è molto apprezzato.
Re: Creazione di una nuova colonna basata sul raggruppamento di altre colonneGrazie per il file di test più completo e per aver testato il mio codice iniziale.
Ecco una nuova versione del formato
If( Row() > 1,
If( :TOOL != Lag( :TOOL ) | :SITE != Lag( :SITE ) | Row() == N Rows( Current Data Table() ),
TargetValue = :SUB_TOOL[Row() - 1];
:Active2[Row() - 1] = "Active";
For( i = Row() - 1, i >= 1, i--,
If( :SUB_TOOL[i] == TargetValue,
:Active2[i] = "Active",
Break()
)
);
)
);
If( Row() == N Rows( Current Data Table() ),
"Active",
"Replaced"
);
Dovrai modificare i riferimenti di colonna nel codice di "Active2" con il nome della colonna che stai dando alla colonna.
Ora la mia domanda per te è:
Capisci come funziona la formula?
In caso contrario, è necessario studiare il codice e porre domande sul codice, in modo da comprenderlo e apportare modifiche in futuro che potrebbero essere necessarie.
Re: Creazione di una nuova colonna basata sul raggruppamento di altre colonneGrazie per il tempo dedicato a risolvere questo problema, lo script suggerito restituisce le seguenti intenzioni errate alla colonna creata Sub_Tool_Status:
1. Il valore della riga più recente restituisce Sostituito (la riga 91 del file allegato è contrassegnata in giallo)
2. La riga più recente è vuota (file allegato ultima riga)
2. Quando ci sono più sostituzioni solo l'ultima riga prima della sostituzione rende Sostituita e non aggiorna le righe precedenti (File allegato contrassegnato con due sfumature verdi)
Re: Creazione di una nuova colonna basata sul raggruppamento di altre colonneEcco uno dei diversi modi in cui probabilmente è possibile calcolare la nuova colonna.Basta creare una nuova colonna di caratteri, incollare la formula sottostante nella nuova colonna e modificare i riferimenti in "Attivo2" in qualsiasi sia il nome della nuova colonna che hai creato.
If( Row() > 1,
If( :TOOL != Lag( :TOOL ) | :Site != Lag( :Site ) | Row() == N Rows( Current Data Table() ),
TargetValue = :Sub_Tool[Row() - 1];
:Active2[Row() - 1] = "Active";
For( i = Row() - 2, i >= 1, i--,
If( :Sub_Tool[i] == TargetValue,
:Active2[i] = "Active",
:Active2[i] = "Replaced";
Break();
)
);
)
);
If( Row() == N Rows( Current Data Table() ),
"Active",
"Replaced"
);
Re: Creazione di una nuova colonna basata sul raggruppamento di altre colonneCiao,
La tabella originale avrà molte altre colonne su cui calcolerò le statistiche con Sub_Tool, quindi non solo l'ultima riga deve essere contrassegnata come Acitve ma l'intero batch su cui è stato eseguito l'ultimo Sub_Tool. Allora sì, ne ho bisogno scoprire qual è stato l'ultimo sottostrumento utilizzato per lo strumento e il sito, quindi contrassegnare come attive tutte le righe a quando il sottostrumento cambia.
Re: Creazione di una nuova colonna basata sul raggruppamento di altre colonneDalla mia lettura della tua definizione, posso pensare che la riga 36 sia considerata attiva, ma oltre a vedere che la riga da 28 a 35 ha il valore di salvataggio del sottostrumento, non capisco perché quelle righe dovrebbero essere contrassegnate come attive.
Oppure, quello che vuoi fare è semplicemente scoprire qual è stato l'ultimo sottostrumento utilizzato per lo strumento e il sito, e quindi contrassegnare come attive tutte le righe fino a quando il sottostrumento cambia?????
sono confuso