Aquí está el script simple que crea una nueva columna con una fórmula que calcula la duración desde el comienzo de cada lote

names default to here( 1 );
dt = Current Data Table();
dt << New Column( "Duration",
Format( ":day:hr:m:s", 21, 3 ),
formula(
If( Row() == 1 | :Batch != Lag( :Batch ),
start = :Timestamp
);
:Timestamp - start;
)
);
Hola a todos,
Comencé a usar JSL y actualmente estoy en un nivel principiante.
Mis datos consisten en datos de lotes de series de tiempo para diferentes variables de proceso. Cada lote tiene un intervalo / tiempo de procesamiento de series de tiempo diferente. La resolución de datos es de 1 hora.

Primero, quiero convertir el tiempo de inicio del lote (tiempo real) en tiempo de duración comenzando en el punto cero (0) y luego acumular hasta el final en tiempo real. Creo que me las arreglé para hacer eso usando un script que encontré en línea. Sin embargo, esto solo funciona para el primer lote.
Para el segundo lote, la conversión en tiempo real en tiempo de duración no comienza en el punto de tiempo cero.
Pregunta: ¿Cómo puedo hacer / modificar el script, para que tenga en cuenta cada ID de lote y el tiempo de procesamiento respectivo?
Gracias por adelantado
GUIÓN
names default to here (1);
dt = current data table ();
dt << New Column( "Duration",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == 1, 0, :TimeStamp - :TimeStamp[1] ) / 60
)
);
Esta alternativa utiliza una función incorporada, Col mínimo (x, grupo).

Muchas gracias Mark. Está funcionando muy bien. Feliz Navidad 