Lautsprecher
|
Transkript
|
| Georg Raming (Siltronic AG) |
Hallo zusammen. |
| |
Heute möchte ich über Strategien und Beispiele zur Datengewinnung aus verteilten und komplexen Quellen sprechen. |
| |
Mein Name ist Georg Raming, mein Job ist die Prozessentwicklung von ??? gezüchtete Einkristalle bei Siltronic. Ich habe einige Erfahrung mit statistischen Auswertungen und Prozessen |
| |
und Produktdaten und statistische Ausbildung. Außerdem bin ich bei Siltronic für die JMP-Software 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. Daher arbeite ich in dieser Präsentation hier 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 Datenbanktabellen. |
| |
Was ist das Ziel der heutigen Präsentation? Es geht darum, einige Möglichkeiten zu schaffen, Daten auf einfache und effiziente Weise aus der Datenbank in Ihr JMP oder in eine JMP-Tabelle zu übertragen. |
| |
Lassen Sie uns zunächst über die Bausteine sprechen. |
| |
Eine davon könnte also eine JMP-Datentabelle sein. |
| |
Wenn Sie also eine Datentabelle aus einer Datenbankabfrage generiert haben, könnte diese so aussehen. Deshalb habe ich hier die berühmte Beispieltabelle von JMP, Big Class, genommen und die Daten über JMP Query Builder abgefragt. Ich habe das gesamte mit der Tabelle gelieferte Skript gelöscht. |
| |
Und du wirst finden |
| |
für diese Datentabelle, wenn Sie sie mit JMP Query Builder abfragen, mehrere Skripte und Tabellenvariablen. |
| |
In dieser Variablen können Sie also die SQL sehen. Die Definition der Datentabelle wird also aus der Tabelle oder Datenbank entnommen. |
| |
Und Sie haben diese Skripte, ein Quellskript, das einfach ist |
| |
erhält eine weitere Kopie der ursprünglichen Datentabelle wie diese. Und hier sieht man, dass auch die Originalskripte drin sind, aber da sind 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 zur Aktualisierung aus der Datenbank. Wenn Sie also die Daten in Ihrer Datentabelle ändern |
| |
oder es neue Daten in der Datentabelle gibt, können Sie die Daten einfach aktualisieren, indem Sie auf diese Schaltfläche klicken. |
| |
So was. Auch hier stammen die Skripte wieder aus der Beispieltabelle. |
| |
Okay, der nächste Baustein ist JMP Query Builder. |
| |
Sobald Sie also 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 übernommen |
| |
Verzeichnis und verwenden Sie den JMP Query Builder wie |
| |
hier auf den Tischen. JMP-Abfrage-Generator. |
| |
JMP sieht diese offenen Tabellen |
| |
und es gibt auch eine im primären Feld, und ich kann eine sekundäre Tabelle wie diese hinzufügen, und JMP erstellt dann automatisch einen Join zwischen beiden Tabellen. Also, wie sie verbunden sind. Und Sie können diesen Join bearbeiten |
| |
so was. |
| |
Die Details sehen Sie hier. |
| |
Und dann können Sie mit dem Erstellen der Abfrage fortfahren |
| |
so was. Ihnen stehen hier beide Tische zur Verfügung. |
| |
Hier können Sie den Join auch noch einmal bearbeiten |
| |
Und vielleicht möchten Sie alles hinzufügen |
| |
Säulen, |
| |
so was. |
| |
Und vielleicht möchten Sie einen Filter einsetzen, |
| |
so was. |
| |
Und führen Sie die Abfrage aus. Dann wieder du |
| |
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 vom JMP Query Builder geschriebenen Skripte und Variablen |
| |
wie ich es vorher benutzt habe. Und noch einmal: Hier können Sie es tun |
| |
Bearbeiten Sie diese Abfrage. Das Skript für die Abfrage wird hier in dieser Ergebnistabelle 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 also hier. Ein weiteres Menü mit rotem Dreieck. |
| |
Konvertieren Sie in benutzerdefiniertes SQL und was Sie hier visuell definiert haben, |
| |
Sie können hier in einer Text-SQL-Abfrage definieren. |
| |
Sie können es ausführen. |
| |
Und wenn Sie sich hier diese Abfrage ansehen oder auf die Schaltfläche „Abfrage ändern“ klicken, |
| |
Sie sehen die Textabfrage. Das ist also nur eine Möglichkeit, |
| |
Konvertierung von einer visuellen Abfrage in eine benutzerdefinierte SQL-Abfrage. |
| |
Also lass mich einfach aufräumen |
| |
manche Tische. Okay. |
| |
Der nächste Baustein besteht darin, Daten aus der Datenbank abzurufen. Sie benötigen eine ODBC-Verbindung zu diesen Datenquellen. |
| |
Und normalerweise werden die ODBC-Datenquellen und -Treiber von Ihrer IT-Administration eingerichtet. So finden Sie es unter Windows |
| |
Diese Verbindungen unterliegen dem ODBC-Datenquellenadministrator. |
| |
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 Nachverfolgung verwenden |
| |
Wohin die Anfrage ging und was das Problem sein könnte. |
| |
Und ein Tipp von meiner Seite wäre, von diesen Datenquellen aus zu prüfen, ob die Verbindung ordnungsgemäß funktioniert. Wenn Sie also auf „Konfigurieren“ und den Datenquellenadministrator klicken, können Sie hören, wie für eine bestimmte Quelle die Verbindung getestet wird, nachdem Sie Ihre Anmeldeinformationen angegeben haben. |
| |
Und wenn alles in Ordnung ist, sagt Ihnen das System das |
| |
Die Verbindung war erfolgreich. |
| |
Es liegt nicht an Windows, dass die Abfrage nicht funktioniert. |
| |
Und auch weitere Details finden Sie im JMP-Handbuch in der Dokumentation. Zum Beispiel „Verwenden von JMP“, Kapitel drei, finden Sie hier im |
| |
Hilfemenü |
| |
und die JMP-Dokumentationsbibliothek. Und dort ist gut dokumentiert, wie all diese Tools verwendet werden. |
| |
Okay, es gibt also in Scripting und JSL, 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. Es befindet sich also hier im JMP-Menü unter Tabelle, JMP Query Builder für JMP-Tabellen. |
| |
Oder für die Datenbank, Sie finden sie hier unter Database Query Builder. |
| |
Und dann ist New SQL Query der mächtigste Befehl von allen. Damit ein neues Abfrageobjekt generiert wird, können Sie es als JMP-Abfragedatei speichern. Es kann direkt eine Datentabelle generieren und liefert eine sehr gute Herkunft der Daten, wie wir zuvor mit Quelländerungs- und Aktualisierungsskripten gesehen haben. |
| |
Ein weiterer Befehl in JSL zum Abfragen von Daten aus der Datenbank ist der Befehl „Open Database“. Eine Dokumentation aller dieser Befehle finden Sie auch im Skriptindex. Wie hier, |
| |
wenn ich tippe |
| |
offen |
| |
Datenbank, |
| |
Hier erfahren Sie, wie es für alle Befehle funktioniert. |
| |
Und eine dritte Möglichkeit, eine Verbindung zur Datenbank herzustellen und einige Abfragen zu stellen, ist die Datenbankverbindung. |
| |
Und es braucht drei Schritte. Der erste Schritt besteht darin, eine Datenbankverbindung herzustellen. Die zweite besteht darin, Ihre Abfragen, eine oder mehrere, in die Datenbank zu stellen. Und zum Abschluss müssen Sie die Datenbankverbindung schließen. |
| |
Und schließlich, wenn Sie ein paar schöne Skripte geschrieben haben. |
| |
Sie sollten es sich selbst oder vielleicht auch Ihren Kollegen zugänglich machen, und es gibt mindestens zwei Möglichkeiten. Eine besteht also darin, es in ein Add-In zu integrieren, damit Sie es auch anderen problemlos zur Verfügung stellen können. Und die andere Möglichkeit besteht darin, es in ein benutzerdefiniertes Menü einzufügen, 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 meine persönliche |
| |
benutzerdefiniertes Menü. |
| |
Also lasst uns ... wir haben die Bausteine fertiggestellt. Kommen wir zu den Beispielen. |
| |
Und das erste Beispiel ist die Verwendung eines Tabellenskripts zum Speichern des Tabellenlayouts und der Abfrage. |
| |
Es könnte also so aussehen. Wenn Sie eine Datentabelle haben, die kommt |
| |
aus der Datenbank und Sie haben auch einige Skripte für ein schönes Diagramm darin eingefügt, |
| |
Vielleicht möchten Sie es jeden Tag verwenden. Und hier gibt es eine schöne Möglichkeit |
| |
Das heißt, Tabellenskript ohne Daten kopieren. |
| |
Und dieses Skript können Sie dann verwenden. |
| |
Ich möchte ein neues Skript erstellen. Entschuldigung. |
| |
Und fügen Sie es in das Skriptfenster ein. |
| |
Und hier kommt diese neue Tabelle, indem Sie einfach auf die Schaltfläche „Skript ausführen“ klicken. |
| |
Und es kommt als ???, ohne Daten. Und Sie können dieses Skript beispielsweise in Ihrem Menü speichern und die Daten abrufen, es kann sich um eine riesige Datenmenge handeln. Sie können einfach auf die Schaltfläche „Von Datenbank aktualisieren“ klicken und die Tabelle wird mit allen Daten aus der Datenbank oder anderswo gefüllt. |
| |
Das ist also eine schöne Möglichkeit |
| |
um einfach das Skript zu verwenden |
| |
um die Daten aus der Datenbank abzurufen. |
| |
Das zweite Beispiel |
| |
besteht darin, eine Abfrage aus einer Tabelle heraus zu verwenden. |
| |
Also so. Wenn Sie über eine Datentabelle verfügen 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 das geschieht mit diesem Skript. |
| |
Und wie Sie dieser Tabelle entnehmen können, habe ich die Namen ermittelt und eine Abfrage durchgeführt |
| |
um Daten aus einer anderen Tabelle von Big Class Families abzufragen. |
| |
Und wie funktioniert es? |
| |
Sie finden es in diesem Skript. |
| |
Es ist ziemlich kurz. Hier werden die Namen wie hier definiert aus der ersten Tabellenabfrage übernommen. |
| |
Die Namen werden in die Abfrage eingesetzt. |
| |
Und hier wird die Frage an den Tisch „Big Class Families“ gestellt. |
| |
Okay, ich muss diese Tabelle auch schließen. |
| |
Hierbei handelt es sich um ein benutzerdefiniertes Abfrageskript mit grafischer Benutzeroberfläche. Wenn Sie also beispielsweise eine große Datentabelle in der Datenbank haben und oft 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. Es funktioniert also so. |
| |
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 an, 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 |
| |
und hier erhalten Sie mit diesen Einschränkungen das richtige Ergebnis. Und Sie können, wie Sie hier sehen können, und im Quellskript oder im SQL, |
| |
Die Einschränkungen sind hier |
| |
über die grafische Benutzeroberfläche definiert. |
| |
Und wie geht das? |
| |
Funktioniert die Scripting-Arbeit? Es ist ein wenig |
| |
natürlich komplexer. Es gibt also die Filterabfrage. |
| |
Die Spaltenabfrage. |
| |
Hier ist ein Skript, eine Funktion, die das umwandelt |
| |
Datenfilterbedingungen in eine SQL-Bedingung umwandeln. |
| |
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 zweistufige Abfrage. Gehen wir also davon aus, dass Sie zunächst einige Batch-IDs abfragen müssen. |
| |
Und um diese IDs in eine andere Abfrage zu übernehmen, vielleicht in eine andere Datentabelle, um zusätzliche Daten zu erhalten, |
| |
Du kannst es so machen. Hier habe ich also die Big-Class-Datentabelle als Filter verwendet. Also habe ich nur das Männchen gefiltert |
| |
Und |
| |
gleich oder jünger als 13 Jahre alter Schüler. |
| |
Und habe diese Namen zur 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 der Filtertabelle. Und ich kann es gebrauchen |
| |
die Spalten der Filtertabelle hier in dieser Tabelle, als ob sie es wären |
| |
in dieser Tabelle. |
| |
Das ist also eine gute Möglichkeit, mehrere Tabellen zu haben und den Inhalt in einer Tabelle zu verwenden. |
| |
Und das letzte Beispiel ist |
| |
wie man zwei oder mehrere Abfragen parallel im Hintergrund ausführt. Deshalb habe ich hier kein Beispiel. Es wird in der JMP-Community diskutiert. Und wenn Sie Interesse haben, können Sie gerne vorbeischauen. |
| |
Jetzt bin ich mit meinen Beispielen fertig und die Skripte für das Tagebuch und das Präsentationsmaterial sind online verfügbar. |
| |
Vielen Dank an die Community für die wunderbaren Diskussionen und an die JMP-Entwickler für die Erstellung und Wartung dieser großartigen Software. Und zum Schluss vielen Dank für Ihre Aufmerksamkeit. |