Secuencia de comandos para hacer una suma acumulativa hasta alcanzar cierto límiteMi tabla de datos comienza con 3 columnas, Fecha, Test_Qty y Fail_Qty.
Estoy creando un script para 2 columnas nuevas, Cumulative_Sum_Test_Qty y Cumulative_Fail_Qty.
En la columna Cumulative_Sum_Test_Qty, la cantidad de prueba es la suma acumulativa de las filas actuales a la fila anterior para cumplir con 300 qty para formar un lote de datos.
En Cumulative_Sum_Fail_Qty, la cantidad de fallas es la suma acumulativa de la fila actual a las filas anteriores correspondientes a la cantidad acumulada de prueba que se lleva a cabo.
Me quedo atascado al crear el script para la suma acumulativa de ambas columnas.
¿Alguien puede brindar ayuda aquí?
ScriptingRe: Script para hacer suma acumulativa hasta alcanzar cierto límiteHe aquí una solución. Supongo que tan pronto como supere los 300, reiniciará. Si necesita detenerse antes de superar los 300, el cambio de lógica es bastante simple.
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Cumulative_Sum_Test_Qty" );
dt << New Column( "Cumulative_Sum_Fail_Qty" );
dt:Cumulative_Sum_Test_Qty[1] = dt:Test_Qty[1];
dt:Cumulative_Sum_Fail_Qty[1] = dt:Fail_Qty[1];
holdTest = dt:Test_Qty[1];
holdFail = dt:Fail_Qty[1];
For( theRow = 2, theRow <= N Rows( dt ), theRow++,
If( dt:Cumulative_Sum_Test_Qty[theRow - 1] > 300,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Fail_Qty[theRow];
,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Cumulative_Sum_Test_Qty[theRow - 1] + dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Cumulative_Sum_Fail_Qty[theRow - 1] + dt:Fail_Qty[theRow];
)
);
Re: Script para hacer suma acumulativa hasta alcanzar cierto límiteGracias Jim.
Lo que necesitaba es que después de superar los 300, en la siguiente fila, se vuelva a realizar una nueva suma acumulativa hasta superar los 300, ...
Es una especie de suma acumulativa retroactiva ... Aquí es donde me quedo atascado.

Re: Script para hacer suma acumulativa hasta alcanzar cierto límiteOK ..... Agradezco la definición más clara. El siguiente script parece funcionar con sus datos de prueba
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Cumulative_Sum_Test_Qty" );
dt << New Column( "Cumulative_Sum_Fail_Qty" );
dt:Cumulative_Sum_Test_Qty[1] = dt:Test_Qty[1];
dt:Cumulative_Sum_Fail_Qty[1] = dt:Fail_Qty[1];
holdTest = dt:Test_Qty[1];
holdFail = dt:Fail_Qty[1];
For( theRow = 2, theRow <= N Rows( dt ), theRow++,
If( dt:Cumulative_Sum_Test_Qty[theRow - 1] > 300,
holdTest = :Test_Qty[theRow];
holdFail = :Fail_Qty[theRow];
curRow = theRow;
While( holdTest < 300,
curRow = curRow - 1;
holdTest = holdTest + :Test_Qty[curRow];
holdFail = holdFail + :Fail_Qty[curRow];
);
dt:Cumulative_Sum_Test_Qty[theRow] = holdTest;
dt:Cumulative_Sum_Fail_Qty[theRow] = holdFail;
,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Cumulative_Sum_Test_Qty[theRow - 1] + dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Cumulative_Sum_Fail_Qty[theRow - 1] + dt:Fail_Qty[theRow];
)
);