從 JMP 的查詢產生器 (QB) 存取物件連結和嵌入、資料庫或 OLEDB。客戶經常問我是否可以從 JMP 存取我們的 Proficy Historian 資料庫?因此,我想分享一些選項來回答以下問題:如何存取圍繞基於 COM 的介面(例如 Historian)建立的資料?
JMP 的腳本語言或 JSL 只提供存取可能需要的任何類型的資料所需的資源,而這些資料在檔案開啟對話方塊中尚未直接提供。JMP 提供了大量預先建置的資料連接器,可以直接從許多平面檔案資料來源(例如 Triple-S XML、CSV、SAS 和 SPSS)讀取資料。在這篇部落格文章中,我不會重點討論這種類型的文件,而是將您的注意力集中在從關聯式資料庫(例如 Oracle、PostgreSQL 和 SQLite)或其他 OLEDB 來源(例如 Historian)存取資料上。
使用 JMP 查詢產生器介面存取關聯式資料庫。可以透過轉到“檔案”選單並選擇“資料庫”然後選擇“查詢產生器”來存取 QB。

由於現有 JMP 使用者熟悉這種方法,因此我認為這將是從非 ODBC 資料儲存(例如 Historian 資料庫)存取資料的良好初步步驟。
在這裡,我介紹兩種方法以及每種解決方案的詳細資訊。此外,我還提供了一些關於每種解決方案的優點和限制的想法。 第一個是透過自訂查詢,第二個是透過將 OLEDB 轉換或快照為更容易被 JMP 查詢產生器使用的形式。
巧合的是,第一種方法是使用 JMP 的查詢產生器存取 Historian OLEDB 的最直接方法。它只是使用自訂查詢。唯一需要的資料庫配置是建立從 SQL Server 到 Historian OLEDB 的資料庫連結。

使用連結伺服器建立與資料庫的連接,如下所示(在我的例子中,連結伺服器名稱稱為“MY_HISTORIAN”)。

按一下“下一步”以顯示查詢產生器對話方塊。 此對話方塊將允許您從模式中選擇用於建立查詢的模式和表。S從 SQL Server 連線中選擇任何模式和一個表(任何表都可以工作,因為我們實際上沒有直接使用)。我選擇 sys 架構和 all_columns 表作為我的主要資料表。

點擊“建置查詢”按鈕開始建置查詢。點擊左上角表格選單下的紅色三角形將允許您插入自訂查詢。
JMP 將向您提供警報,詢問您是否確定要將現有查詢轉換為自訂查詢。點選“確定”按鈕繼續。
自訂查詢可以是您之前編寫的內容,如下所示:
SELECT TagName、TimeStamp、Value、Quality FROM OPENQUERY (iHist,' SET StartTime=yesterday-12Day, EndTime = 今天,IntervalMilliseconds = 1 小時,SamplingMode = 已計算,CalculationMode = 最大值 SELECT * FROM ihRawData WHERE TagName LIKE *simulation00001')
自訂查詢將不再可編輯唱 QB 介面。 只需貼上原始查詢即可套用剪貼簿中的查詢。點擊更新按鈕將顯示資料預覽。
C按一下執行查詢將 ihRawData Historian 資料表匯入為 JMP 資料表。
關鍵部分是文法是 OPENQUERY 選項。這指示 SQL Server 將查詢直接傳遞到連結伺服器進行處理。
連結伺服器處理請求後,表格將返回 JMP,您可以在其中進行進一步的可視化和分析。自訂查詢方法的好處之一是實作簡單。它只需要您建立一個連結伺服器。QB 介面完成其餘的工作。如果您的 DBA 為您提供了一個可供您複製和貼上的可用查詢庫,那麼這種方法會很有效。 這種方法的缺點是您必須預先知道要執行什麼查詢,而幾乎沒有自由來進一步探索和查詢資料。
對於那些不熟悉 JMP 查詢生成器的使用的人,我提供了一些其他資源的鏈接,包括高級母帶製作JMP 會議由克里斯·基希伯格。
第二種方法不需要更改任何資料庫配置。 但是,它確實需要安裝 Python 和額外的 Python 程式庫 (win32com.client)。只需安裝OLE 資料庫工具插件並按照提示操作。該插件執行一個 Python 腳本(感謝您在編寫 Python 腳本時提供的幫助)布萊恩·布恩)進而建立 OLEDB 的快照並將其儲存為 SQLite DB。然後可以直接從 QB 存取 SQLite DB,如圖所示。可以使用 JMP 腳本語言或 JSL 來執行 Python 等外部程式。JSL 有一個名為「運行程式」的功能。在我們最近的歐洲探索高峰會上就這個主題發表了一篇出色的論文赫克特@jmp題為“運行程序 - JMP® 連結到其他程序」其中提供了幾個有關如何使用此功能的詳細範例。
Python 腳本運行一些從使用者介面 (UI) 傳遞給它的命令列選項。UI 完全使用 JSL 構建,並透過將其打包為 JMP 插件來部署給任何分析師。要安裝插件,分析師只需雙擊即可。現在可以從插件選單中使用該插件。

三個選單選項可供選擇。菜單的標題是與查詢產生器一起使用的快照 OLE 資料庫,對 OLEDB 的自訂 QB 查詢和公用事業。 第一個選項將 OLE 資料庫或單一 OLE 資料庫表轉換為 SQLite 資料庫格式。自訂 QB 查詢選項將使用 JMP 查詢產生器 (QB) 建置的查詢提交至 OLE 資料庫進行處理。「實用程式」選單下的最後一個選項允許從 SQLite 資料庫中刪除表或所有數據,以及用於修改外掛程式中預設選擇的選項。 透過實用程式選單下的最後一個選項,我提供了一種更新插件預設設定的機制。如果觀察數量很大,請使用該選項設定要從 OLE 資料庫擷取的最大行數。下面我展示如何將最大記錄數設定為傳回 10。將最大記錄數設為 -1 將檢索 OLE 資料庫中每個表的所有行。

連接。 選擇。 建造。 進口。
使用QB建立與剛剛建立的SQLite資料庫的連線。現在您可以使用相同的介面開始建立查詢。建立查詢後,您可以執行「自訂 QB 查詢到 OLEDB」選項來複製要由 Python 腳本第二次執行的查詢。這次執行查詢時,它將傳回與查詢的 where 子句相符的所有行。現在,透過 JMP 中提供的表格,您可以完全存取 JMP 視覺化和建模功能。

您經常連接到哪些資料來源?您知道 JSL 中的執行程式功能嗎?
請給我留言,告訴我您經常連接的任何資料來源或您在自己的腳本中使用「運行程式」的其他方式。
下次見...祝您編碼愉快!
* GE智慧平台公司是通用電氣公司的全資子公司。 GE 品牌和標誌是通用電氣公司的商標。
在 SQL Server Management Studio 中設定連結資料庫非常簡單,Proficy 手冊中也有介紹。 我遇到的問題是在 JMP 中設定到連結伺服器的新連線。 您能否提供有關如何在擁有連結伺服器後進行連接的更多詳細資訊?