Wie platziere ich mithilfe von JSL Werte in Datentabellenzellen?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich bin relativ neu bei JSL, aber ich habe mehrere Skripte geschrieben, um Prozesse zum Generieren von Tabellen und Diagrammen zu verwalten und zu testen, ob ein von uns erstelltes Softwareprodukt ordnungsgemäß Ergebnisse meldet. Eines der Probleme, die ich jetzt habe, ist, dass ich ein Diagramm erstellen muss, das die gemeldeten Zeiten anzeigt (einfach), aber auch die Residuen aus der Berichtszeitspanne in zukünftige Zeitspannen widerspiegelt.
Ich muss beispielsweise ein Wartezeitdiagramm erstellen, bei dem die X-Achse von Mitternacht bis Mitternacht mit diskreten 15-Minuten-Zeitintervallen verläuft. Ich habe einen Datensatz, der Wartezeiten meldet, und ich speichere die Zeit, zu der die Wartezeit beginnt. Der Einfachheit halber wähle ich eine Zeile aus, in der eine Wartezeit von 90 Minuten für einen Agenten gemeldet wird, der um 9:05 Uhr einen Standort betritt. Der Zeitbereich für diese Wartezeit ist 9:00 Uhr. Die Wartezeit von 90 Minuten wird gemeldet und im Diagramm im Zeitbereich 9:00 Uhr angezeigt. In einem herkömmlichen Diagramm wären alle anderen Zeiten Null, da alle anderen Daten ausgeschlossen wurden. In Wirklichkeit sollte das Diagramm jedoch die Wartezeit dieses Agenten über mehrere Zeitintervalle hinweg zeigen, bis die Wartezeit Null ist. Was ist effektiv die minimale Wartezeit, mit der die nächste Person, die den Standort betritt, rechnen muss, wenn sie am Standort hinter dem wartenden Agenten zu einem beliebigen Zeitpunkt ankommt, in dem sich der aktuelle Agent noch in der Warteschlange befindet?
Ich muss also eine Matrix aller Zeiten mit Werten von Null in den Zeitintervallen erstellen, mit Ausnahme der unten aufgeführten.
Zeitbehälter Wartezeit
9:00 Uhr 90 Min
9:15 Uhr 80 Min
9:30 Uhr 65 Min
9:45 Uhr 50 Min
10:00 Uhr 35 Min
10:15 Uhr 20 Min
10:30 Uhr 5 Min
Ich habe bereits ein Skript, das die Spalten für jede Zeitspanne nach der letzten Spalte der Datentabelle generiert, und ich habe festgestellt, dass dies auf die Anzahl der beteiligten Bedingungen und die Tatsache zurückzuführen ist, wo, wann und wie oft Wartezeiten ungleich Null auftreten Wenn die Verwendung von Spaltenformeln zu kompliziert wäre, wenn dies überhaupt möglich wäre, wäre dies eine beliebige Zeile der Matrix. Deshalb hatte ich gehofft, dass es eine Methode gibt, einzelne Zellen zu füllen, sodass ich verschachtelte Schleifen verwende, um jede Zeile jeder Spalte in der Matrix zu durchlaufen und zu bestimmen, welcher Wartezeitwert darin platziert werden sollte.
Meine andere Option, die ich sehr bevorzugen würde, wäre, eine neue Datentabelle zu erstellen, die untergeordnete Datensätze enthält, um die Überlaufdaten zu verarbeiten. Eine Teilmenge der Datentabelle besteht beispielsweise aus den folgenden vier Zeilen:
| Agenten-ID | Standort | Tag | Eintrittszeit | Austrittszeit | Mindestlaufzeit | Wartezeit | Zeitbehälter |
|---|
184 | Ausgangswarteschlange | 1 | 7:10:24 Uhr | 7:10:24 Uhr | 0 | 0 | 7:00 UHR VORMITTAGS |
| 185 | FIS-Eintritt | 1 | 6:41:38 Uhr | 6:41:38 Uhr | 0 | 0 | 6.30 VORMITTAGS |
| 185 | Besucherwarteschlange | 1 | 6:41:38 Uhr | 7:00:51 Uhr | 0 | 1153 | 6.30 VORMITTAGS |
| 185 | Gepäckausgabe | 1 | 7:01:59 Uhr | 7:01:59 Uhr | 0 | 0 | 7:00 UHR VORMITTAGS |
Das Skript scannt jede Zeile in der Originaltabelle und kopiert sie in die neue Datentabelle. In der dritten Zeile im obigen Beispiel ist die Gesamtwartezeit, 1153 s, länger als die Zeit, die in der Zeitspanne 6:30 Uhr mit Warten verbracht wurde: 6:45 Uhr Zeitspanne - 6:41:38 Uhr Warteschlangeneintrittszeit - 0 s Warteschlangenlaufzeit = 202 s Wartezeit im Zeitintervall 6:30 Uhr. Die neue Datentabelle würde also untergeordnete Zeilen hinzufügen, was dazu führt, dass der oben gezeigte Bereich der Datentabelle wie folgt aussieht:
| Agenten-ID | Standort | Tag | Eintrittszeit | Austrittszeit | Mindestlaufzeit | Wartezeit | Zeitbehälter |
|---|
| 184 | Ausgangswarteschlange | 1 | 7:10:24 Uhr | 7:10:24 Uhr | 0 | 0 | 7:00 UHR VORMITTAGS |
| 185 | FIS-Eintritt | 1 | 6:41:38 Uhr | 6:41:38 Uhr | 0 | 0 | 6.30 VORMITTAGS |
| 185 | Besucherwarteschlange | 1 | 6:41:38 Uhr | 7:00:51 Uhr | 0 | 1153 | 6.30 VORMITTAGS |
| 185 | Besucherwarteschlange | 1 | 6:41:38 Uhr | 7:00:51 Uhr | 0 | 951 | 6:45 Uhr |
| 185 | Besucherwarteschlange | 1 | 6:41:38 Uhr | 7:00:51 Uhr | 0 | 51 | 7:00 UHR VORMITTAGS |
| 185 | Gepäckausgabe | 1 | 7:01:59 Uhr | 7:01:59 Uhr | 0 | 0 | 7:00 UHR VORMITTAGS |
Die kursiv gedruckten Zeilen sind die untergeordneten Zeilen für Agent 185 in der Besucherwarteschlange und zeigen die verbleibenden Wartezeiten an, bis Agent 185 keine Wartezeit mehr in der Besucherwarteschlange hat. Ich könnte diese Tabelle dann verwenden, um das Diagramm zu erstellen, das ich benötige, da die untergeordneten Datensätze die zusätzlich benötigten Daten liefern würden.
Wenn jemand eine Methode für eine dieser Lösungen bereitstellen kann, wäre ich sehr dankbar.
Betreff: Wie platziere ich mithilfe von JSL Werte in Datentabellenzellen?Danke Ron.
Das ist gut zu wissen. Diese Zeilen schienen irrelevant zu sein, aber da JSL eine Skriptsprache ist und ich gerade erst angefangen habe, meine eigenen Skripte zu verfassen, nutze ich die Skriptfunktionen von JMP tatsächlich schon seit einigen Jahren, aber hauptsächlich habe ich Skripte von einer Plattform in einer Datentabelle gespeichert und bei Bedarf ein paar Optimierungen vorgenommen – ich war mir nicht sicher, ob oder was es in Bezug auf das Hinzufügen der Zeilen bewirkte. Zuerst hatte ich die verrückte Vermutung, dass es etwas mit dem Vorabfüllen der Zeilen zu tun haben könnte, und mir wurde klar, dass „Zeile hinzufügen“ dies auf undokumentierte Weise tat.
Apropos, laut JMP Scripting Guide: Zeilen hinzufügen ( Nummer ) fügt das angegebene hinzu Nummer von Zeilen, aber die innere Schleife fügt basierend auf Ihrer Ereignisdauer jeweils eine neue Zeile hinzu und kopiert die Spaltenwerte in der Quellzeile, die als Liste in enthalten sind rowi , in die neue Zeile. Ein großes Lob an Sie, dass Sie diese undokumentierte Funktion herausgefunden haben. Dies war einer der Gründe, warum ich steckengeblieben bin, da ich über beträchtliche Programmiererfahrung verfüge und oft eine neue Sprache herausfinden kann, solange die Syntax gut dokumentiert ist. In der JMP-Dokumentation habe ich keinen Hinweis darauf gefunden, dass die Funktion „Zeilen hinzufügen“ eine Variable akzeptieren kann, die die Liste der Spaltenwerte für eine bestimmte Zeile als Parameter enthält.
Betreff: Wie platziere ich mithilfe von JSL Werte in Datentabellenzellen?Hallo MD,
Ich freue mich, dass mein Skript für Sie von Nutzen war. Als ich es schrieb, war das Add-In nicht verfügbar.
bezüglich des z; Ich habe es gerade überprüft und es ist nicht notwendig. Die Schleife sollte auch ohne funktionieren. Früher dachte ich, dass man das z in der for-Schleife haben muss, damit die Schleife zählt, wie oft sie durchlaufen wird.
Beim Testen des Skripts hat es mir geholfen, seine Aktion zu steuern, da die Nummer der Schleife jederzeit verfügbar war.
Am besten,
Ron.
Betreff: Wie platziere ich mithilfe von JSL Werte in Datentabellenzellen?Frage.
Im Codeblock, in dem Sie basierend auf der Ereignisdauer neue Zeilen erstellen,
Für ( ich = 1 , ich <= ReiheN , ich ++,
rowi = dt << Reihe bekommen ( ich ) ;
Für ( z = 1 , z <= ( : Name ( „Veranstaltungsdauer“ )[ ich ] - 1 ) , z ++,
z ;
dt << Zeile hinzufügen ( rowi ) ;
dt << Formeln ausführen ;
) ;
) ;
Was bedeutet die Zeile, die gerade ist? z ; Tun?
Betreff: Wie platziere ich mithilfe von JSL Werte in Datentabellenzellen?Ron,
Danke für die Info. Das Add-in hat bei mir nicht funktioniert, aber die Überprüfung Ihres Codes für das Blasendiagrammproblem hat das Problem, das ich hatte, behoben. Es hat den ganzen Tag gedauert, das benötigte Skript zu erstellen, aber der von Ihnen bereitgestellte Code zum Hinzufügen untergeordneter Zeilen zum Füllen von Datenlücken hat mir geholfen, das zu beenden, was sonst für längere Zeit in einer Sackgasse geblieben wäre.
Betreff: Wie platziere ich mithilfe von JSL Werte in Datentabellenzellen?Hallo MD,
Ich bin mir nicht sicher, ob ich Ihre Frage vollständig verstehe, aber versuchen Sie es mit diesen beiden Links:
1) Add-In für Spalte „Nach Häufigkeit erweitern“.
2) Blasendiagramme – ungleiche Zeitintervalle