Zugriff auf eine Objektverknüpfung und -einbettung, eine Datenbank oder eine OLEDB über den Query Builder (QB) von JMP.Ich werde oft von Kunden gefragt, ob es möglich ist, über JMP auf unsere Proficy Historian-Datenbank zuzugreifen.Deshalb dachte ich, ich würde einige Optionen zur Beantwortung der Frage vorstellen: Wie greife ich auf Daten zu, die um die COM-basierte Schnittstelle wie Historian herum erstellt wurden?
Die Skriptsprache von JMP oder JSL stellt genau die Ressourcen bereit, die für den Zugriff auf alle Arten von Daten erforderlich sind, die möglicherweise erforderlich sind und nicht bereits direkt im Dialogfeld zum Öffnen von Dateien verfügbar sind.JMP bietet eine Vielzahl vorgefertigter Datenkonnektoren, die Daten aus vielen Flatfile-Datenquellen wie Triple-S XML, CSV, SAS und SPSS direkt lesen können.Ich werde mich in diesem Blogbeitrag nicht auf diesen Dateityp konzentrieren, sondern Ihre Aufmerksamkeit stattdessen auf den Zugriff auf Daten aus relationalen Datenbanken wie Oracle, PostgreSQL und SQLite oder aus anderen OLEDB-Quellen wie Historian richten.
Der Zugriff auf relationale Datenbanken erfolgt über die JMP Query Builder-Schnittstelle.Auf QB kann zugegriffen werden, indem Sie im Menü „Datei“ auf „Datenbank“ und dann auf „Query Builder“ klicken.

Da dieser Ansatz bestehenden JMP-Benutzern vertraut ist, entschied ich, dass dies ein guter erster Schritt für den Zugriff auf Daten aus Nicht-ODBC-Datenspeichern wie der Historian-Datenbank wäre.
Hier stelle ich zwei Ansätze und die Details zu den jeweiligen Lösungen vor.Darüber hinaus gebe ich einige Gedanken zu den Vorteilen und Einschränkungen der einzelnen Lösungen. Das erste ist über eine benutzerdefinierte Abfrage und die zweite ist über eine Konvertierung oder ein Snapshot der OLEDB in ein Formular, das von JMP Query Builder einfacher verwendet werden kann.
Der erste Ansatz ist zufälligerweise der einfachste Ansatz für den Zugriff auf die Historian OLEDB mit dem Query Builder von JMP.Es wird lediglich eine benutzerdefinierte Abfrage verwendet.Die einzige erforderliche Datenbankkonfiguration bestand darin, eine Datenbankverbindung vom SQL-Server zur Historian OLEDB zu erstellen.

Stellen Sie wie unten gezeigt eine Verbindung zur Datenbank über den Verbindungsserver her (in meinem Fall hieß der Name des Verbindungsservers „MY_HISTORIAN“).

Klicken Sie auf „Weiter“, um das Dialogfeld zur Abfrageerstellung aufzurufen. Im Dialogfeld können Sie Schemata und Tabellen aus einem Schema auswählen, die zum Erstellen der Abfrage verwendet werden sollen.S Wählen Sie eines der Schemata und eine Tabelle aus der SQL-Server-Verbindung (jede Tabelle funktioniert, da wir sie nicht direkt verwenden).Ich habe das Sys-Schema und die Tabelle all_columns als meine primäre Datentabelle ausgewählt.

Klicken Sie auf die Schaltfläche „Abfrage erstellen“, um mit der Erstellung einer Abfrage zu beginnen.Durch Klicken auf das rote Dreieck unter dem Tabellenmenü oben links können Sie eine benutzerdefinierte Abfrage einfügen.
JMP sendet Ihnen eine Benachrichtigung, in der Sie gefragt werden, ob Sie Ihre vorhandene Abfrage wirklich in eine benutzerdefinierte Abfrage konvertieren möchten.Klicken Sie auf die Schaltfläche „OK“, um fortzufahren.
Benutzerdefinierte Abfragen können etwas sein, das Sie zuvor geschrieben haben, wie zum Beispiel die folgenden:
SELECT TagName, TimeStamp, Value, Quality FROM OPENQUERY (iHist,' SET StartTime=yesterday-12Day, EndTime=Today, IntervalMilliseconds=1Hour, SamplingMode=Berechnet, CalculationMode=Maximum SELECT * FROM ihRawData WHERE TagName LIKE *simulation00001')
Eine benutzerdefinierte Abfrage kann nicht mehr bearbeitet werden singen Sie die QB-Schnittstelle. Fügen Sie einfach die ursprüngliche Abfrage ein, um die Abfrage aus Ihrer Zwischenablage anzuwenden.Wenn Sie auf die Schaltfläche „Aktualisieren“ klicken, wird eine Vorschau Ihrer Daten angezeigt.
C Klicken Sie auf „Abfrage ausführen“, um die ihRawData Historian-Datentabelle als JMP-Datentabelle zu importieren.
Der Schlüsselteil von Die Syntax ist die OPENQUERY-Option.Dadurch wird SQL Server angewiesen, die Abfrage zur Verarbeitung direkt an den Verbindungsserver zu übergeben.
Sobald der Verbindungsserver die Anfrage verarbeitet, wird eine Tabelle an JMP zurückgegeben, wo Sie weitere Visualisierungen und Analysen durchführen können.Einer der Vorteile des benutzerdefinierten Abfrageansatzes ist die einfache Implementierung. Sie müssen lediglich einen Verbindungsserver erstellen.Die QB-Schnittstelle erledigt den Rest der Arbeit.Dieser Ansatz würde gut funktionieren, wenn Ihr DBA Ihnen eine Bibliothek verfügbarer Abfragen zur Verfügung gestellt hat, die Sie kopieren und einfügen können. Der Nachteil dieses Ansatzes besteht darin, dass Sie im Voraus wissen müssen, welche Abfrage Sie ausführen möchten, und wenig Freiheit haben, Ihre Daten weiter zu untersuchen und abzufragen.
Für diejenigen, die mit der Verwendung des Query Builder von JMP nicht vertraut sind, habe ich einen Link zu einigen zusätzlichen Ressourcen bereitgestellt, darunter a Fortgeschrittenes Mastering JMP-Sitzung präsentiert von Chris.kirchberg .
Der zweite Ansatz erfordert keine Änderungen der Datenbankkonfiguration. Es erfordert jedoch die Installation von Python und einer zusätzlichen Python-Bibliothek (win32com.client).Installieren Sie einfach das Add-In für OLE-Datenbanktools und folgen Sie den Anweisungen.Das Add-In führt ein Python-Skript aus (vielen Dank für die Hilfe beim Schreiben des Python-Skripts von bryan.boone) Dadurch wird wiederum ein Snapshot der OLEDB erstellt und als SQLite-DB gespeichert.Auf die SQLite-Datenbank kann dann wie gezeigt direkt von QB aus zugegriffen werden.Externe Programme wie Python können mithilfe der Skriptsprache JMP oder JSL ausgeführt werden.JSL verfügt über eine Funktion namens „Programm ausführen“.Auf unserem jüngsten Discovery Summit Europe wurde zu genau diesem Thema ein hervorragender Vortrag gehalten hecht@jmp berechtigt " Programm ausführen – Der JMP®-Link zu anderen Programmen ", das mehrere detaillierte Beispiele zur Verwendung dieser Funktion enthält.
Das Python-Skript führt einige Befehlszeilenoptionen aus, die ihm von der Benutzeroberfläche (UI) übergeben werden.Die Benutzeroberfläche wurde vollständig mit JSL erstellt und durch die Verpackung als JMP-Add-In für jeden Analysten einsetzbar.Um das Add-In zu installieren, doppelklickt der Analyst einfach.Das Add-In kann jetzt über das Add-In-Menü verwendet werden.

Drei Menüoptionen stehen zur Auswahl.Die Menüs tragen den Titel Snapshot-OLE-Datenbank zur Verwendung mit Query Builder , Benutzerdefinierte QB-Abfrage an eine OLEDB Und Dienstprogramme . Die erste Option konvertiert eine OLE-Datenbank oder eine einzelne OLE-Datenbanktabelle in ein SQLite-Datenbankformat.Die benutzerdefinierte QB-Abfrageoption sendet eine mit JMP Query Builder (QB) erstellte Abfrage zur Verarbeitung an eine OLE-Datenbank.Die letzten Optionen im Menü „Dienstprogramme“ ermöglichen das Entfernen einer Tabelle oder aller Daten aus der SQLite-Datenbank sowie Optionen zum Ändern der Standardauswahl im Add-In. Mit der letzten Option im Menü „Dienstprogramme“ stelle ich einen Mechanismus zum Aktualisieren der Standardeinstellungen für das Add-In bereit.Wenn die Anzahl der Beobachtungen groß ist, verwenden Sie die Option, um die maximale Anzahl von Zeilen festzulegen, die aus der OLE-Datenbank abgerufen werden sollen.Im Folgenden zeige ich, wie man die maximale Anzahl der zurückzugebenden Datensätze auf 10 festlegt. Wenn man die maximale Anzahl an Datensätzen auf -1 setzt, werden alle Zeilen für jede Tabelle in der OLE-Datenbank abgerufen.

Verbinden. Wählen. Bauen. Importieren.
Stellen Sie mit QB eine Verbindung zur gerade erstellten SQLite-Datenbank her.Jetzt können Sie dieselbe Schnittstelle verwenden, um mit der Erstellung Ihrer Abfragen zu beginnen.Sobald Sie eine gewünschte Abfrage erstellt haben, führen Sie die Option „Benutzerdefinierte QB-Abfrage an eine OLEDB“ aus, um die vom Python-Skript auszuführende Abfrage ein zweites Mal zu kopieren.Dieses Mal werden bei der Ausführung der Abfrage alle Zeilen zurückgegeben, die mit der where-Klausel der Abfrage übereinstimmen.Da die Tabelle jetzt in JMP verfügbar ist, haben Sie vollen Zugriff auf die Visualisierungs- und Modellierungsfunktionen von JMP.

Zu welchen Datenquellen stellen Sie regelmäßig eine Verbindung her?Wussten Sie von der Funktion „Programm ausführen“ in JSL?
Hinterlassen Sie mir einen Kommentar zu allen Datenquellen, zu denen Sie regelmäßig eine Verbindung herstellen, oder zu anderen Arten, wie Sie Run Program in Ihren eigenen Skripts verwendet haben.
Bis zum nächsten Mal...Viel Spaß beim Codieren!
* GE Intelligent Platforms, Inc. ist eine hundertprozentige Tochtergesellschaft der General Electric Company. Die Marke und das Logo von GE sind Marken der General Electric Company.