Frage zu den Tabellenreferenzen (von Russel)
Diese Frage kam im Thread zu „ Betreff: 2022Q1 Praktische Sitzung – Anfänger“ – und ich möchte, dass sich auch andere an der Diskussion beteiligen, also habe ich es ins Diskussionsforum gestellt.
Frage zu den Tabellenverweisen, die Sie heute gezeigt haben: Wenn Sie mehrere Tabellen nacheinander als Teil eines Skripts verarbeiten, iterieren Sie die Tabellenverweise bis ins Unendliche (dt1, dt2, dt3, ...) oder gibt es eine intelligentere Lösung?
Hintergrund: Ich manipuliere häufig Tabellen (verknüpfen, verketten, teilen usw.) und habe manchmal mehrere Tabellen, die ich nacheinander öffne, verarbeite und schließe, bevor ich im selben Skript mit der nächsten Tabelle fortfahre, bis ich die endgültige Tabelle habe, die ich möchte .
Betreff: Frage zu den Tabellenreferenzen (von Russel)@Georg Danke!
Betreff: Frage zu den Tabellenreferenzen (von Russel)Hallo @Ressel Es enthält keine Informationen zum Erstellen/Schreiben von SQL, sondern eher zum Bereitstellen von Abfragen in JMP mithilfe einer SQL-Abfrage oder auf andere Weise. Normalerweise verwende ich also ein anderes Tool, um dieses einfache SQL zu schreiben (z. B. „Name aus großer_Klasse auswählen, wobei das Alter > 15 ist“) und stelle dieses Skript einfach in JMP bereit. Aber Sie werden mehrere Beispiele sehen, wie das aussehen kann.
Betreff: Frage zu den Tabellenreferenzen (von Russel)Hallo, ja, es wurden viele Einstellungen geändert, obwohl ich mich nicht genau erinnern kann, welche. Ich meine, das lag in den Händen des SAS Tech Support, unseres IT-Supports und meines. Der Versuch, dieses Problem zu beheben, hat viel Zeit in Anspruch genommen. Es hat wenig geholfen. (Und ich habe vor Kurzem angefangen, mich einigermaßen mit Daten auskennen zu können.)
Außerdem habe ich kein Problem damit, die Daten zu erhalten, indem ich sie über ein Skript lade und die Tabelle manipuliere, obwohl es wirklich ineffizient erscheint, wenn man bedenkt, dass ich jedes Mal 100.000 Zeilen lade, einen Großteil lösche und einen ähnlichen Schritt mit der nächsten Tabelle wiederhole . Ich kann mir vorstellen, dass der Abfrage-Builder wahrscheinlich die gleiche Aufgabe erfüllen würde, aber auf einer anderen Schnittstelle? Im Moment habe ich Zugriff auf die Daten, die ich benötige, aber; je nach Arbeitsbelastung; Ich könnte den Import von einfachem SQL in JMP in Betracht ziehen. (Ich wusste nicht, dass es möglich ist.)
Der Link unten enthält Informationen zum Erstellen von SQL zur Verwendung mit/in JMP?
Danke!
Betreff: Frage zu den Tabellenreferenzen (von Russel)Übrigens, vielleicht möchten Sie sich diese Präsentation ansehen, in der es um das Abrufen von Daten aus einer Datenbank mit JMP geht:
https://community.jmp.com/t5/Discovery-Summit-Europe-2021/Strategies-and-Examples-for-Data-Acquisition-From-Distributed/ta-p/349225
Betreff: Frage zu den Tabellenreferenzen (von Russel)Haben Sie versucht, die Einstellungen in den Einstellungen für Query Builder zu ändern? Das kann sich stark ändern, standardmäßig werden bei jeder Änderung viele Daten übertragen (alle Ebenen der Datenbank, Vorschauen usw.).
Sobald Sie die Abfrage über die GUI erstellt haben, können Sie sie außerdem in benutzerdefiniertes SQL konvertieren, um einfaches SQL zu erstellen. Das wird dann nur in der Datenbank verarbeitet und ist viel schneller.
Meine bekannteste Methode besteht darin, immer die umfangreichen Aufgaben in der Datenbank zu erledigen, aber das hängt immer von der Umgebung ab. Es gibt andere Tools, mit denen Sie die Abfrage in der Datenbank definieren können und die Sie in JMP verwenden können (z. B. SQL Query Builder, abhängig von Ihrem Datenbankanbieter).
Sie können auch Ihre IT-Abteilung (z. B. einen Datenbankadministrator) bitten, Ihnen bei bestimmten regelmäßig benötigten Abfragen zu helfen und das einfache SQL in JMP zu importieren.
Es ist von entscheidender Bedeutung, die Daten aus der Datenbank im richtigen Format zu erhalten, und es lohnt sich, sich abschließend den gesamten Prozess anzusehen.
Betreff: Frage zu den Tabellenreferenzen (von Russel)Ich habe bereits versucht, den Abfrage-Builder zu verwenden. Es war unglaublich langsam und stürzte ständig ab. Deshalb habe ich den technischen Support von SAS kontaktiert, der das Problem jedoch nicht lösen konnte. Aus diesem Grund blieb ich bei der Behandlung einzelner Tabellen in einem Skript, was; angesichts der düsteren Leistung des Abfrage-Builders; ist viel bequemer und effizienter. Es könnte sein, dass das daran liegt, dass die Tabellen, die ich lade, mehr als 100.000 Zeilen haben – das war zumindest die Schlussfolgerung des technischen Supports. Leider kann ich mich praktisch nirgendwo anders als an diese „riesigen“ Tische wenden.
Außerdem denke ich, dass ich mich dringend mit dem Debuggen vertraut machen muss. Während ich es schaffe, ein paar nützliche Codezeilen zu „konstruieren“, denke ich nicht an Architektur, Ästhetik oder; in der Tat; wie man ein Skript erstellt, das debuggt werden kann. Leider ist es für mich noch ein Fremdwort.
Betreff: Frage zu den Tabellenreferenzen (von Russel)Es besteht auch die Möglichkeit, die Tabellenmanipulation in der Datenbank durchzuführen (Abfragedefinition z. B. durch Query Builder oder in nativem SQL). Dies ist bei großen Datensätzen von Vorteil, da Sie Datenverkehr vermeiden und den Server stark belasten. Dann müssen Sie in JMP auch weniger Tabellen verwalten.
Betreff: Frage zu den Tabellenreferenzen (von Russel)Beschreibende Handle-/Referenznamen werden Ihnen (oder jemand anderem, der Ihren Code ändern muss) irgendwann helfen. Dies erleichtert auch das Debug-Drucken, wenn Sie Show(dt_batchid_loc); verwenden können. um beispielsweise den Namen der erstellten Tabelle anzuzeigen.
Außerdem kann es nützlich sein, beim Erstellen von Tabellen die Ausgabetabelle("Name der Tabelle") zu verwenden. Dies wird Ihnen helfen, wenn Sie den Code debuggen müssen. Wenn Sie dies nicht tun (ich neige dazu, dies zu überspringen, und es quält mich von Zeit zu Zeit), ist es viel einfacher, anhand eines Namens wie „BatchID_with_Loc“ zu erkennen, welche Tabelle geöffnet ist, im Vergleich zu „Untitled 3041 summary by QC“. , Loc" oder so.
Betreff: Frage zu den Tabellenreferenzen (von Russel)Danke für die Antworten. Ein wenig mehr zum Hintergrund dessen, womit ich arbeite.
Ich lade die Tabellen aus unserer Google Cloud Platform-Implementierung über ODBC. Diese Tabellen werden regelmäßig mit aktuellen Fertigungsdaten aktualisiert. Zum Beispiel die erste Tabelle, die ich lade (ich verweise darauf als dt ) enthält Chargen-IDs, Parameternamen für verschiedene QC-Parameter, Messergebnisse und Maßeinheiten in separaten Spalten. Ich teile es nach QC-Parameternamen auf (und verweise auf die Ausgabe als dt2 , schließen dt ). Dann lade ich zum Beispiel eine andere Tabelle, die Chargen-IDs mit Herstellungsstandorten vergleicht (auf die ich verweise). dt3 ). Danach darf ich mitmachen dt2 mit dt3 , Erstellen dt4 und so weiter und so weiter, bis ich eine Tabelle habe, die alle Informationen enthält, die ich meiner Meinung nach brauche, bevor ich mit der Analyse fortfahre. In einigen Skripten verarbeite ich fast 10 Tabellen, die alle als referenziert werden dt(n) . Das ist es, was mein derzeitiger Kenntnisstand zulässt.
Ich habe mittelfristig vor, ein solches Skript für Kontrolldiagramme zu verwenden. Im Moment bewerte ich Trends nur visuell und sende Screenshots oder HTML-exportierte Diagramme an verschiedene Stakeholder.
Was ich aus diesem Gespräch mitnehme, ist die Verwendung aussagekräftigerer Tabellenverweise. Das sind auch sogenannte Griffe?
Betreff: Frage zu den Tabellenreferenzen (von Russel)Ich bin einverstanden mit @martindemel hängt es davon ab, wo sich die Dateien befinden, in welcher Reihenfolge Sie sie verarbeiten und was Sie mit ihnen machen möchten. JSL verfügt über viele integrierte Funktionen außerhalb des erweiterten Protokolls, die hilfreich sein können. Zum Beispiel, Dateien im Verzeichnis gibt Ihnen eine Liste aller Dateien in einem Verzeichnis. Wählen Sie Datei ermöglicht die interaktive Auswahl einer oder mehrerer Dateien aus einem Verzeichnis. Während das erweiterte Protokoll bei der Erfassung interaktiver Vorgänge gute Arbeit leistet, möchten Sie dennoch die fest codierten Tabellennamenverweise durch Variablenverweise auf die Tabellen ersetzen. @martindemel zeigte einiges davon mit dt = Öffnen(... In den meisten Fällen gibt eine JSL-Operation, die eine Datei öffnet, ein Handle für die Datentabelle zurück, die erstellt wird. Datentabellen-Handles werden auch erstellt, wenn Sie einer Tabelle eine Nachricht mit einem Vorgang von senden Tische Speisekarte. Wenn Sie beispielsweise eine Teilmenge erstellen, ändern Sie die Syntax
subsetDT = dt << Subset(...
Damit können Sie den Verweis auf die neu erstellte Tabelle erfassen. Die anderen Tabellenoperationen funktionieren auf ähnliche Weise.
Betreff: Frage zu den Tabellenreferenzen (von Russel)Hallo @Ressel ,
Es kommt wirklich darauf an, was Sie letztendlich tun möchten. Wenn Sie beispielsweise 100 Datentabellen haben, die Sie auf die gleiche Weise verarbeiten und anschließend schließen möchten, wäre eine Schleife (zum Öffnen, Verarbeiten und Schließen jeder Tabelle) möglicherweise besser geeignet, als alle 100 Tabellen zu öffnen und sie dann eine nach der anderen zu verarbeiten das andere. Ein Grund dafür ist, dass Sie nicht so viele Windows-Handles erstellen, was auf der Systemseite zu einem weiteren Problem führen könnte.
Im Allgemeinen würde ich den Namen der Tabellenvariablen etwas aussagekräftiger formulieren, damit ich besser verstehe, was es ist, wenn das Sinn macht. „dt“ ist hauptsächlich für den Dirty Hack gedacht 
Sie können auch alle offenen Datentabellen abrufen und sie dann mit durchlaufen
Get Data Table List();
Das wäre wahrscheinlich ein kluger Schachzug.
Wie denken andere darüber?