Hallo
Ich habe eine Tabelle mit Prozessschritten und Prozesszeiten für verschiedene IDs. Allerdings kommen einige meiner Prozessschritte pro ID mehrfach im Prozess vor. Ich möchte eine Spalte erstellen, die alle Prozessschritte entweder in „Synthese“ oder „Verarbeitung“ unterteilt. Diese Gruppen würden danach bestimmt, ob sie vor oder nach einem anderen Prozessschritt auftreten.
Ich möchte, dass die Formel die Zeit des Spawn-Schritts FÜR JEDE ID ermittelt und sie mit allen anderen Prozessschrittzeiten für diese ID vergleicht.
Ich habe versucht, eine Art Schleife zu verwenden, aber ich bin neu im Skripting und Schleifen sind sehr verwirrend!
Gibt es eine Möglichkeit, dies zu tun???
Was ich habe, sieht zum Beispiel so aus und ich möchte die Spalte „Kategorie“ hinzufügen.
| AUSWEIS | Prozessstufe | Prozess Zeit | Kategorie |
| 10 | Trocknen | 9:00 | Synthese |
| 10 | Gespawnt | halb 10 | Synthese |
| 10 | Trocknen | 10:00 | wird bearbeitet |
| 10 | Fertig | 11:00 | wird bearbeitet |
| 11 | Trocknen | 2:00 | Synthese |
| 11 | Gespawnt | 2:30 | Synthese |
| 11 | Trocknen | 2:45 | wird bearbeitet |
| 11 | Fertig | 4:00 | wird bearbeitet |
| 12 | Trocknen | halb 8 | Synthese |
| 12 | Gespawnt | 7:45 | Synthese |
| 12 | Trocknen | 8:00 | wird bearbeitet |
| 12 | Fertig | 9:00 | wird bearbeitet |
Irgendwelche Ideen??
Danke schön!
Dieses Skript scheint das zu sein, was Sie wollen. Es könnte in eine Formel umgewandelt werden, wenn Sie das vorziehen würden
Names Default To Here( 1 );
dt = New Table( "Untitled 13",
Add Rows( 12 ),
New Column( "ID",
Character,
"Nominal",
Set Values( {"10", "10", "10", "10", "11", "11", "11", "11", "12", "12", "12", "12"} )
),
New Column( "Process Step",
Character( 16 ),
"Nominal",
Set Values(
{"Drying", "Spawned", "Drying", "Finished", "Drying", "Spawned", "Drying", "Finished", "Drying", "Spawned", "Drying",
"Finished"}
)
),
New Column( "Process Time",
Numeric,
"Nominal",
Format( "h:m", 12 ),
Input Format( "h:m" ),
Set Values( [32400, 34200, 36000, 39600, 7200, 9000, 9900, 14400, 27000, 27900, 28800, 32400] )
)
);
dt << New Column( "Category", Character );
For( i = 1, i <= N Rows( dt ), i++,
currID = dt:id[i];
If( i == 1,
spawnTime = dt:Process Time[(dt << get rows where( dt:id == currID & dt:Process Step == "Spawned" ))[1]]
);
If( i > 1,
If( dt:ID[i] != dt:ID[i - 1],
spawnTime = dt:Process Time[(dt << get rows where( dt:id == currID & dt:Process Step == "Spawned" ))[1]]
)
);
If( dt:Process Time[i] <= spawnTime,
dt:Category[i] = "Synthesis",
dt:Category[i] = "Processing";
);
);
Das Skript geht davon aus, dass die Daten nach ID sortiert sind. Wenn jedoch die spawnTime für jede Schleife durch die Daten neu berechnet würde, müsste die Tabelle nicht sortiert werden. Es würde das Skript verlangsamen, die SpawnTime in jeder Schleife zu berechnen, aber das könnte ein Kompromiss sein, den Sie eingehen möchten.