Hallo zusammen,
Ich arbeite mit JSL und habe mehrere Graph Builder-Visualisierungen auf Basis von Tabelle A erstellt.
Später im Skript aktualisiere oder verknüpfe ich Tabelle A mit Tabelle B (wobei Zeit als Schlüssel und AUSWEIS als Filter dient) – dadurch entsteht eine neue Tabelle (nennen wir sie Zusammengeführte Tabelle ).
Das Problem ist:
-
Die von mir in Tabelle A erstellten Visualisierungen und Graph Builder-Einstellungen werden nicht automatisch in der zusammengeführten Tabelle angezeigt.
-
Ich möchte dieselben Visualisierungen auf die neue Tabelle kopieren bzw. erneut anwenden , die aus dem Join/Update resultiert.
Nachdenken -
-
Gibt es eine JSL-basierte Möglichkeit , Graph Builder-Skripte von einer Tabelle in eine andere zu übertragen oder neu zu binden ?
-
Welcher Workflow ist hierfür am zuverlässigsten, wenn bestimmte KPIs nur anhand von gefilterten Zeilen auf Basis von Zeitfenstern berechnet werden?
Ich habe auch den unten stehenden Code ausprobiert, aber ich sehe mt calcTable nicht im GUI-Fenster oben links angezeigt.
scriptNames = dt_merged << Get Table Script Names;
Show(scriptNames);
// Loop through and copy each script to calcTable
For(i = 1, i <= N Items(scriptNames), i++,
scriptName = scriptNames[i];
scriptCode = dt_merged << Get Table Script(scriptName);
// Add the same script to calcTable
calcTable << Set Table Script(scriptName, scriptCode);
Show("Copied script:", scriptName);
);
Normalerweise sieht das Kopieren von Tabellenskripten in etwa so aus, aber je nachdem, wie diese Tabellenskripte aufgebaut sind, können Anpassungen erforderlich sein.
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Open("$SAMPLE_DATA/Big Class Families.jmp");
dt2 << Delete Scripts(dt2 << Get Table Script Names); // demo purposes
For Each({scriptname}, dt1 << Get Table Script Names,
s = dt1 << Get Script(scriptname);
Eval(EvalExpr(
dt2 << New Script(scriptname, Expr(NameExpr(s)))
));
);
Sie können auch Concatenate verwenden, da es Skripte (und Variablen) verschiebt, aber es könnte möglicherweise andere Dinge beeinträchtigen, daher würde ich die Schleife verwenden.
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Open("$SAMPLE_DATA/Big Class Families.jmp");
dt2 << Delete Scripts(dt2 << Get Table Script Names); // demo purposes
dt_temp = dt1 << Subset(Rows(1), private);
dt_temp << Delete Rows(1);
dt2 << Concatenate(
dt_temp,
"Append to first table"
);
Close(dt_temp, no save);