扬声器
|
成绩单
|
| Georg Raming(Siltronic AG) |
大家好。 |
| |
今天,我想谈谈从分布式和复杂源获取数据的策略和示例。 |
| |
我叫Georg Raming,我的工作是???的过程开发。 Siltronic公司生产的单晶。 我在统计评估和流程方面有一些经验 |
| |
以及产品数据和统计教育。 我还负责Siltronic的JMP软件以及数百名用户的培训活动。 |
| |
Siltronic是高度专业化的超纯硅晶圆的全球领先制造商之一。 |
| |
一些技术提示。 因此,在此演示中,我在这里使用数据表而不是数据库,但是这里显示的概念最初用于通过ODBC连接从关系数据库中获取数据。 |
| |
JMP Query Builder对于JMP数据表和数据库表也以类似的方式工作。 |
| |
今天的演讲的目标是什么? 它是建立一些方法,以一种简单有效的方式从数据库中获取数据到JMP或JMP表中。 |
| |
让我们首先谈谈构建基块。 |
| |
因此,其中一个可能是JMP数据表。 |
| |
因此,如果您是通过数据库查询生成数据表的,则它可能看起来像这样。 因此,我在这里从JMP Big Class中获取了著名的示例表,并通过JMP Query Builder查询了数据。 我删除了表随附的所有脚本。 |
| |
你会发现 |
| |
如果您通过JMP Query Builder查询该数据表,几个脚本和表变量,则使用该数据表。 |
| |
因此,在该变量内,您可以看到SQL。 因此,数据表的定义是从表或数据库中得出的。 |
| |
而且您有这些脚本,这是一个简单的源脚本 |
| |
这样获得原始数据表的另一个副本。 在这里,您可以看到原始脚本,但是JMP Query Builder再次提供了这些脚本。 |
| |
还有一个修改查询脚本,使您可以在JMP数据表上编辑此查询并运行它。 |
| |
并且有一个查询,用于从数据库进行更新。 因此,如果您更改数据表中的数据 |
| |
或数据表中有新数据,只需按此按钮即可更新数据。 |
| |
像这样。 这里的脚本也再次来自示例表。 |
| |
好的,所以下一个构建块是JMP Query Builder。 |
| |
因此,一旦数据库中有一个或几个表,您就想像在这里进行查询,我从JMP示例表中获取了Big Class和Big Class Families |
| |
目录并使用JMP Query Builder之类的 |
| |
在桌子上。 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菜单中。 |
| |
或对于数据库,您可以在这里在数据库查询生成器下找到它。 |
| |
然后,New SQL Query是所有功能中最强大的命令。 这样,它会生成一个新的查询对象,您可以将其自身另存为JMP查询文件。 它可以直接生成一个数据表,并提供很好的数据来源,正如我们之前在源代码修改和更新脚本中看到的那样。 |
| |
JSL中另一个从数据库查询数据的命令是open database命令。 您还可以在脚本编制索引中找到所有这些命令的文档。 像这儿, |
| |
如果我输入 |
| |
打开 |
| |
数据库, |
| |
您可以在此处找到所有命令的工作方式。 |
| |
连接数据库并进行一些查询的第三种方法是数据库连接。 |
| |
它需要三个步骤。 第一个是创建数据库连接。 第二种是将您的查询(一个或多个)放入数据库中。 最后,您需要关闭数据库连接。 |
| |
最后,如果您编写了一些不错的脚本。 |
| |
您应该使您或同事都可以使用它,并且至少有两种方法。 因此,一种方法是将其放入外接程序,以便您也可以轻松地将其提供给其他人。 另一个可能性是像我在这里一样将其放在自定义菜单中。 |
| |
你可以找到它 |
| |
在菜单中,然后像这样 我的系统中安装了两个加载项。 |
| |
这是我的个人 |
| |
自定义菜单。 |
| |
所以,让我们...我们已经完成了构建基块。 让我们来看例子。 |
| |
第一个示例是使用表脚本来保存表布局和查询。 |
| |
因此,它可能看起来像这样。 如果您有一个数据表 |
| |
从数据库中添加一些脚本以获得漂亮的图形, |
| |
您可能想每天使用它。 这里很有可能 |
| |
可以说,复制表脚本时不包含数据。 |
| |
然后可以使用此脚本。 |
| |
我想制作一个新脚本。 对不起。 |
| |
并将其粘贴到脚本窗口中。 |
| |
只需按下“运行脚本”按钮,该新表就会出现。 |
| |
它以???形式出现,没有数据。 并且您可以例如在菜单中保存此脚本并获取数据,它可能是大量数据。 您只需按“从数据库更新”按钮,表中就会充满来自数据库或其他位置的所有数据。 |
| |
所以这是一个很好的可能性 |
| |
简单地使用脚本 |
| |
从数据库获取数据。 |
| |
第二个例子 |
| |
是从表内部使用查询。 |
| |
像这样 如果您有数据表,并且要查询一些其他数据,则取决于当前表的内容。 |
| |
因此,我将展示它。 |
| |
我删除一些行。 |
| |
使用这三个名称,我想转到另一个表以获取一些数据。 |
| |
这是通过此脚本完成的。 |
| |
在这里,您可以从该表中看到我的名字并进行了查询 |
| |
查询来自Big Class Families的另一个表中的数据。 |
| |
以及它是如何工作的? |
| |
您可以在此脚本中找到它。 |
| |
很短。 在这里,名称是从定义的第一个表查询中获取的,就像这里一样。 |
| |
名称将替换为查询。 |
| |
在这里,查询被放入表Big Class Families。 |
| |
好的,我也需要关闭此表。 |
| |
这是一个带有图形用户界面的自定义查询脚本。 因此,例如,如果您的数据库中有一个大数据表,并且经常需要少量数据表, |
| |
您当然可以提取所有数据,但也许获取经过过滤的数据会更灵活,更有效。 因此它像这样工作。 |
| |
一个表用于过滤数据,另一个表包含大数据表的所有列。 在这里,我们可以进行图形化过滤。 假设是女性和年龄,所以我只用了两列进行过滤, |
| |
像这样,分别是12岁和13岁。 |
| |
我可能想拥有所有列或仅删除一列。 |
| |
我查询 |
| |
并在这些限制条件下获得正确的结果。 您可以在此处看到源脚本或SQL中的内容, |
| |
限制在这里 |
| |
从定义的图形用户界面。 |
| |
以及如何 |
| |
脚本工作正常吗? 有点 |
| |
当然更复杂。 因此,存在过滤器查询。 |
| |
列查询。 |
| |
这是一个脚本,一个将 |
| |
将数据过滤条件转换为SQL条件。 |
| |
这是GUI部分,图形用户界面。 |
| |
最后,在这里,将评估图形用户界面结果并将其放入此自定义脚本中。 |
| |
下一个示例是两步查询。 因此,假设您必须先查询一些批次ID。 |
| |
并将这些ID带到另一个查询中,也许带到另一个数据表中以获取其他数据, |
| |
你可以这样 所以在这里,我将Big Class数据表用作过滤器。 所以我只过滤了男性 |
| |
和 |
| |
等于或小于13岁的学生。 |
| |
并使用这些名称在Big Class Families的所有行中进行查询,就像您在此处看到的那样。 |
| |
和 |
| |
这两个表都是通过虚拟联接连接的,就像您在这里看到的那样。 |
| |
所以 |
| |
该表通过名称将另一个表引用到过滤器表。 我可以用 |
| |
该表中此处的过滤器表的各列,就好像它们是 |
| |
在此表中。 |
| |
因此,这是拥有多个表并在一个表中使用内容的一种好方法。 |
| |
最后一个例子是 |
| |
如何在后台并行运行两个或几个查询。 所以我这里没有例子。 JMP社区中对此进行了讨论。 如果您有兴趣,可以看看。 |
| |
现在,我完成了示例,期刊和演示文稿的材料脚本可在线获得。 |
| |
感谢社区的精彩讨论,也感谢JMP开发人员构建和维护了这一出色的软件。 最后,感谢您的关注。 |