Die Datenintegration in JMP ist ein zentraler Bestandteil des Analyse-Workflows. Daher führt JMP 18 neue Datenkonnektoren ein, um die Bandbreite der von JMP unterstützten Drittanbieter-Datenquellen zu erweitern. JMP 18 ermöglicht eine detailliertere Konfiguration von ODBC-Datenquellen und vereinfacht den Austausch dieser Konfigurationen mit Kollegen über verschiedene Plattformen hinweg sowie die Veröffentlichung in JMP Live. Wir erläutern die Datenkonnektoren nicht nur in ihrer aktuellen Form in JMP 18, sondern auch die geplanten Erweiterungen in zukünftigen JMP-Versionen.
Guten Morgen oder einen schönen Tag, je nachdem, welche Tageszeit Sie gerade haben. Mein Name ist Neal Siekierski. Ich bin Softwareentwickler bei JMP und einer der Hauptentwickler unseres Data-Connector-Projekts. Heute möchte ich Ihnen dieses Projekt vorstellen, seine Bedeutung für JMP 18 erläutern und Ihnen zeigen, welche Auswirkungen es zukünftig haben wird.
Wir konzentrieren uns hier auf diese drei Punkte. Genau das wollen wir mit Data Connect erreichen: Wir möchten die Anbindung an mehr Datenquellen vereinfachen. Außerdem möchten wir die Freigabe dieser Verbindungen erleichtern – sowohl für Ihre Kollegen, die dieselbe Plattform wie Sie (Mac oder Windows) oder eine andere Plattform nutzen, als auch für die gemeinsame Nutzung mit JMP Live. Neben dem Zugriff auf mehr Datenquellen möchten wir Ihnen auch die Möglichkeit bieten, all dies über eine einheitliche Benutzeroberfläche zu steuern.
Mit JMP 18 konnten wir nicht alles umsetzen, daher konzentrierten wir uns stattdessen auf ODBC. ODBC ist eine Technologie, die JMP zur Kommunikation mit entfernten Datenquellen und Datenbanken wie SQL Server, MySQL und vielen anderen verwendet. Wir entschieden uns für ODBC, da es bereits Zugriff auf verschiedene Datenbanktypen ermöglicht und somit die Möglichkeit bot, den Zugriff auf noch mehr Datenbanken zu erweitern.
Es gibt einige Hürden, die das derzeit etwas erschweren. Auch deshalb haben wir uns damit befasst. Eine der Schwierigkeiten liegt beispielsweise im SQL-Code. SQL ist eine Programmiersprache, mit der Daten aus Datenbanken abgerufen werden. JMP muss diesen Code generieren, ihn über die ODBC-API senden, um Ergebnisse zu erhalten und die Daten anzuzeigen.
Nicht alle Datenbanken verwenden exakt denselben SQL-Code. Nehmen wir beispielsweise die Datenbank PostgreSQL. Wir rufen einige Spalten einer Tabelle ab, in diesem Fall unsere bevorzugte Klasse. Die Abfrage sähe folgendermaßen aus: [Hier sollte der Code stehen]. Dieselbe Abfrage sieht für MySQL und andere Datenbanken jedoch so aus: [Hier sollte der Code stehen]. Bei PostgreSQL werden doppelte Anführungszeichen verwendet, bei MySQL Backticks und bei SQL Server wieder andere.
Aus diesem Grund muss JMP wissen, mit welcher Datenbank es kommuniziert. Diese Information können wir abrufen. Um sie jedoch tatsächlich nutzen zu können, muss JMP jeden Datenbanktyp kennen. Falls JMP einen bestimmten Datenbanktyp nicht kennt, greift ein bestimmtes Ausweichverhalten. Funktioniert dieses, ist das optimal. Wir bemühen uns, sinnvolle Standardeinstellungen zu verwenden, aber es kann vorkommen, dass es nicht funktioniert. In diesem Fall können Sie den Abfrage-Generator nicht mit Ihrer Datenquelle verwenden.
Eine weitere Schwierigkeit stellen die verwendeten Verbindungszeichenfolgen dar. Um eine Verbindung zu einer Datenbank herzustellen, muss JMP ODBC eine Zeichenkette übermitteln, die verschiedene Informationen darüber enthält, wohin die Verbindung hergestellt werden soll und wie sie hergestellt werden soll. Eine sehr einfache Verbindungszeichenfolge sieht beispielsweise so aus. Der Server, zu dem JMP eine Verbindung herstellt, ist beispielsweise ein Testrechner, auf den wir hier bei JMP Zugriff haben. Wir werden später noch mehr davon sehen.
Aber noch wichtiger ist, dass wir auch einen Treiber haben. Ein Treiber ist eine spezielle Software, die sich mit ODBC verbindet, um Zugriff auf eine bestimmte Datenquelle zu ermöglichen. ODBC selbst kennt keine Datenquellen, und genau wie andere Software lassen sich Treiber nicht gleichzeitig auf Mac und Windows installieren. Oder falls doch, handelt es sich um zwei separate Downloads. Es sind zwei verschiedene Softwarekomponenten. Bei ODBC ist es ganz ähnlich.
Actual SQL Server ist ein Treiber für SQL Server, der von der Firma Actual entwickelt wurde und für Macs gedacht ist. Wenn ich eine Verbindung mit dieser Verbindungszeichenfolge hätte und diese mit jemandem teilen wollte, der Windows verwendet oder JMP Live einsetzt, müsste diese Person die Verbindungszeichenfolge anpassen.
Dazu müssten sie den Windows-Treiber kennen. In diesem Fall heißt er SQL Server. Ich kann ihn auf meinem Windows-Rechner ausführen, und er funktioniert einwandfrei. Aber auch hier gilt: Man muss wissen, um welche Datenbank es sich handelt. Man muss den zugehörigen Treiber auf jeder Plattform kennen, und das macht die gemeinsame Nutzung schwierig.
Zusammen mit den Unterschieden zwischen Datenbanken, die JMPs benötigen, dem erforderlichen Wissen darüber sowie den verschiedenen Verbindungsarten und Verbindungszeichenfolgen kann es schwierig sein, Verbindungen gemeinsam zu nutzen und alle gewünschten Datenquellen zu verbinden.
Um diesem Problem zu begegnen, haben wir das Datenkonnektor-Framework, das wir intern in JMP 18 eingeführt haben, und außerdem eine spezielle Anwendung in ODBC.
Die Kernidee dabei ist, dass wir alle Optionen, die JMP intern basierend auf dem Verbindungstyp festlegt, übernommen haben. SQL Server benötigt einen eigenen Satz an Optionen, PostgreSQL einen anderen. Wir haben all diese Optionen zugänglich gemacht und sie einzeln konfigurierbar gestaltet.
So können Sie, falls Ihre Datenbank in einer Hinsicht dem SQL Server ähnelt, sich aber in anderer Hinsicht unterscheidet, eine Option ändern, und es funktioniert. Diese Optionen sind nicht nur Einträge im Einstellungsmenü. Es handelt sich um Konfigurationen, die benannt und anschließend geteilt werden können.
Sie erhalten eine vollständige Konfiguration. Sie können ihr einen Namen geben. Wenn Sie dann eine Verbindung zu einer bestimmten Datenbank herstellen möchten, können Sie diese Verbindung verwenden. Für Verbindungen zu anderen Datenbanken verwenden Sie einfach eine andere Verbindung. Durch die Benennung wird die gemeinsame Nutzung dieser Verbindungen deutlich erleichtert.
Schließlich können die von Ihnen vorgenommenen Einstellungen plattformabhängig sein. Wir haben gerade gesehen, dass Treiber möglicherweise anders konfiguriert werden müssen oder andere Einstellungen erforderlich sein können.
Wenn es auf dem Mac eine bestimmte Funktion geben soll, unter Windows aber keine, ist das möglich. Selbst bei feineren Anforderungen ist das unter Umständen realisierbar. Das sind die Kernpunkte. Ich möchte nun näher darauf eingehen, werde aber nicht alles in der Praxis demonstrieren.
Hier ist JMP. Unter „Dateidatenbank“ finden wir den neuen Menüpunkt „Datenkonnektoren“. Ein Klick darauf öffnet ein Fenster, das Ihnen, falls Sie schon einmal den Abfrage-Generator verwendet haben, bekannt vorkommen dürfte. Unter „Neue Verbindung“ sehen wir eine Liste mit Konfigurationsmöglichkeiten.
Hierbei sind einige Punkte zu beachten. Alle diese Konfigurationen oben sind vordefiniert und beginnen daher mit „com.jmp“. Sie werden von uns bereitgestellt und entsprechen den verschiedenen Datenbanken, die wir intern unterstützt und nun auch auf diese Weise zugänglich gemacht haben.
Diese sind vielleicht nicht direkt für die Verbindung geeignet. Sie enthalten keine Informationen wie Serverdaten oder Ähnliches, eignen sich aber dennoch als Grundlage für die Erstellung neuer Konfigurationen. Darunter sehen wir eine Reihe weiterer Konfigurationen.
Einige davon habe ich selbst erstellt. Die meisten jedoch nicht. JMP hat sie automatisch aus den von ODBC verwalteten Verbindungen, den sogenannten DNS-Domänenquellnamen, erstellt. Hier sehen wir eine Liste der Verbindungen, die DNS-Einträge auf meinem Mac, und einige davon sind auch in JMP vorhanden.
Diese werden automatisch erstellt, um den Einstieg zu erleichtern. Ich schließe das mal. Da diese Verbindungen in meinen erstellten Verbindungen vorhanden sind, wäre es idealerweise am einfachsten, einfach auf „Verbinden“ zu klicken.
Das funktioniert leider nicht. Wir sehen die Fehlermeldung des Treibers. Sie besagt, dass wir keine Benutzer-ID angegeben haben. Diese Information konnte JMP bei der Konvertierung der Konfiguration nicht erfassen.
Wir haben hier jedoch die Möglichkeit, eine neue Konfiguration zu erstellen. Der Dialog schlägt vor, diese hier zu verwenden. Wir fügen die benötigten Daten hinzu, in diesem Fall Benutzername und Passwort. Anschließend können wir versuchen, eine Verbindung herzustellen. Klicken wir also auf „Ja“.
Dies ist der Konnektor-Editor. Wir werden später genauer darauf eingehen. Fügen wir nun die benötigten Informationen hinzu. Wir benötigen ein Passwort. Bisher gab es keins. Jetzt wird es eins geben. Ich werde es eintragen. Wir benötigen außerdem einen Benutzernamen. Das gleiche Prinzip.
Nachdem wir das ausgefüllt haben, können wir die Verbindung testen. Sie war erfolgreich. Bevor wir die Verbindung herstellen, speichern wir eine Kopie der Konfiguration, da diese nun funktioniert. So sparen wir uns später die erneute Eingabe. Die Verbindung ist konfiguriert, daher habe ich sie gespeichert. Okay. Jetzt können wir die Verbindung herstellen.
Hier sehen wir eine Liste von Schemas. Wenn ich eines dieser Schemas auswähle, erscheint eine Liste mit Tabellen. Wir wählen einfach die einzige Tabelle vom Typ „bigclass“. Am einfachsten ist es nun, die Tabelle zu öffnen. Wenn wir also auf „Tabelle öffnen“ klicken, wird unsere Tabelle angezeigt. Perfekt.
Wir können aber auch den Abfrage-Generator verwenden. Ich schließe dieses Fenster und klicke nun auf die Schaltfläche „Abfrage-Generator“. Im sich öffnenden Abfrage-Generator sehen wir wieder dieselbe Benutzeroberfläche wie zuvor.
Wir können unsere Abfrage erstellen. Ich kann das Schritt für Schritt durchgehen. Wir fügen Spalten hinzu, führen die Abfrage aus und sehen nach deren Abschluss unsere Tabelle wieder. Da wir nun unsere Tabelle haben, wissen wir, dass alles funktioniert. Nehmen wir an, wir wiederholen das Ganze.
Wir haben eine Verbindung gespeichert, die wir jetzt nutzen können. Trennen wir diese. Jetzt können wir fortfahren. Wir finden die gespeicherte Verbindung. Wir können uns verbinden, und so ist die Verbindung hergestellt, und wir sehen wieder alles.
Öffnen wir nun wieder unsere Tabelle. Jetzt, wo wir sie geöffnet haben, können wir sie auch anderweitig nutzen. Ich habe bereits über das Teilen gesprochen, sowohl mit Kollegen als auch mit JMP Live. Beginnen wir mit der zweiten Option und teilen die Daten in JMP Live.
Ich werde die Datentabelle veröffentlichen. Sie ist nun angezeigt, wir haben also unsere Tabelle. Klicken wir auf „Weiter“. Wir veröffentlichen sie in meinem persönlichen Bereich. Jetzt, da sie veröffentlicht ist, schließen wir das Fenster und wechseln zu JMP Live.
Hier ist mein persönlicher Bereich, den ich aktualisieren werde. Wir sehen nun unsere Tabelle, also rufen Sie sie auf. Warten Sie, bis sie geladen ist. Unter den Einstellungen finden Sie die Option, Ihre Daten per Skript zu aktualisieren. Hier zeigt sich einer der Unterschiede zum Abfrage-Generator. Früher benötigten wir eine Verbindungszeichenfolge, um ein Aktualisierungsskript einzurichten. Wenn wir nun das Quellskript verwenden, sehen wir etwas anderes.
Ich werde mir das jetzt nicht genauer ansehen. Ich möchte nur prüfen, ob es funktioniert, also speichere ich es. Ich gebe Anmeldeinformationen ein und klicke dann auf „Aktualisieren“. Mal sehen, ob es funktioniert. Es ist fehlgeschlagen. Aber sehen wir uns an, warum. Wir erhalten eine Fehlermeldung. Diese ist etwas schwer verständlich, aber im Grunde bedeutet sie, dass wir keinen gültigen Treiber angegeben haben.
Schauen wir uns unser Skript etwas genauer an, um herauszufinden, was los ist. Wir sehen hier die Zeile `driver actual open source databases`. Wir geben also einen Treiber an. Aber wie Sie sehen, handelt es sich um einen dieser Mac-exklusiven Treiber, daher ist es kein Wunder, dass er nicht funktioniert.
Früher mussten wir den Namen des Windows-Treibers herausfinden, ihn hier einfügen und es dann erneut versuchen. Diesmal muss ich ihn aber nicht herausfinden. Ich lösche ihn, speichere die Datei und wir versuchen es erneut. Es scheint geklappt zu haben, also lade ich die Datei neu.
Es gibt hier eigentlich keinen großen Unterschied. Die Daten haben sich nicht geändert, aber wir haben gesehen, dass sie aktualisiert wurden. Der Grund dafür ist folgender: Schauen wir uns unser Skript noch einmal an. Wir verwenden diese integrierte Konfiguration. Wir haben diese zusätzlichen Konfigurationselemente hinzugefügt, damit sie mit der von JMP erstellten Konfiguration übereinstimmt.
Generell gilt: Wenn wir JMP veröffentlichen, richten wir das Quellskript so ein, dass es der von Ihnen angegebenen Konfiguration entspricht.
Der Grund für den Unterschied: Wir verwenden nicht einfach die ID „JMP dev“ für pkg-config, da JMP Live diesen Namen nicht kennt. Um die Kompatibilität mit JMP Live zu verbessern, erstellen wir eine äquivalente Konfiguration. Diese basiert auf einer der integrierten Konfigurationen, die in JMP Live vorhanden sind, und ergänzt sie um alle weiteren benötigten Komponenten.
Diese integrierte Konfiguration sorgt dafür, dass alles funktioniert. Wie bereits erwähnt, ist eine der Kernideen von Datenkonnektoren die Möglichkeit plattformabhängiger Konfiguration. Das sehen wir an dieser integrierten PostgreSQL-Konfiguration, die automatisch nach dem passenden Treiber für die jeweilige Plattform sucht.
Auf meinem Mac würde der entsprechende Open-Source-Datenbanktreiber unter Windows gefunden werden, beispielsweise der PostgreSQL-Treiber für Windows. Alle integrierten Treiber verhalten sich so.
Das macht es möglich. Dadurch wird auch die gemeinsame Nutzung zwischen Mac und Windows sowie zwischen Rechnern mit unterschiedlichen Treibersätzen vereinfacht. Das ist JMP live. Kehren wir zu JMP zurück und schließen wir das. Trennen wir die Verbindung, um mit einem sauberen System zu beginnen. Das ist die Konfiguration. Sie wurde von JMP erstellt.
Was wäre, wenn wir jetzt selbst eine Konfiguration erstellen wollten? Wir wollten nicht den ODBC-Manager verwenden, JMP bitten, sie abzurufen und hier anzuzeigen. Schauen wir uns das gleichzeitig an. Besprechen wir die Details genauer. Diesmal stellen wir eine Verbindung zum SQL-Server her. Das ist die Konfiguration hier.
Wenn ich auf „Neu“ klicke, kann ich eine neue Konfiguration erstellen, die auf dieser hier aufbaut. So muss ich nicht jedes Detail des SQL-Servers angeben, sondern nur die für meine Verbindung spezifischen Einstellungen. Sobald Sie dieses Fenster öffnen, sehen Sie wieder den Editor. Schauen wir uns das nun etwas genauer an.
Zuerst betrachten wir den Verbindungstyp und JMP 18. Wir haben nur ODBC. Dann die Basis der Verbindung. Wie bereits erwähnt, beginnen wir mit dieser integrierten SQL-Server-Konfiguration. Hier sehen wir, dass wir unsere integrierte SQL-Server-Konfiguration verwenden. Und wir legen genau fest, was wir damit erreichen wollen. Es gibt weitere Optionen. Wir können komplett von vorne beginnen und einfach die Standardeinstellungen für ODBC verwenden.
Wir könnten den Pfad zu einer Datei angeben. Wir könnten sogar eine Konfiguration als Basis direkt in der Zeile festlegen. Wir gehen aber davon aus, dass Sie in der Regel eine andere verwenden werden, also diese ID hier. Darunter sehen wir alle Optionen, die gruppiert sind. Die erste Gruppe enthält die Verbindungsinformationen.
Hier sehen Sie, wo Sie die Verbindung herstellen und welche Anmeldeinformationen Sie verwenden. Dies sind die Informationen, die in der Verbindungszeichenfolge für ODBC enthalten sind. Darunter finden Sie weitere Optionen, darunter verschiedene SQL-Optionen sowie Optionen speziell für die zugrunde liegende ODBC-Schicht.
Wenn ich hier auf „Verbindung“ gehe, stellen wir eine Verbindung her. Ich gebe nun die benötigten Informationen ein. Der Datenbankname lautet SQBTest. Wie Sie sehen, hat sich das Kontrollkästchen hier deaktiviert. Dies zeigt an, ob wir den Wert aus dieser Basiskonfiguration verwenden.
Da ich die Einstellung geändert habe (oder auch nicht), ist das Kontrollkästchen deaktiviert. Ich kann es wieder aktivieren, dann wird der ursprüngliche Wert wiederhergestellt. Wir benötigen diese Einstellung aber. Ich werde sie daher erneut eingeben.
Hier sehen wir den Treiber für die Freigabe bis JMP 19. Das muss ich noch erledigen, also machen wir das gleich. Hier ist der Wert für das Passwort. Unser Server heißt wieder jmpdev2. Wir haben unseren Benutzernamen. Mal sehen, ob die Verbindung funktioniert. Sie funktioniert. Aber bevor wir fortfahren, betrachten wir ein folgendes Szenario: Angenommen, ich verbinde mich gar nicht mit dem SQL Server. Angenommen, es ist etwas sehr Ähnliches, aber nicht ganz identisch.
Der Unterschied liegt darin, dass SQL Server, wie Sie sich vielleicht erinnern, eckige Klammern verwendet. PostgreSQL hingegen verwendet doppelte Anführungszeichen. Wenn wir uns die SQL-Optionen genauer ansehen, entdecken wir viele verschiedene Möglichkeiten. Schauen wir uns aber zunächst den Anführungszeichentyp an. Er ist aktuell auf eckige Klammern eingestellt. Wenn ich das in doppelte Anführungszeichen ändere, entspricht er den Anforderungen unserer Datenbank.
Praktischerweise unterstützt SQL Server für diese Demo beides. Eckige Klammern sind nativ, doppelte Anführungszeichen jedoch üblicher. Da beides unterstützt wird, sehen wir uns das gleich in der Praxis an. Speichern wir das. Das wird mein SQL Server. Verbinden wir uns.
Bevor wir die vorhandenen Tabellen sehen können, können wir beispielsweise eine Klasse auswählen. Wenn wir dann den Abfrage-Generator verwenden und nach dieser Option suchen, sehen wir, dass der generierte SQL-Code unserer Auswahl entspricht.
Normalerweise würde man eckige Anführungszeichen und eckige Klammern erwarten. Hier verwenden wir jedoch doppelte Anführungszeichen. Wir sehen auch, dass es funktioniert. Wenn ich die Abfrage ausführe, erhalten wir unsere Tabelle. Ich habe die Konfiguration also nicht unbedingt von Grund auf neu erstellt, sondern auf Basis der Standardkonfigurationen. Ich musste nur wenige Optionen angeben und habe nun eine voll funktionsfähige Verbindung.
Ich konnte das Verhalten sogar etwas anpassen. Jetzt habe ich mir all die Mühe gemacht. Was aber, wenn jemand anderes in meinem Unternehmen davon profitieren möchte? Diese Verbindungen lassen sich nicht nur mit JMP Live teilen, wie ich gezeigt habe, sondern auch mit anderen.
Dazu haben wir hier dieses kleine rote Dreiecksmenü. Wenn wir darauf klicken, sehen wir die Option zum Teilen von Konnektoren. Ich rufe sie mal auf. Links sehen Sie eine Liste unserer Konfigurationen. Die integrierten Konnektoren sind hier nicht aufgeführt, da wir sie nicht teilen müssen.
Wenn wir unsere Konfiguration auswählen, wird sie hier rechts angezeigt. Ich habe dafür einen Doppelklick ausgeführt, aber es gibt auch diese Schaltflächen. Ich kann diese hier anklicken, um die Konfiguration zu verschieben oder zu entfernen. Mit dieser klicke ich sie wieder hinzu. Um die Konfigurationen zu teilen, erstellen wir ein Add-in. Wir verwenden die Add-in-Funktion von JMP, um diese Konfigurationen zu verteilen und ihre Installation zu vereinfachen.
Da es sich um ein Add-in handelt, benötigt jedes Add-in eine ID. Genau dafür ist dieses Feld hier unten gedacht. Es dient dazu, standardmäßig den Hostnamen Ihres Rechners mit umgekehrten Unterkomponenten zu verwenden. Die Adresse meines Rechners lautet mh382.mmt.com. Wir haben sie umgedreht: com.sas.mmt.mh302. Das wird die Basisadresse sein. Da ich bisher nur eine Konfiguration hinzugefügt habe, wird einfach deren Name verwendet. Wenn ich jedoch eine weitere Konfiguration hinzufügen würde, beispielsweise „Datenkonnektoren“, würde diese einfach „Datenkonnektoren“ heißen.
Aber entfernen wir das. Klicken wir auf Speichern. Standardmäßig wird der Name auf die vollständige ID plus JMP-Add-In gesetzt. Das ist aber nicht nötig. Wir können es benutzerfreundlicher gestalten und nennen es einfach „Server“. Tatsächlich geht es noch besser. Wir müssen diesen vordefinierten Namen nicht verwenden. Löschen wir ihn einfach. Ändern wir den Namen. Nehmen wir zum Beispiel „Firma“ und verwenden meinen Benutzernamen. Anstatt einfach diesen Namen zu verwenden, geben wir an, wofür das System für die diesjährige Discovery Conference steht.
Klicken Sie auf Speichern. Wir benennen es um, damit es etwas freundlicher wirkt. Speichern Sie es erneut. Nun werden Sie gefragt, ob Sie das Passwort behalten möchten. Da wir davon ausgehen, dass Sie Ihr Passwort nicht unbedingt mit anderen teilen möchten, bieten wir Ihnen eine Option zum automatischen Entfernen an. In diesem Fall entfernen wir das Passwort.
Man sieht, dass es gespeichert ist. Mein Desktop hat jetzt dieses Add-in. Aber was machen wir nun damit? Man muss es jemand anderem geben. In diesem Fall gebe ich es mir selbst, anstatt es jemand anderem zu geben. Aber jetzt zu Windows. Wechseln wir zu Windows. Wir müssen uns hier kurz anmelden, und da sind wir. Hier ist JMP. Wir müssen dieses Add-in finden, das sich hier in meinem Download-Ordner befindet. Jetzt habe ich das Add-in, wenn ich es öffne und JMP starte, und installiere es.
Okay, und jetzt sehen wir uns das in Aktion an. Wir gehen zu Datei, Datenbank, Datenkonnektoren. Wir öffnen unsere Konfigurationen. Hier ist sie. Wir versuchen, eine Verbindung herzustellen. Die Verbindung ist fehlgeschlagen, da die Anmeldung nicht funktioniert hat. Das ist verständlich. Wir haben unser Passwort geändert. Nehmen wir an, wir möchten die Konfiguration noch etwas anpassen. Fügen wir das Passwort wieder hinzu. Sie können es testen. Sie sehen, dass es funktioniert. Wir klicken auf OK. Die Verbindung wurde hergestellt.
Wir haben [unverständlich 00:26:10] Mac erstellt. Wir haben es auf Windows übertragen und können es verbinden. Wir werden sehen, dass all die gleichen Schritte dafür nötig sind. Das ist Freigabe. Das sind Konfigurationen von Grund auf. Aber wie funktioniert das alles im Detail? Gehen wir zurück zu JMP. Wir sehen dies unter der integrierten SQL Server-Konfiguration. Wir sehen diese anderen Konfigurationen, die wir erstellt haben.
Wie sehen sie aus? Wo befinden sie sich? Die vordefinierten Konfigurationen liegen in einem Ordner, der zur JMP-Installation gehört. Selbst erstellte Konfigurationen hingegen befinden sich im Benutzerdatenbereich von JMP, zusammen mit Ihren anderen Daten. Wenn ich auf dem Mac zum Bibliotheksordner in meinem Benutzerordner navigiere, gehe ich unter Windows zu „Anwendungsunterstützung“ und dann zu „JMP“.
Dies ist ein Ordner unter „App Data“. Dort finden Sie neben vielen anderen JMP-spezifischen Informationen auch versionsspezifische Daten, Python-Dateien und einen Ordner für Datenkonnektoren.
Wenn ich das öffne, sehe ich Dateien, die allen von mir vorgenommenen Konfigurationen und den in meinem Namen über ODBC ausgeführten JMP-Aufrufen entsprechen. Beispielsweise sehen wir die MySQL-Serverkonfiguration und die JMP-DC-Erweiterung (JMP Data Connector). Neben all diesen JMP-DC-Dateien gibt es auch die Datei JMPDataConnectorRegistry.JSON. Diese enthält Informationen, die beispielsweise den Namen des MySQL-Servers dieser spezifischen Datei zuordnen.
Es kann auch weitere Informationen enthalten. Aber sehen wir uns an, was sich darin befindet. Wir verwenden dazu einen Texteditor – Moment, Entschuldigung, das war der falsche. Ich habe zwei sehr ähnliche genannt, also öffnen wir diesen hier. Wir sehen hier viel Text, der wie JSL aussieht, und das liegt daran, dass es JSL ist, genauer gesagt, eine Teilmenge von JSL.
Hier sehen wir links die Optionsnamen und rechts deren Werte. Die erste Zeile ist besonders. Sie zeigt an, dass unsere Basis durch com.JMP.SQLServer identifiziert wird. Wir sehen die darin enthaltenen Einstellungen. Wir sehen, dass der von uns festgelegte Server die Datenbank ist – unsere Modifikation des Pro-Typs.
Generell entsprechen die Optionsnamen links weitgehend den Einträgen im Editor. Rechts sehen wir die Werte, die ebenfalls den Editor-Einträgen ähneln. Hier fehlt der Beispieltext am Ende. Benutzername und Passwort sind kodiert. Diese Daten werden so gespeichert, dass sie nicht direkt im Editor abgelegt werden.
JMP konnte sich aber trotzdem mit allen verbinden, und wie gesagt, das ist JSL. Ein Beispiel dafür ist die Möglichkeit, plattformspezifische Konfigurationen hinzuzufügen; das haben wir bereits bei den integrierten Konfigurationen gesehen. Wenn wir das aber selbst implementieren wollen, beispielsweise eine Option, die wir noch nicht besprochen haben: Block-Fetching. Dadurch wird der Datenabruf effizienter, wenn diese Funktion aktiviert ist. Manchmal wird sie jedoch nicht unterstützt oder funktioniert nicht richtig.
Angenommen, es funktioniert hier auf meinem Mac, aber nicht unter Windows. Wir möchten es unter Windows und Mac aktivieren, ansonsten aber deaktivieren. Mit einer Zeile wie dieser, in der ich die Option „Block Fetch“ auf diesen JSL-Ausdruck gesetzt habe, erzielen wir den gewünschten Effekt, da alle Werte auf der rechten Seite lediglich JSL-Code sind.
Immer wenn JMP diese Konfiguration lädt, wird sie ausgewertet. Es wird bestätigen: „Ja“, in diesem Fall verwenden wir einen Mac. Block-Fetching ist aktiviert. So funktioniert es. Ja, und JMP selbst kann JSL verwenden, um damit zu arbeiten. Wir können das Thema abschließen, da es erledigt ist.
Schließen wir das hier. Da sind wir wieder bei JMP. Öffnen wir hier einen Skripteditor. Es ist Standardcode. Was kann ich tun? Ich kann die Konfiguration aus einer Datei laden. Es wird ein In-Memory-Datenkonnektor verwendet. Schauen wir uns das nochmal an… Wir haben mit diesem MySQL-Server gearbeitet. Diese Zeile hier lädt ihn. Sie liefert uns die Konfiguration. Dann kann ich beispielsweise bestimmte Werte abrufen, zum Beispiel die Block-Fetch-Option, die wir festgelegt haben.
Oder ich könnte den Anführungszeichentyp ändern. Ich kann die Optionen anpassen und den Anführungszeichentyp wieder auf den vorherigen Wert, also Klammern, zurücksetzen. Ich könnte auch einfach den Blockabruf deaktivieren. Jetzt können wir es erneut ausgeben, um zu sehen, ob es den gewünschten Effekt hat. Wenn ich das alles ausführe, sehen wir, dass der Blockabruf aktiviert ist. Der Anführungszeichentyp ist doppelt. Nachdem ich ihn dann geändert habe, ist alles deaktiviert.
Das ist ein Teil der Möglichkeiten, dies zu manipulieren. Wenn wir uns das Ganze ansehen, sehen wir alle Werte, die nicht den Standardwerten entsprechen. Beispielsweise sehen wir unseren Benutzernamen und unser Passwort. Wir sehen aber auch eine Reihe anderer Optionen, bei denen SQL Server von den Standardeinstellungen abweicht. Sehen Sie sich all das in der Registry an. Diese Zuordnung von Namen zu tatsächlichen Konfigurationen ist auch über JSL zugänglich.
Ich habe hier eine Variable. Damit kann ich beispielsweise alle verfügbaren Einträge abrufen. Diese Liste zeigt sowohl die von uns erstellten als auch die in JMP integrierten Einträge an. Unter Windows würden wir auch den über das Add-in installierten Eintrag sehen. Wir können Metadaten zu einem bestimmten Eintrag abrufen. Wir können uns erneut eine von uns erstellte Konfiguration ansehen. Diese zeigt uns sowohl den Namen als auch den Pfad an. Diese wichtigen Informationen enthalten außerdem den Typ und, da es sich um ODBC handelt, auch den Treiber.
Sie können auch eine Konfiguration für JSL registrieren. Nehmen wir an, wir möchten unsere eigene Konfiguration erstellen und nennen sie MySQLServer2DC. Wir haben eine neue Pfadvariable hinzugefügt. Für diejenigen unter Ihnen, die damit vertraut sind: Diese verweist direkt auf den Datenkonnektorenordner, den ich vorhin gezeigt habe. Dort kann ich nun etwas Text ausgeben.
Wir machen es ganz einfach. Wir beginnen mit unserer Basiskonfiguration, diesem MySQL-Server. Wir stellen beispielsweise einen bestimmten Typ wieder auf den vorherigen Zustand zurück. Jetzt habe ich das hier. Schließlich registriere ich ihn mit „Folge meinem Pfad“. Der Name entspricht dem Dateinamen, genau wie bei den anderen. Dann der Pfad. Pfad. Wenn ich das alles ausführe, können wir versuchen, es zu laden.
Hier machen wir genau dasselbe wie vorher, nur mit zwei. Wir sehen, wie es funktioniert und dass hier etwas ausgegeben wird. Wir können sogar den geänderten Wert abrufen. Sehen Sie, dass er da ist. Gut, wir haben das also schon gesehen, und wir können beide JSL verwenden, um Konfigurationen zu bearbeiten. Wenn wir bereit sind, direkt mit diesen Konfigurationen zu arbeiten, können wir sehen, wo sie sich im Dateisystem befinden, und wir können plattformspezifische Konfigurationen hinzufügen.
Ich habe viel besprochen. Fassen wir das Ganze etwas zusammen. Gehen wir zurück zum Anfang. Ich sagte, wir hätten konkrete Ziele für diese Initiative. Gut, gehen wir sie der Reihe nach durch. Das erste Ziel war, die Anbindung an mehr Datenquellen zu ermöglichen. Für JMP 18 haben wir den Datenquellenzugriff innerhalb von ODBC erweitert. Ich hoffe, dass ich Ihnen beispielsweise durch die Änderung des JSON-Typs für SQL Server einen kleinen Einblick in die Möglichkeiten geben konnte.
Wir haben die Kompatibilität mit Ihren Datenquellen verbessert. Was das Teilen angeht, hoffe ich, dass die Demonstration der Freigabefunktionen für JMP Live unter Windows verdeutlicht hat, was hier möglich ist. Schließlich bieten wir eine einheitlichere Interaktion. Das ist etwas, was wir bisher noch nicht gesehen haben. Ich habe Ihnen eine neue Oberfläche gezeigt, die ausschließlich mit ODBC funktioniert. Hierbei ist es wichtig zu betonen, dass wir uns auf ODBC konzentrieren und gleichzeitig die Grundlage für weitere Funktionen schaffen. Diese werden wir in Zukunft nutzen.
Was die Zukunft von JMP 18.1 betrifft, so sind einige kleinere Verbesserungen geplant, die hauptsächlich den Editor betreffen. In JMP 19 wird es weitere Verbesserungen am Editor geben. Noch wichtiger sind jedoch die neuen Verbindungsarten. Wir werden eine Funktion, die derzeit nur für ODBC verfügbar ist, auf andere Schnittstellen ausweiten. Als erstes möchte ich SAS erwähnen.
In JMP 18 mussten wir die SAS-Konnektivität entfernen. In JMP 19 führen wir sie jedoch wieder ein und integrieren sie in das Datenkonnektor-Framework. Das bedeutet, dass dieselbe Schnittstelle zum Verbinden, derselbe Editor zum Bearbeiten von Konfigurationen und dieselbe Möglichkeit zum Teilen dieser Konfigurationen, wie bei Add-Ins, weiterhin zur Verfügung stehen. Wir werden außerdem die Anbindung an Amazon S3 und Microsoft SharePoint hinzufügen. Dies ist etwas, das sich viele Anwender schon länger gewünscht haben.
Das Interessante an S3 und SharePoint ist, dass sie nicht mit JMP ausgeliefert werden. SAS hingegen soll ähnlich funktionieren wie vor JMP 18 und wird mit JMP ausgeliefert. Sie haben dann Zugriff auf viele der bekannten GSL-Funktionen.
S3 und SharePoint werden nicht im JMP-Paket enthalten sein, sondern über den JMP Marketplace vertrieben. Einige von Ihnen kennen ihn vielleicht schon. Falls nicht, werden Sie im Rahmen der Discovery-Veranstaltung wahrscheinlich davon erfahren.
Kurz gesagt, es wird eine Möglichkeit sein, Erweiterungen für JMP zu verteilen. Wir werden die S3- und SharePoint-Konnektivität auf diesem Weg bereitstellen. Um diese mit JMP kompatibel zu machen, definieren wir eine Python-API, die von JMP bereitgestellt wird und über die alle notwendigen Komponenten für die Anbindung an das Connector-Framework sowie für die Nutzung mit dem Query Builder und darüber hinaus angebunden werden können.
Um dies zu realisieren, nutzen wir diese Schnittstelle und haben außerdem bestehende Python-Bibliotheken verwendet. Das ist Teil der Faszination des Python-Ökosystems und zugleich das Ergebnis unserer Arbeit zur Verbesserung der Python-Integration in JMP 18. Doch diese Möglichkeiten werden nicht nur uns vorbehalten bleiben.
Diese Schnittstelle werden wir Ihnen vorstellen und dokumentieren. Sie ermöglicht es Ihnen, neue Verbindungstypen zu erstellen und diese in JMP und den Query Builder zu integrieren. Sie können dabei alle bekannten Tools verwenden.
Das ist unser Plan für die Zukunft. Mehr möchte ich dazu nicht sagen. Ich hoffe, dass unsere Arbeit in Version 18 nicht nur die Grundlage für zukünftige Verbesserungen wie die hier besprochenen geschaffen hat, sondern auch selbst ein überzeugendes Upgrade für die Möglichkeiten von ODBC darstellt.
Dass es möglich ist, mehr Datenquellen anzubinden und diese Verbindungen einfacher zu teilen. Ich bin überzeugt, dass die Zukunft hinsichtlich unserer Möglichkeiten noch viel besser sein wird. Ich freue mich darauf, was wir dort erreichen können. Damit möchte ich mich für Ihre Aufmerksamkeit bedanken und wünsche Ihnen viel Freude beim weiteren Entdecken.