Rimuovi le righe duplicate usando TimestampCiao,
Ho una tabella di dati di esempio allegata in cui sto cercando di rimuovere le righe duplicate all'interno del set di dati utilizzando le colonne TimeStamp, Tool.
Criteri per la duplicazione:
I timestamp che si trovano entro 6 minuti sullo stesso strumento sono considerati duplicati e tali righe devono essere rimosse.
Qualcuno può aiutare come questo può essere ottenuto in JSL?
Grazie!
@txnelson
AnalisiTabella datiScriptingfinestreRe: Rimuovere le righe duplicate usando TimestampCredo che questo ti darà un esempio su come procedere con il tuo problema
Names Default To Here( 1 );
dt = Current Data Table();
// Loop through the data table deleting all duplicate rows
i = 1;
While( i <= N Rows( dt ),
// Find the upper and lower bounds to match on
lower = :timeStamp[i] - In Minutes( 6 );
upper = :timeStamp[i] + In Minutes( 6 );
// Find the rows that match
theRows = dt << get rows where( :timeStamp > lower & :timeStamp < upper );
// Remove the current row from the list. We do not want to delete it
Try( theRows[1] = [] );
// Delete the remaining rows
Try( dt << delete rows( theRows ) );
// Increment the row to work on
i++;
);
Re: Rimuovere le righe duplicate usando TimestampCiao @psundar6 ,
@txnelson fornisce un'ottima soluzione.
Un approccio alternativo che utilizza l'ordinamento delle tabelle e la formula delle colonne potrebbe essere eseguito in modo interattivo o tramite script come segue:
dt = current data table();
dt << Sort(
By( :TimeStamp, :Tool ),
Replace Table,
Order( Ascending, Ascending )
);
dt << New Column( "to delete",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Formula( If( :Tool == Lag( :Tool, 1 ) & Date Difference( Lag( :TimeStamp, 1 ), :TimeStamp, "Minute" ) > 6, 1, 0 ), eval formula )
);
dt:to delete << suppress eval(true);
dt<< delete rows (dt<< get rows where (:to delete == 1));
facci sapere se ti funziona.
Re: Rimuovere le righe duplicate usando TimestampCiao Ron,
Ho provato la tua soluzione e vedo un problema con il risultato.
Ho allegato il risultato dell'esecuzione del codice. Sembra che non stia catturando un paio di voci duplicate per qualche motivo.
Grazie.