从 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 中设置到链接服务器的新连接。 您能否提供有关如何在拥有链接服务器后进行连接的更多详细信息?