| Lautsprecher |
Transkript |
| Georg Raming (Siltronic AG) |
Hallo zusammen. |
| |
Heute möchte ich über Strategien und Beispiele zur Datenerfassung aus verteilten und komplexen Quellen sprechen. |
| |
Mein Name ist Georg Raming, mein Aufgabengebiet ist die Prozessentwicklung von ??? gewachsenen Einkristallen bei Siltronic. Ich verfüge über Erfahrung in der statistischen Auswertung und Prozess |
| |
sowie Produktdaten- und Statistikschulungen. Außerdem bin ich für die JMP-Software bei Siltronic und Schulungsaktivitäten für einige hundert Benutzer verantwortlich. |
| |
Siltronic ist einer der weltweit führenden Hersteller von hochspezialisierten Wafern aus Reinstsilizium. |
| |
Einige technische Hinweise. Ich arbeite in dieser Präsentation mit Datentabellen statt mit Datenbanken, aber die hier gezeigten Konzepte werden ursprünglich zum Abrufen von Daten aus relationalen Datenbanken über eine ODBC-Verbindung verwendet. |
| |
Und der JMP Query Builder funktioniert auf ähnliche Weise für JMP-Datentabellen und für Datenbanktabellen. |
| |
Was ist das Ziel der heutigen Präsentation? Es geht darum, einige Möglichkeiten aufzuzeigen, wie Sie Daten aus einer Datenbank einfach und effizient in Ihr JMP oder in eine JMP-Tabelle übertragen können. |
| |
Lassen Sie uns zunächst über die Bausteine sprechen. |
| |
Eine davon könnte eine JMP-Datentabelle sein. |
| |
Wenn Sie also eine Datentabelle aus einer Datenbankabfrage generiert haben, könnte diese so aussehen. Ich habe hier die bekannte Beispieltabelle von JMP, Big Class, verwendet und die Daten mit dem JMP Query Builder abgefragt. Das gesamte Skript, das mit der Tabelle geliefert wird, habe ich gelöscht. |
| |
Und Sie werden feststellen |
| |
für diese Datentabelle, wenn Sie sie mit JMP Query Builder, mehreren Skripten und Tabellenvariablen abfragen. |
| |
Innerhalb dieser Variable können Sie das SQL sehen. Die Definition der Datentabelle wird also aus der Tabelle oder Datenbank übernommen. |
| |
Und Sie haben diese Skripte, ein Quellskript, das einfach |
| |
erhält eine weitere Kopie der ursprünglichen Datentabelle wie diese. Und hier sehen Sie, dass die ursprünglichen Skripte ebenfalls darin enthalten sind, aber es gibt wieder diese Skripte vom JMP Query Builder. |
| |
Es gibt auch ein Skript zum Ändern der Abfrage, mit dem Sie diese Abfrage in der JMP-Datentabelle bearbeiten und auch ausführen können. |
| |
Und es gibt eine Abfrage zum Aktualisieren aus der Datenbank. Wenn Sie also die Daten in Ihrer Datentabelle ändern |
| |
oder es sind neue Daten in der Datentabelle vorhanden, können Sie die Daten einfach durch Drücken dieser Schaltfläche aktualisieren. |
| |
So. Auch hier sind die Skripte wieder aus der Beispieltabelle gekommen. |
| |
Okay, der nächste Baustein ist JMP Query Builder. |
| |
Sobald Sie eine oder mehrere Tabellen in der Datenbank haben, möchten Sie eine Abfrage wie hier durchführen. Ich habe Big Class und Big Class Families aus der JMP-Beispieltabelle genommen. |
| |
Verzeichnis und verwenden Sie den JMP Query Builder wie |
| |
hier auf den Tabellen. JMP Query Builder. |
| |
JMP sieht diese offenen Tabellen |
| |
Und es gibt auch eine im Primärfeld. Ich kann eine Sekundärtabelle wie diese hinzufügen, und JMP erstellt dann automatisch eine Verknüpfung zwischen beiden Tabellen. So werden sie verknüpft. Und Sie können diese Verknüpfung bearbeiten |
| |
so was. |
| |
Die Details sehen Sie hier. |
| |
Und dann können Sie mit dem Erstellen der Abfrage fortfahren |
| |
so. Sie haben hier beide Tabellen zur Verfügung. |
| |
Hier können Sie auch den Join erneut bearbeiten |
| |
Und vielleicht möchten Sie alle hinzufügen |
| |
Spalten, |
| |
so was. |
| |
Und vielleicht möchten Sie einen Filter setzen, |
| |
so was. |
| |
Und führen Sie die Abfrage aus. Dann wieder |
| |
Holen Sie sich diese Ergebnistabelle mit den Skripten aus dem |
| |
Beispieltabellen benötigen wir hier nicht. |
| |
Ich lösche sie. Und das sind die Skripte, die Skripte und Variablen, die von JMP Query Builder geschrieben wurden |
| |
wie ich es vorher benutzt habe. Und wieder, hier können Sie |
| |
Bearbeiten Sie diese Abfrage. Das Skript für die Abfrage wird in dieser Ergebnistabelle hier gespeichert, so wie wir es hier zuvor definiert haben. |
| |
So funktioniert der JMP Query Builder. |
| |
Und wie bereits erwähnt, funktioniert es bei Datenbanktabellen genauso wie hier bei den JMP-Beispieltabellen. |
| |
Das nächste Gebäude...Ich habe hier auch einige Skripte eingefügt und Sie können jederzeit vom visuellen Query Builder wechseln |
| |
zu einem benutzerdefinierten SQL |
| |
Abfrage. Das funktioniert hier also. Ein weiteres rotes Dreieckmenü. |
| |
Konvertieren Sie in benutzerdefiniertes SQL und was Sie hier visuell definiert haben, |
| |
Sie können hier eine Text-SQL-Abfrage definieren. |
| |
Sie können es ausführen. |
| |
Und wenn Sie sich diese Abfrage hier ansehen oder auf die Schaltfläche „Abfrage ändern“ klicken, |
| |
Sie sehen die Textabfrage. Dies ist also nur eine Möglichkeit, |
| |
Konvertieren von visuellen Abfragen in benutzerdefinierte SQL-Abfragen. |
| |
Also lass mich einfach aufräumen |
| |
einige Tabellen. Okay. |
| |
Der nächste Baustein besteht darin, Daten aus der Datenbank abzurufen, und Sie benötigen eine ODBC-Verbindung zu diesen Datenquellen. |
| |
Und normalerweise werden die ODBC-Datenquellen und Treiber von Ihrer IT-Administration eingerichtet. Unter Windows finden Sie |
| |
Diese Verbindungen werden unter dem ODBC-Datenquellenadministrator verwaltet. |
| |
Und bitte beachten Sie, dass die Bitanzahl der Datenbankquellen zu JMP passen sollte. In diesem Fall habe ich also eine 64-Bit-JMP-Anwendung und benötige daher 64-Bit-Treiber |
| |
Und die Benutzerquellen können Sie selbst einrichten. |
| |
Und System-DSNs werden vom Administrator eingerichtet, und auch Treiber für verschiedene Datenbanktypen werden vom Administrator festgelegt. |
| |
Im Falle einer Fehlerbehebung können Sie diese Registerkarte zur Verfolgung verwenden |
| |
wohin die Abfrage ging und was möglicherweise das Problem ist. |
| |
Und ein Tipp von mir wäre, zu prüfen, ob die Verbindung von diesen Datenquellen aus einwandfrei funktioniert. Wenn Sie also auf Konfigurieren und den Datenquellenadministrator drücken, können Sie für eine bestimmte Quelle die Verbindung testen, nachdem Sie Ihre Anmeldeinformationen angegeben haben. |
| |
Und wenn alles in Ordnung ist, dann sagt Ihnen das System, dass |
| |
die Verbindung war erfolgreich. |
| |
Dass die Abfrage nicht funktioniert, liegt nicht an Windows. |
| |
Weitere Details finden Sie im JMP-Handbuch in der Dokumentation. Zum Beispiel finden Sie Kapitel drei von „JMP verwenden“ hier im |
| |
Hilfemenü |
| |
und die JMP-Dokumentationsbibliothek. Dort ist die Verwendung all dieser Tools gut dokumentiert. |
| |
Okay, es gibt also in Skripting und JSL, also in der Skriptsprache, drei Möglichkeiten, diese SQL-Datenbankabfragen zu skripten. Die erste ist eine neue SQL-Abfrage, wie wir sie bereits zuvor verwendet haben. Sie befindet sich hier im JMP-Menü unter Tabelle, JMP Query Builder für JMP-Tabellen. |
| |
Oder für die Datenbank, Sie finden sie hier unter Datenbank-Abfrage-Generator. |
| |
Und dann ist „Neue SQL-Abfrage“ der mächtigste Befehl von allen. Er generiert ein neues Abfrageobjekt, das Sie als JMP-Abfragedatei speichern können. Er kann direkt eine Datentabelle generieren und liefert einen sehr guten Datenursprung, wie wir es zuvor beim Quellcode-Änderungs- und Aktualisierungsskript gesehen haben. |
| |
Ein weiterer Befehl in JSL zum Abfragen von Daten aus einer Datenbank ist der Befehl „Datenbank öffnen“. Die Dokumentation all dieser Befehle finden Sie auch im Skriptindex. Wie hier, |
| |
wenn ich tippe |
| |
offen |
| |
Datenbank, |
| |
Wie es bei allen Befehlen funktioniert, erfahren Sie hier. |
| |
Und eine dritte Möglichkeit, eine Verbindung zur Datenbank herzustellen und einige Abfragen zu stellen, ist die Datenbankverbindung. |
| |
Dazu sind drei Schritte erforderlich. Der erste Schritt besteht darin, eine Datenbankverbindung herzustellen. Der zweite Schritt besteht darin, Ihre Abfragen (eine oder mehrere) an die Datenbank zu senden. Zum Abschluss müssen Sie die Datenbankverbindung schließen. |
| |
Und schließlich, wenn Sie einige nette Skripte geschrieben haben. |
| |
Sie sollten es für sich selbst oder vielleicht auch für Kollegen zugänglich machen. Dafür gibt es mindestens zwei Möglichkeiten. Eine Möglichkeit besteht darin, es in ein Add-In zu integrieren, damit Sie es auch anderen problemlos zur Verfügung stellen können. Die andere Möglichkeit besteht darin, es in ein benutzerdefiniertes Menü zu integrieren, wie ich es hier getan habe. |
| |
Und Sie können es finden |
| |
im Menü, dann hier so. Auf meinem System sind zwei Add-Ins installiert. |
| |
Und hier ist mein persönliches |
| |
benutzerdefiniertes Menü. |
| |
Also, wir haben die Bausteine fertig. Gehen wir zu den Beispielen. |
| |
Und das erste Beispiel besteht darin, ein Tabellenskript zum Speichern des Tabellenlayouts und der Abfrage zu verwenden. |
| |
Es könnte also so aussehen. Wenn Sie eine Datentabelle haben, die kommt |
| |
aus der Datenbank und Sie fügen einige Skripte ein, um auch schöne Grafiken zu erstellen. |
| |
Sie möchten es vielleicht jeden Tag verwenden. Und hier gibt es eine schöne Möglichkeit |
| |
zu sagen, Tabellenskript ohne Daten kopieren. |
| |
Und dieses Skript können Sie dann verwenden. |
| |
Ich möchte ein neues Skript erstellen. Tut mir leid. |
| |
Und fügen Sie es in das Skriptfenster ein. |
| |
Und hier kommt die neue Tabelle, indem Sie einfach auf die Schaltfläche „Skript ausführen“ klicken. |
| |
Und es wird als ??? angezeigt, ohne Daten. Sie können dieses Skript beispielsweise in Ihrem Menü speichern und die Daten abrufen, es kann sich um eine große Datenmenge handeln. Sie können einfach auf die Schaltfläche „Aus Datenbank aktualisieren“ klicken und die Tabelle wird mit allen Daten aus der Datenbank oder von woanders gefüllt. |
| |
Das ist also eine schöne Möglichkeit |
| |
um einfach das Skript zu verwenden |
| |
um die Daten aus der Datenbank zu erhalten. |
| |
Das zweite Beispiel |
| |
besteht darin, eine Abfrage innerhalb einer Tabelle zu verwenden. |
| |
So ist es: Wenn Sie eine Datentabelle haben und einige zusätzliche Daten abfragen möchten, abhängig vom Inhalt Ihrer aktuellen Tabelle. |
| |
Also werde ich es zeigen. |
| |
Ich lösche einige Zeilen. |
| |
Und mit diesen drei Namen möchte ich zu einer anderen Tabelle gehen, um einige Daten abzurufen. |
| |
Und dies wird durch dieses Skript erledigt. |
| |
Und hier können Sie aus dieser Tabelle sehen, dass ich die Namen erhalten und eine Abfrage durchgeführt habe |
| |
um Daten aus einer anderen Tabelle von Big Class Families abzufragen. |
| |
Und wie funktioniert es? |
| |
Sie finden es in diesem Skript. |
| |
Es ist recht kurz. Hier werden die Namen wie hier definiert aus der ersten Tabellenabfrage übernommen. |
| |
Die Namen werden in die Abfrage eingesetzt. |
| |
Und hier wird die Abfrage an die Tabelle „Große Klassenfamilien“ gestellt. |
| |
Okay, ich muss diese Tabelle auch schließen. |
| |
Dies ist ein benutzerdefiniertes Abfrageskript mit grafischer Benutzeroberfläche. Wenn Sie beispielsweise eine große Datentabelle in der Datenbank haben und häufig kleine Mengen davon benötigen, |
| |
Sie können natürlich alle Daten abrufen, aber vielleicht ist es flexibler und effizienter, gut gefilterte Daten zu erhalten. So funktioniert es. |
| |
Eine Tabelle zum Filtern der Daten und eine Tabelle mit allen Spalten der Big-Data-Tabelle. Und hier können wir grafisch filtern. Nehmen wir „weiblich“ und „Alter“, also habe ich nur zwei Spalten zum Filtern verwendet. |
| |
so, 12 und 13 Jahre alt. |
| |
Und ich möchte vielleicht alle Spalten haben oder nur eine Spalte entfernen. |
| |
Ich frage es ab |
| |
und hier erhalten Sie das richtige Ergebnis mit diesen Einschränkungen. Und Sie können, wie Sie hier sehen können, und im Quellskript oder in der SQL, |
| |
die Einschränkungen sind hier |
| |
von der definierten grafischen Benutzeroberfläche. |
| |
Und wie |
| |
Die Skriptarbeit funktioniert? Es ist ein wenig |
| |
natürlich komplexer. Es gibt also die Filterabfrage. |
| |
Die Spaltenabfrage. |
| |
Hier ist ein Skript, eine Funktion, die das konvertiert |
| |
Datenfilterbedingungen in eine SQL-Bedingung. |
| |
Dies ist der GUI-Teil, die grafische Benutzeroberfläche. |
| |
Und hier werden schließlich die Ergebnisse der grafischen Benutzeroberfläche ausgewertet und in dieses benutzerdefinierte Skript eingefügt. |
| |
Das nächste Beispiel ist eine Abfrage in zwei Schritten. Nehmen wir also an, Sie müssen zunächst einige Batch-IDs abfragen. |
| |
Und um diese IDs in eine andere Abfrage zu übernehmen, vielleicht in eine andere Datentabelle, um zusätzliche Daten zu erhalten, |
| |
Sie können es so machen. Also habe ich hier die Big Class-Datentabelle als Filter genommen. Also habe ich nur die männlichen |
| |
Und |
| |
gleich oder jünger als 13-jähriger Schüler. |
| |
Und diese Namen wurden für die Abfrage von Big Class Families verwendet, alle Zeilen, wie Sie hier sehen können. |
| |
Und |
| |
Beide Tabellen sind über einen virtuellen Join verbunden, wie Sie hier sehen können. |
| |
Also |
| |
Diese Tabelle verweist über den Namen auf die andere Tabelle zur Filtertabelle. Und ich kann verwenden |
| |
die Spalten der Filtertabelle hier in dieser Tabelle, als ob sie |
| |
in dieser Tabelle. |
| |
Dies ist also eine gute Möglichkeit, mehrere Tabellen zu haben und den Inhalt einer Tabelle zu verwenden. |
| |
Und das letzte Beispiel ist |
| |
Wie man zwei oder mehrere Abfragen parallel im Hintergrund laufen lässt. Daher habe ich hier kein Beispiel. Es wird in der JMP-Community diskutiert. Und wenn Sie interessiert sind, können Sie einen Blick darauf werfen. |
| |
So, jetzt bin ich mit meinen Beispielen fertig und die Skripte für das Journal und die Präsentationsmaterialien sind online verfügbar. |
| |
Vielen Dank an die Community für die tollen Diskussionen und an die JMP-Entwickler für die Entwicklung und Pflege dieser großartigen Software. Und schließlich vielen Dank für Ihre Aufmerksamkeit. |