Hallo zusammen! Herzlich willkommen zu dieser Präsentation über den Import komplexer Daten mithilfe von Mausklicks und grundlegenden Kenntnissen im Umgang mit Codes. Heute ist meine Kollegin Wendy Tseng mit dabei. Wir sind beide Systemingenieurinnen bei JMP. Mein Name ist Monique Roerdink Lander.
Wir werden heute über den Import komplexer Daten sprechen. Das Thema entstand, weil ich in meiner Zeit in der Forschung und Entwicklung auf einige Herausforderungen gestoßen bin. Wir werden heute drei Beispiele besprechen, die alle mit dem Import mehrerer Elemente zu tun haben: mehrere Bilder, mehrere Datentabellen von Webseiten oder mehrere PDF-Seiten.
Es handelt sich hierbei um komplexe Datenquellen, die möglicherweise andere Datentypen, wie beispielsweise experimentelle Daten, ergänzen sollen. Als ich mit diesen Herausforderungen konfrontiert war, verfügte ich zunächst nicht über ausreichende Skripting-Kenntnisse. Ich habe es zwar gelernt, um diese Probleme zu bewältigen, aber nicht jeder hat die Zeit oder das Interesse, JSL zu lernen.
Das bedeutet, dass der effiziente Import dieser Datenart schwierig sein kann und Sie möglicherweise ganz darauf verzichten, weil Ihnen die Zeit dafür fehlt. Dabei muss es gar nicht so schwierig sein, insbesondere dank des Workflow Builders von JMP, der in JMP 17 eingeführt und in JMP 18 um wichtige Funktionen erweitert wurde.
Heute zeigen wir Ihnen, wie Sie den Import dieser Art von Daten automatisieren können. Wir verwenden dazu den Workflow Builder und verzichten auf direkten JSL-Code. Stattdessen analysieren wir den JSL-Code. Wir setzen Grundkenntnisse des Workflow Builders voraus; falls nicht, tauchen wir direkt in die Materie ein. Wir haben heute drei Beispiele. Im ersten Beispiel zeigt meine Kollegin Wendy, wie man Bilder automatisch in eine Datentabelle importiert.
Das muss ich unbedingt machen. Es wäre eine Menge Arbeit. Ich habe in der Waschmittelentwicklung gearbeitet und dabei Verschleißtests an Brillen durchgeführt. Dabei sind Hunderte von Fotos von Brillen entstanden. Ich wollte diese Fotos in meine Datentabelle einfügen, um sie mit den Daten aus der Bildanalyse zu verknüpfen.
Das war für mich damals ziemlich knifflig. Wendy wird uns zeigen, wie es effizienter geht. Im zweiten Beispiel erkläre ich, wie man PDF-Dateien effizienter importiert und die notwendigen Bereinigungsschritte durchführt. Zum Schluss zeigt uns Wendy, wie man Daten von einer Website importiert. Damit übergebe ich das Wort an Wendy.
Danke, Monique. In diesem ersten Beispiel zeige ich dir, wie du Bilder einsetzen kannst, um dein Datenverständnis und deine Kommunikation zu verbessern. Schauen wir uns an, worüber wir sprechen. Anstelle von Brillen betrachten wir Bilder von Hunden.
Der vorliegende Datensatz enthält in dieser Spalte Bilder von Hunden. Er umfasst 28 Zeilen mit insgesamt 28 Hundebildern. Diese Bilder wurden mit einem öffentlich zugänglichen Datensatz des American Kennel Club verknüpft, der verschiedene Informationen über Hunde enthält, darunter Angaben zur Häufigkeit der Fellpflege und zum Fellwechsel.
Als Nächstes betrachten wir ihr Verhalten. Hier ist ein Diagramm, das die Beliebtheit der Hunde im Vergleich zu ihrem Verhalten zeigt. Wenn ich mit dem Mauszeiger über einen bestimmten Punkt fahre, erscheint ein Bild des jeweiligen Hundes. Hier ist der Affenpinscher. Das ist ein anschauliches Beispiel, das die Daten sehr gut verdeutlicht. Wie habe ich diese Daten zusammengetragen? Nun, wie bereits erwähnt, gibt es einen öffentlich zugänglichen Datensatz des American Kennel Club. Ich habe diese Bilder in einem Ordner gespeichert und zusammengeführt.
Wir sehen uns das jetzt genauer an. Zunächst gebe ich Ihnen einen Überblick über das erste Beispiel. Ich beginne mit dem Import mehrerer Dateien, um Bilder aus einem Ordner einfach einzufügen. Anschließend sehen Sie den Workflow Builder in Aktion: Er verknüpft diese Bilder mit einem AKC-Datensatz und erstellt daraus ein Gesamtbild. Wir werden die verschiedenen Entwicklungsstufen dieses Beispiels betrachten – von einfach bis komplex.
Im letzten Schritt werden Sie sehen, wie Sie mit benutzerdefiniertem JSL eine Benutzerabfrage im Workflow Builder erstellen. Beginnen wir mit dem Importieren mehrerer Dateien, um Bilder einzubinden. Ich habe hier einen Ordner namens „AKC“, der Hundebilder enthält. Er enthält auch andere Dateien, aber hauptsächlich Hundebilder. Wie Sie sehen, sind die Hundebilder nach Rasse benannt. Das ist wichtig, da wir diese Daten mit dem AKC-Datensatz verknüpfen werden, der ebenfalls den Rassenamen enthält. Bevor ich beginne, starte ich einen neuen Workflow und klicke auf „Aufzeichnen“.
Jetzt importieren wir mehrere Dateien und navigieren zu dem Ordner, in dem sich diese Dateien befinden. Hier ist der AKC-Ordner, und wir möchten nur Bilder auswählen. Anschließend fügen wir eine Spalte für den Dateinamen hinzu, da wir den Rassenamen in die Datentabelle aufnehmen möchten. Sie sehen nun, dass 28 Bilder in einem Schritt importiert wurden. Die Spalte für den Dateinamen kann ich bearbeiten. Ich muss die Endung „.JPG“ entfernen, um die Datei mit dem Rassenamen im AKC-Ordner zu verknüpfen.
Ich werde den Workflow jetzt anhalten. Ich möchte Ihnen nur zeigen, dass JMP diese Schritte in diesem Workflow als JSL-Code speichert. Öffnen wir nun den fertigen Workflow. Hier sehen Sie ihn, und ich werde ihn Ihnen vorführen. Ich habe ihn zuvor aufgezeichnet, um die Daten zu importieren und die Schritte zu erstellen. Wichtig ist dabei Folgendes: Wenn Sie mehrere Dateien importieren, benennt JMP die importierte Datentabelle nach dem Namen der ersten Datei und unterstreicht den Namen der letzten Datei.
In meinem AKC-Ordner war mein erster Hund ein Affenpinscher und mein letzter ein Otterhund. Ich führe diesen Workflow jetzt einmal durch, und hier ist das Ergebnis. Es ist dasselbe Diagramm wie zuvor, nur dass ich die Punkte durch Bilder der Hunde ersetzt habe.
Schauen wir uns nun diese Verhaltenskategorien an. Ich habe vier Kategorien: aufmerksam, reaktionsschnell und aufgeschlossen. Der vollständige AKC-Datensatz umfasst 277 Zeilen. Es gibt mehr Kategorien als in der Grafik dargestellt, da ich nur 28 Bilder verwendet habe. Hunde, die distanziert und misstrauisch sind, habe ich bewusst weggelassen. So kann ich Ihnen die Wiederverwendbarkeit dieses Workflows verdeutlichen.
Wir fügen nun vier distanzierte Hunde zu unserem AKC-Ordner hinzu und führen diesen Workflow anschließend erneut aus, um seine Flexibilität zu demonstrieren. Dieser Workflow wurde ursprünglich für 28 Hunde erstellt. Ich öffne den Ordner. Der letzte Hund war der Otterhound. Wir fügen nun die vier distanzierten Hunde von der rechten Seite hinzu und verschieben sie in den AKC-Ordner, nicht in den AKC2-Ordner.
Hier ist unser AKC-Ordner. Ich füge die neuen Hunde ein. Jetzt haben wir die distanzierten Hunde zum AKC-Ordner hinzugefügt und spielen den Workflow erneut ab. Sie sehen nun, dass die distanzierten Hunde im Diagramm angezeigt werden. So flexibel ist der Workflow Builder. Wir haben einen Workflow aufgezeichnet, der Bilder importiert, sie mit dem AKC-Datensatz verknüpft, die Daten bereinigt und ein Diagramm erstellt. Wenn wir dann weitere Dateien zu diesem Ordner hinzufügen, klicken wir einfach auf „Ausführen“, und alles wird aktualisiert.
Schauen wir uns einen dieser Workflow-Schritte genauer an. Die nächste Stufe der Komplexität erfordert etwas Codeanalyse, aber nicht zu viel. Wir können uns den Schritt „Mehrere Dateien importieren“ ansehen und den erfassten JSL-Code analysieren. JMP greift auf einen bestimmten Ordnerpfad zu, in dem sich meine Hundefotos befinden.
Wenn ich einen anderen Ordner referenzieren möchte, kann ich einfach diesen Dateipfad ändern. Ich habe beispielsweise einen weiteren Ordner namens AKC2, der noch mehr Hundebilder enthält. Ich nehme hier lediglich diese kleine Änderung vor, und dann können wir den Workflow wiederholen. Diesmal sehen Sie 53 statt 32 Hunde, und das resultierende Diagramm ist deutlich umfangreicher.
Eine recht einfache Methode zur Codeverfolgung besteht darin, die Schritteinstellungen zu überprüfen und den JSL-Code leicht anzupassen. In dieser letzten Iteration nehmen wir noch eine Änderung vor. Wenn ich diesen Workflow anderen zur Verfügung stellen möchte, damit sie ihn ausführen können, ist es sinnvoll, den ersten Schritt so zu ändern, dass der Benutzer aufgefordert wird, einen eigenen Dateiordner aus seinem Verzeichnis auszuwählen.
Wir kommen gleich wieder zu diesem Schritt und scrollen ganz nach unten. Anstelle des Schritts „Daten importieren“ können wir „Fenster erstellen“ verwenden. Außerdem empfehle ich, den Ordnerpfad durch einen allgemeinen Pfad wie „Desktop“ oder „Dokumente“ zu ersetzen. Spielen wir jetzt einfach diesen ersten Schritt aus.
Sie sehen nun, dass der Ordner standardmäßig auf „Dokumente“ eingestellt ist. Alle meine Einstellungen, wie die Spalte „Dateiname hinzufügen“, wurden beibehalten, und der Benutzer wird aufgefordert, zu seinen Bildern zu navigieren. Abschließend haben wir uns angesehen, wie man mehrere Dateien importiert, um Bilder in einer einzigen Tabelle zusammenzuführen, und anschließend den Workflow Builder, um einen anpassbaren Workflow zu erstellen. An dieser Stelle übergebe ich das Wort an Monique für das zweite Beispiel.
Klar. Danke, Wendy. Ich teile mal meinen Bildschirm. So. Ich blende meine Besprechungssteuerung aus. So. Gut. Wir sind uns wohl alle einig, dass die viel niedlicher waren als Bilder von Brillen. Das war ein wirklich schönes Beispiel. Im zweiten Beispiel schauen wir uns Daten aus einer PDF-Datei an.
Warum? In meiner Forschungszeit vertiefte ich mich manchmal in ein Thema und stieß dabei auf wertvolle Informationen in PDF-Dateien. Das konnten chemische Referenztabellen, Zusammensetzungsdaten, Informationen zu Tensiden von Lieferanten oder zu unseren Rohstoffen sein. Auch Analyseberichte waren möglich.
Oftmals handelte es sich um große Datenmengen, und ich wollte diese nicht manuell durch einfaches Kopieren in eine Datentabelle importieren. Wie gelangen diese Daten also in JMP? Ich zeige Ihnen heute zunächst den benutzerfreundlichen PDF-Importassistenten, der dem Excel-Importassistenten und anderen Importassistenten sehr ähnlich ist.
Ein hervorragender Ausgangspunkt. Wir werden ihn in Verbindung mit dem Workflow Builder verwenden und dann ähnlich wie Wendy vorgehen, den Quellcode hier und da anpassen, um den Import zu automatisieren und einige Teile des Prozesses für uns zu vereinfachen.
In JMP 18 wurde dann eine praktische Funktion im Workflow Builder eingeführt, die ein Problem bei der Bereinigung deutlich löst. Nach dem Import vieler PDF-Seiten müssen diese bereinigt werden, und das kann eine große Anzahl an Tabellen sein. Der Workflow Builder ermöglicht es uns nun, diese Tabellen zu durchsuchen. Ich zeige Ihnen das gleich. Ich schließe das hier ab. Zunächst zeige ich Ihnen die PDF-Datei, mit der wir arbeiten werden. Ich öffne sie. Hier ist sie.
Wir sehen uns dieses Beispiel an, eine zweiseitige PDF-Datei, die die Fettsäurezusammensetzung gängiger Fette auflistet. Auf Seite eins ist die Zusammensetzung tierischer Fette aufgeführt, auf Seite zwei die von pflanzlichen Fetten und Ölen.
Es sieht auf den ersten Blick wie eine ordentlich formatierte Tabelle aus, doch bei genauerer Betrachtung der ersten Seite zeigt sich, dass sie zwar für ein PDF gut aussieht, aber für eine JMP-Datentabelle einige Probleme aufweist. Das deutet darauf hin, dass nach dem Import der Daten noch einiges an Bearbeitung nötig ist, um sie in ein nutzbares Format zu bringen.
Wir haben beispielsweise keine Spaltenüberschriften. Die erste Spalte enthält die Kategorien. Dann folgt eine Spalte mit Prozentangaben. Hier ist noch eine weitere Spalte mit Prozentangaben. Außerdem haben wir zwei Spalten mit Fettsäuren: eine für gesättigte und eine für ungesättigte Fettsäuren.
Dann haben wir hier noch diese andere Spalte. Ein weiteres Problem sind die Unterüberschriften. Zum Beispiel ist „Rinderfett“ eine Unterüberschrift. Sie enthält Zwischensummen. Die könnten wir entfernen, aber wir müssen diese Unterüberschrift natürlich auch in einen leeren Bereich einfügen.
Das ist ein weiteres Problem. Wie bereits erwähnt, erstrecken sich einige dieser Unterüberschriften über zwei Zeilen, was natürlich auch in JMP zu Problemen führen wird, da JMP nicht erkennt, dass diese zusammengehören.
Dann gibt es noch Daten, die sich über mehrere Spalten erstrecken. Hier gibt es einige Probleme, die wir nach dem Import beheben müssen. Kehren wir zu unserem Journal zurück und sehen wir uns zunächst das Endergebnis an. Wir möchten JMP verwenden, um beide Seiten zu importieren, idealerweise nur eine Seite bearbeiten und anschließend alle Bereinigungsschritte durchführen.
Wir bearbeiten am besten nur eine Seite und wenden die Änderungen dann mit JMP auf beide Seiten an, um die Daten anschließend zusammenzuführen. Ich habe das in einem Workflow aufgezeichnet. Das ist das Endergebnis, und wir werden es später nachbilden. Ich spiele diesen Workflow zuerst ab.
Hier öffnen sich gerade zwei Seiten, und der Workflow-Builder führt alle Bereinigungsschritte durch. Es sind viele Schritte. Zuerst werden sie für die erste Datentabelle ausgeführt, dann werden sie zurückgesetzt und für die zweite Datentabelle wiederholt. Anschließend werden beide Datentabellen zusammengeführt und die kombinierten Daten ausgegeben.
So, jetzt geht es um gesättigte Fettsäuren im Vergleich zu gesättigten Fettsäuren insgesamt. Gut, ich schließe diese Ausgaben, indem ich meinen Workflow zurücksetze. Ich schließe diesen Workflow komplett und öffne einen leeren Workflow. Diesen docke ich hier rechts in meinem aktuellen Projekt an.
Okay, fangen wir also von vorne an und öffnen die PDF-Datei. Ich möchte Folgendes sagen: Ich war versucht, ein Beispiel zu zeigen, bei dem der PDF-Import einwandfrei funktioniert, aber ich denke, darauf verzichte ich. Sie müssen mir einfach glauben, dass es manchmal so ist: Man öffnet eine PDF-Datei mit JMP, und JMP erkennt die gewünschte Datentabelle automatisch. Mit nur zwei Klicks hat man sie dann in einer Datentabelle. Das ist das perfekte Beispiel.
Ich zeige Ihnen ein nicht ganz perfektes Beispiel. Ich öffne diese PDF-Datei. Durch Doppelklicken auf den Link hier öffnet sich der PDF-Importassistent. In der Vorschau links sehen Sie sofort, dass JMP diese Tabelle nicht mehr korrekt erkennt. Ein Teil der Tabelle wird zwar erkannt, ist aber nicht nutzbar.
Als Erstes müssen wir „Alle Tabellen ignorieren“ auswählen, dadurch werden alle Einstellungen zurückgesetzt. Jetzt, wo alles zurückgesetzt ist, kann ich einfach mit der Maus diese Tabelle hier auswählen.
Wenn ich das mache, versucht JMP zu erraten, wo sich meine Spalten befinden. Ich zoome hier etwas hinein. Man sieht, dass nicht alle Spalten erkannt wurden. Das liegt an Problemen mit Überschriften, die sich über mehrere Spalten erstrecken.
Das ist kein Problem, da ich diese manuell per Rechtsklick hinzufügen kann. Ich kann beispielsweise hier rechts neben meiner Gewichtsprozentangabe klicken und eine Spaltentrennlinie einfügen. Dasselbe mache ich dann hier, wo wir die zweite Spalte mit der Gewichtsprozentangabe hatten. Ich füge hier und hier jeweils eine Spaltentrennlinie ein.
In diesem Fall ist dies die bestmögliche Einstellung für diese Tabelle. Nur zur Info: Unter dem roten Dreieck befinden sich einige Optionen. Sie können beispielsweise die Anzahl der Zeilen festlegen, die als Kopfzeile verwendet werden sollen – ein sehr nützliches Werkzeug.
In diesem Fall importiere ich nur diese erste Tabelle. Natürlich könnte ich die gleiche Auswahl auch auf Seite 2 treffen, und das wäre nicht allzu aufwendig, da es sich nur um eine zweiseitige PDF-Datei handelt. Was aber, wenn die Tabelle 10 oder 20 Seiten umfasst? Dann müsste ich unzählige Spaltentrenner einfügen, und das wäre ziemlich mühsam.
Ich lade jetzt die erste Seite hoch und wir schauen, was wir damit anfangen können. Ich klicke auf OK. Ich hatte vergessen, den Workflow-Recorder zu starten, also erinnert mich John daran. Ich sage: „Ja, bitte aufnehmen.“ Hier ist die Tabelle und dieser Schritt wurde ebenfalls aufgezeichnet. Ich beende die Aufnahme. Ich doppelklicke auf den aufgezeichneten Schritt und verschiebe ihn ein Stück, damit wir uns den JSL-Code ansehen können.
Hier ist der Code für den ersten Importschritt. Wir können sehen, was passiert. Hier befindet sich die Datei. Dann gibt es eine PDF-Tabellenfunktion, eine weitere Tabellenfunktion und etwas namens „Tabellenname“. Das ist tatsächlich der Name meiner Datentabelle. Ich sehe Angaben zu Zeilen, Heteros und Seite 1. Dann sehe ich ein Rechteck. Das muss das Rechteck sein, das ich gezeichnet habe, und ich sehe einen Spaltenrand. Das sind die Koordinaten für die Trennlinien.
Wenn ich das sehe, bin ich wirklich versucht, mit der zweiten Seite ein bisschen herumzuspielen. Machen wir das. Wir wollten ja diese zweite Seite einfügen. Nehmen wir diese hier und verwenden wir sie für die „2“. Das machen wir auch hier im Tabellennamen. Wir ändern die „1“ in eine „2“.
Jetzt möchte ich diesen Code ausführen. Das geht direkt von hier aus, indem ich mit der rechten Maustaste klicke und „Skript ausführen“ auswähle. Machen wir das. Nun hat sich eine zweite Tabelle geöffnet. Ich verkleinere sie etwas, öffne sie erneut und schaue mir die zweite Tabelle an.
Ich sehe sofort, dass es funktioniert hat, denn in dieser Datentabelle sind die pflanzlichen Öle und Fette aufgeführt. Dies war meine erste Tabellenseite mit den tierischen Fetten. Es war eine sehr einfache Methode, mein vom Workflow-Builder erstelltes Skript anzupassen, um eine zweite Seite zu importieren. Ich wiederhole es noch einmal: Das Kopieren und Einfügen oder Ändern dieses Codes hier könnte schneller sein, als alle Spaltentrenner manuell hinzuzufügen. Das könnte Zeit sparen.
Als Nächstes möchte ich den zweiten Teil, die Bereinigung, vorbereiten. Zuerst führe ich sie durch und erkläre Ihnen anschließend, warum ich das so mache. Ich möchte einen Schritt, der beide Datentabellen öffnet. Ich muss wissen, wie JMP den Import zweier Tabellen mit dem PDF-Importassistenten aufzeichnet. Falls ich das nicht weiß, starte ich die Aufzeichnung einfach neu. Zuerst setze ich hier meine Ausgaben zurück und schließe diese hier, um sie zu speichern.
Jetzt starte ich die Aufnahme erneut und klicke auf eine PDF-Datei. Ich ignoriere nun alle Tabellen. Mich interessiert nicht so sehr, wie die Tabellen genau aussehen sollen. Ich möchte nur sehen, was passiert, wenn ich zwei Tabellen pro Seite habe. Ich klicke auf „OK“. Ich sehe mir den zugehörigen Schrittcode an.
Das ist der entsprechende Schrittcode. Beim ersten Import wurde dieser Schritt vermutlich hier ausgeführt. Beim Importieren der beiden Tabellen scheint JMP die Tabellenfunktion zu wiederholen. Hier befindet sich eine Tabelle, dann ein Komma und dann die nächste Tabelle. Das scheint die übliche Vorgehensweise beim Importieren zweier Tabellen zu sein.
Jetzt, wo ich das weiß, kann ich diesen Schritt löschen. Ich brauche ihn nicht. Ich kann zu diesem Schritt zurückkehren. Jetzt mache ich das Ganze noch etwas größer. Ich setze den Cursor links neben die Klammer meiner ersten Tabelle, damit die schließende Klammer hervorgehoben wird. Da ist sie. Jetzt weiß ich, dass ich das alles kopieren muss. Also drücke ich einfach Strg + C. Dann ziehe ich das hier nach unten und füge es mit Strg + Einfg ein. Und ich füge das Komma hinzu, genau wie wir es herausgefunden haben.
Jetzt kann ich das ändern. Zuerst ändere ich das wieder auf eins. Ich ändere den Titel und die Seitenzahl wieder auf eins, und dann steht da Seite 2 und Seite 2. Okay, schließen wir das alles und schauen, ob es funktioniert.
Wenn ich diesen Schritt ausführe, erhalte ich tatsächlich diese beiden Datentabellen. So habe ich das jetzt in einem Schritt erledigt. Warum habe ich das alles gemacht? Ich zeige es Ihnen. Ich schließe jetzt meine Ausgaben. Ich schließe diesen Workflow und öffne einen neuen. Ich docke das Ganze auch wieder rechts an.
Dieser Workflow beinhaltet diesen Schritt. Ich doppelklicke mal darauf, wo ich zwei Tabellen importiere. Hier ist meine Tabelle 1 und hier meine Tabelle 2 für Seite 2. Anschließend habe ich die Bereinigungsschritte erfasst, und zwar alle in Tabelle 1. Wenn ich den ersten Schritt markiere, sehen Sie, dass er sich auf Seite 1 befindet. Ich habe alle meine Bereinigungsschritte gruppiert, und Sie sehen, dass es eine ganze Menge sind. Wir werden in dieser Präsentation nicht näher darauf eingehen, aber wir werden im Anschluss eine entsprechende Ressource bereitstellen.
Wichtig ist nun, dass wir, nachdem wir all diese Bereinigungsschritte an einer der Datentabellen durchgeführt haben, wissen, wie wir das bei der zweiten machen. In JMP 18 ist das ganz einfach. Wir müssen lediglich mit der rechten Maustaste klicken und „Gruppierungsbreite für jedes Element“ auswählen. Moment, ich habe alle Bereinigungsschritte, die ich wiederholen möchte, ausgewählt und klicke dann mit der rechten Maustaste und wähle „Gruppierungsbreite für jedes Element“.
JMP hat diese Schritte nun für jedes Element gruppiert bzw. zusammengefasst. Es wird jedoch angezeigt, dass keine Quelle ausgewählt wurde. Das muss ich ändern. Ich muss JMP mitteilen, worauf diese Schritte angewendet werden sollen. Dazu schaue ich mir in den Schritteinstellungen die Quelle an. Es ist ganz einfach. Ich muss JMP lediglich den Workflow-Schritt nennen, der meine verschiedenen Ausgaben generiert.
In diesem Fall wähle ich den Schritt „In PDF-Seiten importieren“. In diesem Schritt werden zwei Tabellen erstellt. JMP weiß nun, dass alle diese Schritte für beide hier generierten Ausgaben ausgeführt werden müssen. Mal sehen, ob es funktioniert.
Ich werde das jetzt ausprobieren. Wir haben zwei Ausgänge geöffnet. Es läuft. Nein, es läuft nicht. Es führt die Schritte der ersten Tabelle aus. Sobald es fertig ist, sollte es zur zweiten Tabelle wechseln. So, jetzt läuft die zweite Tabelle. Ich finde das eine wirklich praktische Funktion, besonders wenn man mehr als zwei Tabellen hat.
Ich habe vor Kurzem eine 13-seitige PDF-Datei importiert. Nach dem Import habe ich eine der Tabellen bereinigt und mir anschließend alle Schritte der gesamten Datei angesehen. Es war sehr übersichtlich. Genau das wollte ich Ihnen zeigen.
Wir kommen nun zum letzten Beispiel. Hier ist ein Beispiel: Daten von einer Website importieren. Das stammt direkt aus meiner Zeit in der Forschung und Entwicklung. Ich brauchte Daten zur Wasserhärte. Die Wasserhärte ist ein wichtiger Faktor bei der Rezepturentwicklung. Ich fand einige hilfreiche Informationen auf einer Website und habe das Ganze sehr mühsam aufbereitet. Wendy wird uns jetzt zeigen, wie es viel eleganter geht. Ich beende meine Ausführungen und übergebe das Wort an dich, Wendy.
Okay, klingt gut. Schauen wir uns also Beispiel 3 an und betrachten wir die For-Each-Schleife genauer. Anders ausgedrückt: For Each ist eine Schleife. Gehen wir zur Website, auf der Monique diese Wasserhärtedaten gefunden hat. Ich bin hier bei HydroFlow USA, und wenn wir zu diesem Bereich mit interaktiven Karten gehen, kann ich eine Karte der USA aufrufen.
HydroFlow USA stellt Daten zur Wasserhärte auf Stadtebene bereit. Ich navigiere zu einem der Bundesstaaten, Minnesota, wo wir beide wohnen, und klicke auf diesen Link, um Ihnen zu zeigen, dass es auf dieser Seite mit Informationen für Minnesota eine Tabelle mit Städten, den zugehörigen Postleitzahlen und der Wasserhärte in zwei verschiedenen Einheiten gibt.
Betrachtet man diese URL, so folgen die URLs der anderen Bundesstaaten derselben Struktur. Es ist der Name des Bundesstaates, gefolgt von der Wasserhärte. Moniques Problem bestand darin, auf diese Daten im Internet zugreifen zu können, um ihre Analyse zu ergänzen.
Mithilfe von JMP konnte ich alle Wasserhärtedaten der einzelnen Bundesstaaten in eine Datentabelle wie diese importieren. Sie sehen 855 Zeilen, da jeder Bundesstaat mehrere Zeilen für die jeweiligen Städte enthält. Dank dieser Daten konnte Monique ihre Analyse erweitern. Wenn ich das Video starte, sehen Sie, wie einfach sich die Wasserhärte auf Bundesstaatsebene berechnen lässt.
In diesem dritten Beispiel zeige ich Ihnen einige Tools. Eines davon ist die Verwendung von JMPs „Internet Open“, um Daten von einer Webseite abzurufen. Anschließend verwenden wir eine Schleife, um die Daten aller Bundesstaaten in einer Tabelle zusammenzuführen.
Beginnen wir mit einem Blick auf „Internet öffnen“. Ich kopiere zunächst die URL der Webseite. Dazu drücke ich Strg + C für die Webseite mit den Informationen zur Wasserhärte in Minnesota und starte einen Workflow. Ich klicke auf „Aufzeichnen“ und gehe dann zu „Datei“ > „Internet öffnen – Webseite“. Ich füge die URL ein und klicke auf „OK“.
JMP erkennt eine Tabelle auf dieser Seite. Ich klicke auf OK. Dies sollte Ihnen einen Eindruck davon vermitteln, was beim Importieren von Daten auf einer einzelnen Seite möglich ist.
Ich gehe jetzt zum Workflow und stoppe die Aufzeichnung. Wenn ich mir die Aufzeichnung ansehe, sehe ich, dass JMP diesen JSL-Code ausführt bzw. aufgezeichnet hat. Es handelt sich lediglich um eine Open-Anweisung mit dem URL-Namen und weiteren Details, dass es sich um eine HTML-Tabelle handelt. Vorausschauend betrachtet, möchten wir nicht jede der 51 Seiten einzeln aufrufen müssen.
Idealerweise hätten wir diesen einen Importschritt, den wir für alle Zustände durchlaufen würden. Wir kommen nun auf die Wasserhärte zurück, sehen uns aber zunächst ein Beispiel aus der JMP-Dokumentation an, das die Funktionsweise der einzelnen Schritte beschreibt.
Wenn Sie diesem Link in den Materialien folgen, gelangen Sie direkt zum Beispiel. Ich werde das Beispiel in den Folien erläutern, und dann bauen wir es gemeinsam nach. Na, mal sehen. Ich zeige Ihnen meine Folien.
Ich sorge dafür, dass das in der hochgeladenen Version behoben ist. Im Beispiel der JMP-Dokumentation geht es darum, eine Reihe von Diagrammen zu erstellen, genauer gesagt drei Verteilungsdiagramme für jedes Geschlecht. Der verwendete Datensatz bezieht sich auf Diabetes und umfasst zwei Geschlechter. Die Vorgehensweise war folgende: Aus dem Diabetes-Datensatz wurde eine Teilmenge mit Geschlecht 1 und Geschlecht 2 erstellt, anschließend wurden die Verteilungsdiagramme nur für Geschlecht 1 erstellt und dieser zweite Schritt in eine Schleife eingebettet, sodass der Workflow für beide Geschlechter funktioniert, ohne dass die Schritte für Geschlecht 2 separat aufgezeichnet werden müssen.
Schauen wir uns an, wie man das von Grund auf erstellt. Ich starte einen neuen Workflow und klicke auf „Aufzeichnen“. Suchen wir den Diabetes-Datensatz. Hier ist er, und hier sehen Sie Geschlecht 1 und Geschlecht 2. Zuerst filtern wir die Daten nach Geschlecht. Das machen wir noch einmal, da wir die Zeilen abwählen möchten. Filtern nach Geschlecht. Hier in der Vorschau sehen Sie Geschlecht 1 und Geschlecht 2. Ich sollte zwei Tabellen erhalten, und das tue ich auch. Hier sind Geschlecht 1 und Geschlecht 2.
Ich beginne mit Geschlecht 1 und erstelle meine Visualisierungen. Wir halten es einfach und ich erstelle eine Verteilung mit drei Variablen. Jetzt gehe ich zu meinem Workflow. Schauen wir uns den korrekten Workflow an. Hier sehen Sie, dass ich mehrere Schritte aufgezeichnet habe, da ich das Ganze mehrmals wiederholen musste.
Sie werden jetzt einen kleinen Einblick in den Entstehungsprozess erhalten. Wir löschen die Schritte, die ich nicht benötige, da ich die Daten erneut eingereicht habe. Lassen Sie uns das Ganze kurz testen, um sicherzustellen, dass wir alles Notwendige haben. Öffnen Sie die Datentabelle, filtern Sie sie nach Geschlecht 1 und Geschlecht 2. Anschließend sollte die Verteilung für Geschlecht 1 angezeigt werden. Voilà. Geschlecht 1, Geschlecht 2 und hier die Daten für Geschlecht 1.
Nun nehme ich den Berichtsschritt, klicke mit der rechten Maustaste und wähle „Gruppieren mit: Für jedes Element“. Dieser Schritt soll in einer Schleife ausgeführt werden. Wenn ich nun zu diesem Workflow-Schritt komme, ist der bereits ausgewählte Schritt der vorherige, in dem ich die Teilmenge erstellt habe. Hier sind also keine Änderungen nötig. Wenn ich den Workflow jetzt erneut ausführe, werden zwei Verteilungen angezeigt, eine für jedes Geschlecht. Voilà. Hier ist Geschlecht 1 und hier ist Geschlecht 2.
Wie können wir dieses Framework nutzen, um die gewünschten Daten zur Wasserhärte aus HydroFlow zu erhalten? Hier noch ein paar Aufräumarbeiten. Wir kehren zu den Folien zurück und passen das Ganze an die Wasserhärte an. Da ich die Bundesstaaten durchlaufen wollte, habe ich mir überlegt, eine Tabelle ähnlich dem Diabetes-Beispiel zu erstellen und diese dann in Untertabellen für jeden Bundesstaat mit der entsprechenden URL aufzuteilen. Ich speichere den Internetstatus für einen Bundesstaat und verwende dann eine Schleife, um den Internetstatus für alle Bundesstaaten zu ermitteln.
Lass uns den von mir erstellten Workflow ausführen. Dabei fällt auf, dass nur wenige Zustände angezeigt werden, da die Ausführung aller Zustände zu lange dauern würde. Ich führe den Workflow direkt vor den Datenbereinigungsschritten aus, damit wir uns kurz austauschen können, und spiele anschließend die restlichen Zustände ab.
Die Tabelle „Bundesstaaten“ wird geöffnet und anschließend in die einzelnen Bundesstaaten unterteilt, die die URL enthalten. Nun sehen Sie, wie die Internetverbindung für jeden dieser Bundesstaaten geöffnet wird. Im Arbeitsbereich habe ich die Internetverbindung für diese fünf Bundesstaaten bereits geöffnet.
Wenn ich zum Workflow zurückkehre und die restlichen Schritte aktiviere, werden Sie sehen, wie all diese Daten in einer einzigen Zustandstabelle zusammengefasst werden, in diesem Fall mit nur fünf Zuständen, und anschließend ein Diagramm, das die Wasserhärte anzeigt.
Betrachten wir den Workflow, so sieht er für jeden Schritt aus. An dieser Stelle möchte ich eine zusätzliche Komplexität dieses Beispiels erläutern. Für den HTML-Import, der die Internetverbindung öffnen soll, war die Hinzufügung von benutzerdefiniertem JSL erforderlich. Genauer gesagt: Ich habe diesen Importschritt, der im Workflow-Builder aufgezeichnet wurde, angepasst. Nun gehe ich zurück zur Folie, um die konkreten Änderungen zu besprechen.
Diese Anweisung wird vom Workflow Builder protokolliert, wenn ich eine Internetverbindung für Alabama öffne. Da ich alle Bundesstaaten berücksichtigen möchte, ersetze ich sie durch eine generische Variable namens „Webadresse“. Um die Webadresse für die Tabelle „Alabama“ zu ermitteln, muss ich auf eine bestimmte Zelle in dieser Datentabelle zugreifen können, die die URL enthält.
Wenn man die JMP-Skriptsprache durchgeht und mit einer Datentabelle kommunizieren möchte, sagt man einfach „Datentabelle“ und hat dann den Namen der Datentabelle im Inneren.
Wenn wir dann auf eine Spalte in dieser Datentabelle verweisen, rufen wir die Datentabelle auf, gefolgt von einem Doppelpunkt und dem Spaltennamen. In diesem Fall wäre das: `data table state equals Alabama`, `URL` ist der Spaltenname. Da wir die URL in einer bestimmten Zelle suchen, fügen wir schließlich Klammern hinzu. Für alle Bundesstaaten verwenden wir die Zahl 1, da alle Tabellen nur eine Zeile enthalten – die Zelle mit der URL.
Zum Abschluss dieses Beispiels haben Sie gesehen, wie man über das Internet Daten von einer Webseite abrufen kann. Anschließend haben wir uns die `for each`-Schleife anhand des Beispiels aus der JMP-Dokumentation genauer angesehen. Danach konnten Sie sehen, wie ich das mit etwas benutzerdefiniertem JSL angepasst habe, um auf Daten aus dem Internet zuzugreifen. Nun übergebe ich das Wort an Monique, die das Thema abschließend behandelt.
Ja, danke, Wendy. Wir haben Ihnen heute gezeigt, wie Sie alle möglichen Daten – Bilder, Daten aus PDFs, Daten von Webseiten – importieren und das Ganze ohne Skripte automatisieren können. Der Workflow Builder ist ein großartiges Tool. Sie können ihn sogar noch weiter optimieren, indem Sie sich den generierten JSL-Code ansehen und ein paar kleine Anpassungen vornehmen. Scheuen Sie sich nicht, den JSL-Code zu analysieren und ihn genauer unter die Lupe zu nehmen. Vielen Dank für Ihre Teilnahme. Wir hoffen, dass Ihnen dieser Beitrag weitergeholfen hat.