| 扬声器 |
抄本 |
| 彼得·赫什 |
好的,感谢您今天加入我们。Hadley 和我将讨论数据访问,以及如何使用 JMP 应用程序生成器简化数据访问,使其更加便捷。 |
| |
这里是 JMP 内部分析工作流程的概述,任何分析过程的第一步都是访问您的数据。 |
| |
这通常是一个耗时又繁琐的过程,而且经常被忽视 |
| |
在利用数据进行任何学习之前,有一个关键过程需要完成。你需要能够访问数据。因此,Hadley 和我将展示一些技巧,教你如何访问来自不同来源的数据,希望能减轻访问数据的痛苦。 |
| |
今天我们要展示的是创建一个简单的按钮, |
| |
基本上使用 JMP 内部的应用程序构建器通过 OBDC 连接或 webAPI 从外部访问数据。 |
| |
您还可以将其应用于本地文件或任何 JMP 可以访问的数据源。然后,我们还将展示如何合并数据源 |
| |
并在数据提取过程中将过滤器应用于多个不同的数据源。最后,我们将展示一个如何手动输入数据的界面, |
| |
但要让这个过程变得简单一些。最后,我们如何在整个组织内分配我们生产的任何产品,并使其成为 |
| |
可共享的可分发插件。首先,Hadley 将演示如何通过 ODBC 驱动程序进行连接。 |
| 哈德利·迈尔斯 |
是的。 |
| |
非常感谢,皮特。 |
| |
大家好,无论你们在哪里观看。首先,我要向你们展示一下这个用应用程序构建器制作的应用程序,它的功能是连接到数据库。 |
| |
您的数据可能存储在不同的位置或不同的服务器上,因此您可以选择合适的服务器。此功能允许您搜索和筛选标签。您现在看到的是一个 |
| |
SQL 查询。我们进入数据库,提取了一些标签,我可以选择合适的标签。 |
| |
我可以选择我感兴趣的时间段,在本例中,数据库可以追溯到很久以前。运行该数据并选择…… |
| |
你知道,立即提取我需要的数据。我们看到人们使用这些东西的方式是,他们把这些东西放在角落里 |
| |
像这样,每当他们需要数据时,他们就会说:“哦,我应该把102也弄下来。”没问题。我可以直接去把那些数据拉出来。 |
| |
这就是我们今天要向你们展示如何构建的东西,我们要使用的示例比这稍微简单一些。 |
| |
你可以在这里看到。只需选择时间段,选择任意 |
| |
你想搜索的标签之一,在本例中指的是一种分析方法。它会根据分类列进行筛选,然后提取数据。所以你看到的更复杂的版本只是在此基础上添加了功能的扩展。 |
| |
因此,我们将首先使用 JMP 中的查询生成器。 |
| |
一旦我们连接到数据库(我已经在这里完成了),我将进入并选择我想要的起始表。在本例中,它是我的生产数据,我执行了以下操作。我将加入我的结果 |
| |
以及我的示例数据。让我们开始构建这个查询。我将首先导入我的批次。我将导入我所有的生产数据。 |
| |
我会把样本创建日期和分析结果放进去,也许我会把它们放在顶部附近,这样你就能看到它们了 |
| |
稍微好一点。这些就是第一列, |
| |
以及我的结果。如果我使用过滤器设置这个查询,我们可以做的就是,例如,通过输入“它”来过滤我们的分析。 |
| |
并根据我们的样本日期进行过滤,也许我们会将其更改为一个范围,所以我们说预测...抓取一个日期和 |
| |
另一个约会。通常情况下,在这种情况下你会 |
| |
运行时提示所有,这样当你运行查询时, |
| |
你可以让你的用户选择 |
| |
合适的日期,而且我认为这个数据库可以追溯到很久以前,所以我们就选择一个非常宽泛的范围。点击“确定”。现在我已经获得了用于分析的数据,并且…… |
| |
这些日期,但我要做的事情 |
| |
我要取消这些提示,清除提示。我要手动选择一些,这样我才能看到它们是如何与查询匹配的…… |
| |
进入代码。 |
| |
是的。 |
| |
所以我可以继续复制这个运行脚本,对吧,它会执行这个查询,包括过滤器。现在我要做的是打开应用程序构建器。 |
| |
我将选择一个空白应用程序并创建一个按钮。 |
| |
因此,当我右键单击按钮时,我可以选择按下按钮时要运行的脚本。在本例中,我们将直接运行查询中的整个运行脚本。 |
| |
现在,如果我运行这个程序,按下按钮,就能以我设置查询的方式获取数据。但我希望,或许你也希望,能够允许用户选择查询过滤器。 |
| |
变量,所以选择哪个时间段和进行哪种分析,为此 |
| |
惊人的简单。 |
| |
我要做的是抓取两个数字编辑框来输入查询的开始时间和结束时间。 |
| |
我一直喜欢把这些放在面板框里。这样用户就能更容易地看到他们正在做什么……你知道,它允许我输入指令。所以我可以在这里写,比如输入开始日期 |
| |
并输入结束日期。 |
| |
就像那樣。 |
| |
我们将为这些变量赋予我们能够理解的名称。 |
| |
所以我们把这个叫做...如果我点击数字编辑框,我可以给这个家伙起名字 |
| |
开始 |
| |
数字编辑框。 |
| |
我们将此称为结束 |
| |
数字编辑框,我们还可以处理格式 |
| |
以便我们利用我们的 |
| |
日期和时间日历格式在这里。 |
| |
就像这样。 |
| |
当然,我们需要做的是从这些 |
| |
数据输入 |
| |
变量添加到查询中。当按钮被按下时,我们会创建一个名为 start 的变量 |
| |
我们将使它等于任意值 |
| |
在我们的数字编辑框中输入。 |
| |
获取该值。 |
| |
我们将从最终数字编辑框中获取值。 |
| |
我们将采取这些 |
| |
并将它们插入到我们的查询中。 |
| |
所以如果我运行这个 |
| |
我可以选择开始日期 |
| |
并选择我的结束日期。 |
| |
我可以运行它并获取我的数据。现在我再快速演示一下,如何根据这个分析结果进行筛选。为此,我将使用这个…… |
| |
我为不同的按钮提供了不同的选项。我想我要做的就是在这里添加一个复选框,然后输入我希望它们选择的值。 |
| |
现在,也许我们应该将其改为分析。 |
| |
是的,复选框。所以在这里我只需创建另一个变量分析。 |
| |
如果我不记得需要使用什么命令来获取信息...要从中获得选择,我只需单击它即可。 |
| |
如果我单击鼠标右键,一个很好的技巧就是我可以直接进入帮助菜单,直接进入脚本索引,现在我可以看到我需要的是获取选定命令才能获取这些。 |
| |
我会在这里输入 |
| |
被選中。 |
| |
现在我们可以进行以下分析 |
| |
并取代我们的 |
| |
查询参数就在那里。所以如果我运行这个。 |
| |
再次, |
| |
我可以选择开始时间 |
| |
并选择我的结束时间。 |
| |
我可以选择运行其中一个参数,或者同时运行两个参数。 |
| |
那么下一步... |
| |
当然,我可以随意添加,但我现在想做的是在我的组织内分发它,这里的诀窍是,任何有权访问它的人 |
| |
如果我与他们共享数据库位置,他们就能访问或使用此插件。所以我要做的就是点击此处,将脚本保存到插件中。 |
| |
我们称之为数据库 |
| |
使用权 |
| |
和 |
| |
数据库访问1, |
| |
只是给它一个独特的名字。 |
| |
访问数据。插件运行所需的全部脚本都在这里,所以它已经……已经全部完成了。我会把它保存到我的 |
| |
桌面。 |
| |
正如您现在所看到的,它就安装在这里。 |
| |
所以我需要做的就是使用这个插件,我认为它已保存在我的另一个屏幕上。 |
| |
就在这里,我可以把它发给我公司里的任何人。这封邮件我提前写好了。 |
| |
为了方便您使用,已经发送了。通过电子邮件发送此信息,如果他们有权访问此位置,他们就可以安装插件并立即使用。此时我想停止共享并发送…… |
| |
回到 Pete,他将向我们展示如何从网络访问数据。 |
| 彼得·赫什 |
好的,谢谢哈德利。是的,演示得非常棒。所以在这一部分,我们将以哈德利之前演示的内容为基础。 |
| |
我们最终会得到一个像这样的插件。所以,按照 Hadley 的步骤操作。我将跳过 ODBC 部分,并展示 |
| |
API 部分,但这里的想法是,我有两个不同的数据源。我要从这两个数据源提取数据,将它们连接起来,然后创建一个最终的数据表,如下所示。所以我们将从 Hadley 展示的已经完成的部分开始,也就是 |
| |
一个简单的 ODBC 拉取,其细节甚至比 Hadley 的还要少,我们只需要 |
| |
两种不同股票类型的数据,我们有一个过滤器来选择该股票类型,我们要做的是建立一个 |
| |
API 连接。所以我将进行与 Hadley 类似的过程。他描述得非常清楚,我在这里简单介绍一下,在这里添加一个带有文本编辑框的面板框,就像 Hadley 演示的那样,我们可以 |
| |
使用和参考这些 |
| |
盒子,因为它们有名字。我可以像哈德利那样,仔细检查并重命名它们。 |
| |
在本例中,它被称为 TextEdit1,我要告诉人们做的是在这里输入他们的 API 密钥实体,我们将使用该 API 密钥 |
| |
每个人都可以使用自己的 API 密钥访问数据,这样就无需同时分发 API 密钥了。然后,就像 Hadley 演示的那样,我将在这里创建一个按钮,我们将它命名为 |
| |
API 数据拉取。 |
| |
好的,同样的事情,我们在这里右键点击,添加一个按下脚本。所以我们从哪里访问这些数据 |
| |
这个网站叫 Alpha Vantage,它是一个很好的演示和试用 API 数据提取的方式。它有非常完善的 API 文档。如果你打算在自己的公司内部做这件事,情况会略有不同。 |
| |
您将要使用的命令,但总体思路是相同的,即您必须从...传递一些内容。 |
| |
从 JMP 到那个 API 拉进来。在这里,我已经预先写好了这个脚本,所以基本上,我必须传递一个键,我必须告诉它 URL,我要做什么类型的请求,然后我有一些 |
| |
这里有更多脚本,用于将数据以正确的格式导出到 JMP,从而解析 JSON。所以我要选择这个,我已经在这里写好了。复制它,然后,就像我们之前看到的,如果我把它放在这里,现在我就有了 |
| |
数据拉进去。所以我需要在这里做几件事,这个密钥是……我实际上想在这里引用那个 API 密钥。 |
| |
所以我要做的就是说,好的,那个键等于 |
| |
textedit1 我要说的是,就像 Hadley 向你展示的那样 |
| |
浏览帮助索引,弄清楚需要什么才能获取该文本,但在这种情况下,我只想说,关键是……你去那个textedit1,你得到 |
| |
文本。另外,我想引用这个框,它恰好被称为 Combo1,用于过滤。所以我要添加 |
| |
我们也把这只股票称为 |
| |
等于该变量名 Combo1,然后再次,就像 Hadley 所展示的那样,被选中。 |
| |
好的,现在我要做的是,我的查询会抓取那个密钥,抓取那个库存,然后访问网站,ping 一下,然后我们继续运行程序来演示。所以我这里只使用一个演示密钥。我们可能会更改库存。 |
| |
它会……哦,你知道吗?这很好 |
| |
这里的问题是,我忘了在这里的代码中更改它,所以我说股票是组合1,但在这里 |
| |
这告诉我我的股票代码是微软,也就是说……如果我不把这只股票放进去,它就无法正确提取数据。所以,我们再演示一遍。向你展示一下,它现在正在查看过滤器,而不是硬编码的,所以现在它提取的是正确的数据。 |
| |
好的,下一步我想从这两个来源获取数据并整合起来。JMP 16 有一个很棒的功能, |
| |
希望你们都听说过这个新的、改进的日志,我将继续清理它。 |
| |
这个日志的作用是捕获你可能进行的任何类型的数据操作。我来给你看一个连接的例子。我先把这两个连接起来 |
| |
数据表,你可以选择如何连接,或者选择什么类型的 |
| |
您想要在该连接中使用的列,可能是名称 |
| |
你的 |
| |
数据随心所欲。一旦你满意了,就可以点击“确定”。你会注意到,日志里已经记录了所有我需要的连接操作,所以我要在这里,把脚本保存到剪贴板,然后我就 |
| |
返回并在我的应用程序中创建一个新按钮 |
| |
这里。同样,我将使用按钮框,但您可以选择任何您喜欢的类型。再次,给它起个名字;我们称之为“连接”。 |
| |
右键单击此处。 |
| |
并在印刷机上执行该脚本。 |
| |
然后只需复制并粘贴即可。 |
| |
现在,它会遍历并进行连接。所以,实际上,我们可以拉取每个单独的元素并进行连接,但我认为最终目标是一步完成所有操作。 |
| |
你所要做的就是把所有这些脚本放到一个地方,我碰巧提前做了这件事, |
| |
然后……创建一个新按钮。我会展示一下我添加到这个脚本中的两个功能,所以我们就把它叫做“简易按钮”,以便与主题保持一致。 |
| |
简易按钮。 |
| |
我要 |
| |
抓住这个脚本,所以我会选择所有这些,复制它们,然后 |
| |
在这里执行相同的程序。 |
| |
然后粘贴。 |
| |
好吧,除了复制粘贴已有内容之外,我还在这个脚本中添加了一些内容,其中包括等待命令,它的作用是给我一点时间来 |
| |
让数据提取在开始连接之前完成,然后我会关闭这两个额外的数据表,这样我就不会……我不会只是在多个表中构建。所以让我们 |
| |
看这个。我要输入我的 API 密钥,然后选择我的股票。点击“简易”按钮,从两个地方提取数据,等待两秒钟,然后将它们合并在一起。 |
| |
这就是最终目标,现在我要把它传回给哈德利,展示一个如何更顺畅地进行数据输入的好例子。 |
| 哈德利·迈尔斯 |
是的。 |
| |
非常感谢,Pete。现在我们已经向你展示了如何使用 SQL 从外部数据库获取数据 |
| |
数据库,Pete 向你展示了如何从 API(例如 Web API)获取数据,然后将其与你已有的数据进行组合。你可能希望从其他来源获取数据,或者需要使用 Python 访问,这些都没问题。 |
| |
或者它在不同的文件中,但也可能需要你手动输入数据。这是一个数据集的示例, |
| |
我们有谷物食品的名称和制造商,所有这些数据都是从这些盒子的标签上手动输入的,不幸的是,这些标签的格式并不便于自动提取数据。所以需要有人来做这件事 |
| |
手动操作。我以前也做过类似的工作,所以我非常理解那些需要这样做的人。 |
| |
现在,您可以将它输入到...像这样的表中,但我所做的是通过在此处创建此应用程序使它变得更简单一些。 |
| |
现在你可以看到,他们只需在一个屏幕上输入,然后就可以添加到表中。我故意省略了最后两个 |
| |
列。方法完全一样。我们要做的是……所以你在这里看到,按钮做的第一件事 |
| |
它会在表格中添加一行。它会计算出表格有多少行,然后针对每一列和行号, |
| |
它只会从每个输入中抓取数据,然后将它们保存到每个单元格中,对吧?那么我们继续对最后两个单元格进行操作。 |
| |
你可能已经注意到了,它看起来相当均匀,而且间隔也很好,这是用了这些漂亮的分割器——水平和垂直分割器——才做到的。所以我接下来要在这里的底部添加一个水平分割器。 |
| |
为此,我们将添加一个面板框 |
| |
底部有一个数字编辑框。 |
| |
我将添加另一个面板盒 |
| |
以及另一个数字编辑框。我们将其命名为 |
| |
我们最后两列是每份的重量和我们的 |
| |
我们的谷物标签上的每份杯数。 |
| |
现在,我可以重命名这些家伙,但我暂时不会这么做。我只需要继续。 |
| |
在我们的数据表列中,是每份的重量。 |
| |
还有我们的行号。 |
| |
我将使它等于我们刚刚创建的数字编辑框。 |
| |
这里也是一样 |
| |
为了我们的 |
| |
每份杯数 |
| 哈德利·迈尔斯 |
在 edit2 下。 |
| 哈德利·迈尔斯 |
好的,现在,如果我运行这个程序,我可以输入所有数据,然后得到它 |
| |
进入这些 |
| |
单元格或在底部添加行,但我要向你展示最后一件事,如果你为某人创建这个,我保证他们会非常感激,那就是添加 |
| |
给那边的图片加点颜色,给……给应用程序加点颜色。我们继续,你可以添加公司徽标,或者像我这里一样,直接添加一张库存照片。 |
| |
所以它不必完美。如果我们像这样添加它,你可以看到,当我们运行它时,它会让某人的一天比以前更好一点。现在,与其将它保存为加载项或保存 |
| |
对于脚本,我要做的就是继续将其立即保存到数据表中。 |
| |
称之为添加 |
| |
数据或添加行,无论什么,现在你可以看到我们的插件就在这里。所以我可以运行这个插件 |
| |
谷物。很棒的是,如果我按下 Tab 键,它就会转到下一个。 |
| |
我只会添加一些假装的数据 |
| |
等等。对,添加该行,你就会看到它了。 |
| |
所以,希望你们觉得这些内容有趣,也希望你们有机会运用这些内容,或者创造这些内容。好了,我会把这些内容交还给Pete。 |
| 彼得·赫什 |
太好了,谢谢,哈德利。 |
| |
我只想在这里再说几句 |
| |
幻灯片。总结一下我们在这里看到的情况,访问数据常常很困难,这意味着问题可能会持续比预期更长的时间。我们希望您能从中受益,并简化数据访问甚至数据录入。 |
| |
和 |
| |
获取...以正确的格式获取数据并 |
| |
解决方案的 80% 都集中在易于访问的部分,通常 80% 的时间都花在了这部分。如果能简化这一环节,就能节省大量时间。 |
| |
让您的聪明分析师、科学家和工程师致力于解决数据问题,而不是数据访问问题。 |
| |
我们展示了在 JMP 的应用程序构建器中创建简单按钮非常简单,您可以在其中选择来源、过滤、组合多个来源,甚至手动添加数据。 |
| |
然后,就像 Hadley 所展示的那样,我们可以使用插件将其分发到整个组织,或者也可以仅使用脚本或应用程序本身来实现。 |
| |
非常感谢大家抽出时间。希望这篇文章对大家有所帮助,我们会在下方聊天中解答大家的任何问题。谢谢! |