So fügen Sie eine alte Datentabelle mit neuen Daten aus einem Datenbankskript hinzuHallo zusammen,
Ich habe eine statische JMP-Datentabelle, die alte, historische Informationen (Legacy-Daten) enthält.
Ich habe eine weitere JMP-Datentabelle, die neue Daten enthält. Diese Tabelle wird über eine JMP-Datenbankabfrage aus einer Datenbank gespeist. Das bedeutet auch, dass JMP mir automatisch ein nettes Skript zur Verfügung stellt, mit dem ich die Tabelle bei jedem Start aus der Datenbank aktualisieren kann.
Jetzt möchte ich, dass die neuen Daten, die aus der Datenbank abgerufen werden, an die alte Tabelle angehängt werden, natürlich ohne die alten Daten zu verlieren. Wahrscheinlich wird dafür JSL benötigt, aber ich kann es selbst nicht herausfinden.
Wir freuen uns über jede Hilfe,
Vielen Dank
Kerl
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuPerfekt!Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuJa! Es funktioniert jetzt wie erwartet! Danke Hadley!
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuHallo,
Ich habe eine andere Lösung, von der ich denke, dass sie funktionieren könnte.Die Verkettungsfunktion hängt wieder an die erste Tabelle (dt1) an, erstellt jetzt jedoch eine Quellspalte, um zu verfolgen, welche Zeilen sich in dt1 befanden und welche von dt2 angehängt wurden. „Onruncomplete“ erhält nun den Namen der Tabelle dt2 und sucht dann nach der Spalte „:Source table“, wobei die „dt2“-Zeilen ausgewählt und gelöscht werden.Anschließend wird „:Quelltabelle“ gelöscht.Versuchen Sie es bitte und lassen Sie mich wissen, ob es funktioniert.
query<<RUN></RUN>
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuDanke Hadley.
Ich habe einfach den gesamten Befehl am Ende meines Skripts hinzugefügt, dt in dt1 geändert (obwohl das meiner Meinung nach überhaupt keine Rolle spielen sollte), ihn gespeichert und ausgeführt. Das Skript läuft immer noch ohne Fehler oder Warnmeldungen, aber wenn ich es ein zweites Mal ausführe, werden die Duplikate weiterhin hinzugefügt.
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuHallo nochmal,
Wenn Sie etwas genauer darüber nachdenken, können Sie jederzeit einen Befehl hinzufügen, um doppelte Zeilen aus dt1 zu entfernen, nachdem Sie dt2 an dt1 angehängt haben.Das könnte Ihr zweites Problem lösen.Auswählen und Entfernen doppelter Zeilen mit Bedingung
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuHallo,
Durch das Hinzufügen einer Close()-Funktion zum onruncomplete-Skript wird dt2 so schnell geöffnet und geschlossen, dass der Benutzer nicht merkt, dass es passiert ist:
query<<RUN></RUN>
Beachten Sie, dass ich auch die Anweisung „An erste Tabelle anhängen“ aus der Verkettungsfunktion entfernt habe.Dadurch wird eine separate Tabelle erstellt und dt1 bleibt intakt.Das würde mit Ihrer vorgeschlagenen Problemumgehung übereinstimmen (übrigens eine gute Idee!).Es gibt wahrscheinlich eine einfache Möglichkeit, jede Zeile beider Tabellen zu überprüfen und nur Zeilen anzuhängen, die nur für dt2 gelten, aber ich kann mir das nicht vorstellen.Vielleicht hat jemand anderes einen Vorschlag?
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuJa, das funktioniert, es wird angehängt. Es bleiben noch zwei Probleme:
1) Ein kleines Problem besteht darin, dass die dt2-Tabelle immer noch separat angezeigt wird, was nicht erforderlich ist.
Ich habe versucht, dies zu vermeiden, indem ich das Skript wie folgt geändert habe, aber das Ergebnis ist das gleiche:
queryname << Run( onruncomplete( dt1 << Concatenate( dt2 = queryResult, Append to first table ) ) );
anstatt
queryname << Run(
onruncomplete(
dt2 = queryResult;
dt1 << Concatenate( dt2, Append to first table );
)
);
2) Ein größeres Problem besteht darin, dass bei einer zweiten Ausführung des Skripts dieselben Daten am Ende von dt1 erneut angehängt werden. Ich brauche eine Regel, die nur neue Daten importiert. Ich bin mir nicht sicher, ob dies im Abschnitt „Verketten“ des Skripts möglich ist.
Wenn es dafür keinen Workaround gibt, können wir als Plan B auch versuchen, das Skript so zu modifizieren, dass es die angehängte Tabelle (dt1 + dt2) als separate Tabelle ausspuckt. Auf diese Weise kann der dt1 jederzeit als Grundlage für zukünftige Datenaktualisierungen verwendet werden.
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuHallo nochmal,
OK, ich glaube, ich habe eine Lösung. Wie Sie dem Skript unten entnehmen können, habe ich die Concatenate-Funktion in die „onruncomplete“-Nachricht eingefügt.Wenn dies als Tabellenskript in dt1 gespeichert wird, sollte das funktionieren.Bitte probieren Sie es aus und lassen Sie es mich wissen.
dt1=Current Data Table();
query=New SQLQuery (...
);
query<<RUN></RUN>
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuHallo Hadley,
Ich denke, wir sind nah dran...
Ich glaube, ich habe alles so ausgeführt, wie Sie es vorgeschlagen haben, aber wenn ich einfach dt1 öffne und das Skript von dort aus ausführe, erhalte ich diese JMP-Warnmeldung:
Name ungelöst: dt2 im Zugriff oder Auswertung von 'dt2', dt2/*###*/
Kurz darauf erscheint die dt2-Datentabelle. Aber es wird nicht an dt1 angehängt.
Wenn ich dieses dt2 schließe und erneut versuche, das Skript von dt1 aus auszuführen, erhalte ich interessanterweise nicht mehr die JMP-Warnmeldung, aber jetzt wird das Fenster „Concatatenate“ angezeigt, und kurz darauf wird dt2 erneut angezeigt. Dennoch wird dt2 nicht an dt1 angehängt.
Grüße
Kerl
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuHallo,
Ich denke, wir können dies wahrscheinlich folgendermaßen vereinfachen: Wir nennen dt1 die Tabelle, die auf unserem Desktop gespeichert wurde, und dt2 die neue Tabelle, die wir aus unserer Datenbank aktualisieren möchten.Wir werden ein neues Tabellenskript für die Tabelle dt1 erstellen, das eine Abfrage für dt2 erstellt, dann dt1 und dt2 miteinander verkettet und die Ergebnisse an dt1 anhängt.
dt1=Current data table();<BR /><BR />queryname=New SQL Query(...<BR />...);<BR /><BR /><SPAN>queryname<<RUN></RUN><BR />dt1<<CONCATENATE><BR /></CONCATENATE></SPAN>
Um Ihre erste Frage zu beantworten, können Sie das Skript „Neue SQL-Abfrage“ von dt2 abrufen, indem Sie die Abfrage ausführen und dann mit der rechten Maustaste auf das Quellskript klicken, das Ergebnis in Ihrer Zwischenablage speichern und es dann in ein neues Skriptfenster einfügen.Anschließend können Sie das Fenster verwenden, um am Skript zu arbeiten, bevor Sie es in einem neuen Tabellenskript in dt1 speichern.
Ist das hilfreich?
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuHallo Hadley,
Ich verstehe noch nicht alle Schritte.
1) Führen Sie die Abfrage aus, speichern Sie das Quellskript und geben Sie der Abfrage einen neuen Namen: queryname = New SQL Query(...)<
=> Bedeutet das mit „Speichern des Quellskripts“, dass ich nur die vorhandene Abfrage in meiner Tabelle BEARBEITEN und dort speichern muss? Oder es als NEUES Skript zu meiner Tabelle hinzufügen? Oder dieses neue Skript woanders speichern?
4) Verwenden Sie den Verweis auf dt mit einer „Concatenate“-Funktion zusammen mit der anderen Tabelle.
=> Ich fürchte, das bedarf weiterer Klarstellung
Vielen Dank im Voraus, Hadley!
Kerl
Betreff: So fügen Sie einer alten Datentabelle neue Daten aus einem Datenbankskript hinzuHallo typ,
Wenn Sie die SQL-Abfrage (Neue SQL-Abfrage(...)) ausführen, können Sie mit der folgenden Methode einen Verweis auf die Datentabelle abrufen:
1) Führen Sie die Abfrage aus, speichern Sie das Quellskript und geben Sie der Abfrage einen neuen Namen: queryname = New SQL Query(...)<
2) Löschen Sie den <
3) Fügen Sie darunter eine Skriptzeile hinzu: queryname<
4) Verwenden Sie den Verweis auf dt mit einer „Concatenate“-Funktion zusammen mit der anderen Tabelle.
Bitte probieren Sie es aus und lassen Sie mich wissen, ob es für Sie funktioniert.