| 扬声器 |
抄本 |
| Georg Raming(世创电子材料股份公司) |
大家好。 |
| |
今天我想谈谈从分布式和复杂源获取数据的策略和示例。 |
| |
我叫 Georg Raming,在 Siltronic 公司负责单晶生长工艺的开发。我有一些统计评估和工艺开发经验。 |
| |
以及产品数据和统计教育。我还负责Siltronic的JMP软件以及数百名用户的培训活动。 |
| |
Siltronic 是世界领先的高度专业化超纯硅晶片制造商之一。 |
| |
一些技术提示。在本演示中,我使用的是数据表而不是数据库,但这里展示的概念最初是用于通过 ODBC 连接从关系数据库获取数据的。 |
| |
JMP 查询生成器对 JMP 数据表和数据库表的工作方式类似。 |
| |
今天演示的目标是什么?就是要建立一些方法,以便能够轻松高效地将数据库中的数据导入到 JMP 或 JMP 表中。 |
| |
我们先来谈谈构建模块。 |
| |
因此其中一个可能是 JMP 数据表。 |
| |
因此,如果您通过数据库查询生成了数据表,它看起来可能像这样。因此,我在这里采用了 JMP 著名的示例表 Big Class,并通过 JMP 查询生成器查询了数据。我删除了表格自带的所有脚本。 |
| |
你会发现 |
| |
对于此数据表,如果您通过 JMP Query Builder 进行查询,则会得到几个脚本和表变量。 |
| |
所以在那个变量里面,你可以看到 SQL。所以数据表的定义是从表或数据库中提取的。 |
| |
你有这些脚本,一个源脚本,简单地 |
| |
像这样获取原始数据表的另一个副本。在这里您可以看到原始脚本也在其中,但其中又包含来自 JMP 查询生成器的脚本。 |
| |
还有一个修改查询脚本,可让您在 JMP 数据表上编辑此查询并运行它。 |
| |
还有一个从数据库更新的查询。所以如果你更改了数据表中的数据 |
| |
或者数据表中有新数据,只需按此按钮即可更新数据。 |
| |
像这样。这里的脚本也再次来自示例表。 |
| |
好的,下一个构建块是 JMP 查询生成器。 |
| |
因此,一旦您在数据库中有一个或多个表,您就想进行查询,就像这里一样,我从 JMP 示例表中取出了“大类”和“大类家族” |
| |
目录并使用 JMP 查询生成器 |
| |
表格上。JMP 查询生成器。 |
| |
JMP 看到这些打开的表 |
| |
主字段中也有一个,我可以像这样添加一个辅助表,JMP 会自动在两个表之间创建连接。它们是如何连接的?您可以编辑这个连接 |
| |
像这样。 |
| |
您将在这里看到详细信息。 |
| |
然后你可以继续构建查询 |
| |
像这样。这里有两张桌子可供使用。 |
| |
您还可以在这里再次编辑连接 |
| |
也许你想添加所有 |
| |
列, |
| |
像这样。 |
| |
也许你想加一个过滤器, |
| |
像这样。 |
| |
并运行查询。然后你再次 |
| |
使用来自的脚本获取此结果表 |
| |
这里我们不需要示例表。 |
| |
我把它们删掉了。这些是脚本,由 JMP Query Builder 编写的脚本和变量 |
| |
就像我以前用过的那样。同样,在这里你可以 |
| |
编辑此查询。查询脚本保存在此结果表中,就像我们之前在此处定义的那样。 |
| |
这就是 JMP 查询生成器的工作原理。 |
| |
正如之前提到的,它在数据库表上的工作方式与在 JMP 示例表上的工作方式相同。 |
| |
下一个建筑...我还在这里放了一些脚本,你可以随时从可视化查询生成器切换 |
| |
自定义 SQL |
| |
查询。所以这在这里有效。另一个红色三角形菜单。 |
| |
转换为自定义 SQL,并以可视化方式定义此处的内容, |
| |
您可以在此处以文本 SQL 查询的形式定义。 |
| |
你可以运行它。 |
| |
当我们查看此查询或按下“修改查询”按钮时, |
| |
你会看到文本查询。所以这只是一种方法, |
| |
从可视化查询转换为自定义 SQL 查询。 |
| |
所以让我整理一下 |
| |
一些桌子。好的。 |
| |
下一个构建块是从数据库获取数据,您需要与该数据源建立 ODBC 连接。 |
| |
通常,ODBC 数据源和驱动程序由您的 IT 管理部门设置。因此,在 Windows 下,您可以找到 |
| |
ODBC 数据源管理员下的这些连接。 |
| |
请记住,数据库源的位数应该与 JMP 兼容。因此,在这种情况下,我有 64 位 JMP 应用程序,因此需要 64 位驱动程序。 |
| |
而用户来源,你可以自己设置。 |
| |
并且系统DSN由管理员设置,不同类型的数据库的驱动程序也由管理员设置。 |
| |
如果需要排除故障,您可以使用此选项卡进行跟踪 |
| |
查询去了哪里以及可能存在什么问题。 |
| |
我的建议是检查这些数据源的连接是否正常。如果您点击“配置”,然后打开数据源管理器,在提供凭据后,您可以听到针对特定数据源的连接测试。 |
| |
如果一切顺利,系统会告诉你 |
| |
连接成功。 |
| |
查询不起作用并不取决于 Windows。 |
| |
其他详细信息,请参阅 JMP 手册中的文档。例如,《使用 JMP》第三章,您可以在这里找到 |
| |
帮助菜单 |
| |
以及 JMP 文档库。那里有详尽的文档,教你如何使用所有这些工具。 |
| |
好的,那么在脚本和 JSL(也就是脚本语言)中,有三种方法可以编写这些 SQL 数据库查询脚本。第一种方法是新建 SQL 查询,就像我们之前用过的那样。它位于 JMP 菜单的“表”下,JMP 查询生成器(用于 JMP 表)。 |
| |
或者对于数据库,您可以在数据库查询生成器下找到它。 |
| |
然后,“新建 SQL 查询”是所有命令中最强大的。它会生成一个新的查询对象,您可以将其保存为 JMP 查询文件。它可以直接生成数据表,并提供良好的数据源,就像我们之前在源修改和更新脚本中看到的那样。 |
| |
JSL 中另一个用于从数据库查询数据的命令是 open database 命令。您也可以在脚本索引中找到所有这些命令的文档。例如: |
| |
如果我输入 |
| |
打开 |
| |
数据库, |
| |
您可以在这里找到所有命令的工作原理。 |
| |
连接数据库并进行一些查询的第三种方法是数据库连接。 |
| |
它需要三个步骤。第一步是创建数据库连接。第二步是将一个或多个查询写入数据库。最后,您需要关闭数据库连接。 |
| |
最后,如果您写了一些不错的脚本。 |
| |
你应该让它对你或你的同事开放,至少有两种方法。一种是把它放在插件里,这样你也可以很容易地把它提供给其他人。另一种是把它放在自定义菜单中,就像我在这里做的那样。 |
| |
你可以找到它 |
| |
在菜单中,然后像这样。我的系统中安装了两个插件。 |
| |
以下是我的个人 |
| |
自定义菜单。 |
| |
那么……我们已经完成了构建模块。我们来看示例吧。 |
| |
第一个例子是使用表脚本来保存表布局和查询。 |
| |
所以它可能看起来像这样。如果你有一个数据表, |
| |
从数据库中,你还可以在其中放入一些脚本来获得漂亮的图表, |
| |
你可能想每天都用它。这里有一个很好的可能性 |
| |
也就是说,复制没有数据的表脚本。 |
| |
然后您就可以使用这个脚本了。 |
| |
我想写一个新的剧本。抱歉。 |
| |
并将其粘贴到脚本窗口中。 |
| |
只需按下“运行脚本”按钮即可出现新表。 |
| |
它以“???”的形式出现,没有数据。例如,您可以将此脚本保存在菜单中,以便获取数据,但数据量可能非常大。您只需点击“从数据库更新”按钮,表格就会填充所有数据,这些数据可能来自数据库或其他地方。 |
| |
所以这是一个很好的可能性 |
| |
简单地使用脚本 |
| |
从数据库中获取数据。 |
| |
第二个例子 |
| |
是使用表内部的查询。 |
| |
就像这样。如果你有一个数据表,并且想要查询一些额外的数据,这取决于你当前表的内容。 |
| |
所以我会展示它。 |
| |
我删除了一些行。 |
| |
有了这三个名字,我想去不同的表里获取一些数据。 |
| |
它是通过这个脚本完成的。 |
| |
您可以从这个表中看到,我获取了名称并进行了查询 |
| |
从 Big Class Families 的另一个表中查询数据。 |
| |
它是如何工作的? |
| |
您可以在此脚本中找到它。 |
| |
它很短。这里,名称取自定义的第一个表查询,就像这里一样。 |
| |
将名称代入查询中。 |
| |
此处,查询被放入表 Big Class Families 中。 |
| |
好的,我也需要关闭这张桌子。 |
| |
这是一个带有图形用户界面的自定义查询脚本。例如,如果你的数据库里有一个很大的数据表,但经常需要少量数据, |
| |
当然,你可以提取所有数据,但获取经过良好筛选的数据可能更灵活、更高效。它的工作原理如下。 |
| |
一个表用于筛选数据,另一个表包含大数据表的所有列。在这里我们可以用图形方式筛选。假设女性和年龄,所以我只用了两列进行筛选。 |
| |
像这样,12、13岁。 |
| |
我可能想要保留所有列或者只删除一列。 |
| |
我查询 |
| |
在这些限制条件下,我们得到了正确的结果。正如你在这里看到的,在源脚本或 SQL 中, |
| |
限制在这里 |
| |
由图形用户界面定义。 |
| |
那么如何 |
| |
脚本工作有效吗?有点 |
| |
当然更复杂。所以有了过滤查询。 |
| |
列查询。 |
| |
这是一个脚本,一个将 |
| |
数据过滤条件转换成SQL条件。 |
| |
这是GUI部分,图形用户界面。 |
| |
最后,对图形用户界面结果进行评估并将其放入此自定义脚本中。 |
| |
下一个示例是一个两步查询。假设您首先要查询一些批次 ID。 |
| |
并把这些 ID 带入另一个查询,也许是另一个数据表以获取更多数据, |
| |
你可以这样做。这里我以“大类”数据表作为过滤器。所以我只过滤了男性 |
| |
和 |
| |
年龄等于或小于13岁的学生。 |
| |
并利用这些名字在 Big Class Families 中查询所有行,就像您在这里看到的那样。 |
| |
和 |
| |
两个表都通过虚拟连接连接起来,就像您在这里看到的那样。 |
| |
所以 |
| |
此表通过名称引用另一个表,然后引用到筛选表。我可以使用 |
| |
此表中的筛选表的列就像 |
| |
在此表中。 |
| |
因此,这是一种拥有多个表并在一个表中使用内容的好方法。 |
| |
最后一个例子是 |
| |
如何在后台并行运行两个或多个查询?这里没有示例。JMP 社区对此进行了讨论。如果您感兴趣,可以查看一下。 |
| |
现在我已经完成了我的示例,并且日志和演示材料脚本可以在线获取。 |
| |
感谢社区的精彩讨论,也感谢 JMP 开发人员构建和维护这款优秀的软件。最后,感谢您的关注。 |