我们简化了文件夹间的导航,让您更轻松地找到所需内容,并优化了报表及其所依赖数据的浏览体验。此外,我们还简化了报表排序功能,并改进了 JMP Live 报表在其他应用程序中的嵌入方式。
控制图方面呢?现在支持在单独的 *.jmp 表格中设置控制图限值。我们也没有忽略数据处理。除了改进 JMP Live 上的数据预览功能外,我们还简化了与数据提供商的协作。您可以为数据提供商授予特定的访问权限,他们可以上传各种文件格式(*.csv、*.json 等)的新数据。此外,您运行在 JMP Live 上的脚本现在可以将数据转换为 *.jmp 表格并自动刷新报表。我们甚至还为数据刷新脚本添加了对 Python 的支持。
大家好,我叫奥罗拉·蒂芙尼·戴维斯 (Aurora Tiffany Davis),是 JMP Live 团队的软件开发人员。今天,我将向大家介绍 JMP Live 18 和 18.1 版本中的一些新功能。我将只重点介绍这些新增功能。我假设您之前已经了解过 JMP Live。但如果您之前没有了解过,只是出于好奇才观看此视频,那么我简单介绍一下:JMP Live 是一个安全的协作平台,托管在您公司自己的服务器上。JMP Live 允许您与同事共享 JMP 内容,无论他们是否也安装了 JMP。
我们先打开 JMP Live。这将是一个比较非正式的演示。我有一些报表想展示给大家,但过程中,每当我看到新的东西,我都会停下来讲解一下。在 JMP Live 的主页上,我立刻就看到了一个新东西,那就是排序按钮。
我们现在看到的是一份报告列表。默认情况下,JMP Live 会优先显示最新更新的报告。但现在您可以根据需要更改排序方式。您可以选择优先显示最早的报告,或者像我一样按字母顺序排序。无论您何时设置了偏好,我们都会记住,并在 JMP Live 的所有位置按字母顺序显示报告。
我在这里还看到了一条通知。通知功能并不新鲜,但这条通知是新的。现在你可以在评论中被明确提及。看来我被评论提到了。我点击查看更多详情。管理员说:“Aurora,这些数据已有4年历史了。” 我查看右上角,发现这些数据发布于2020年。
管理员说:“Aurora,这些数据已经四年了。我们应该更新它吗?让它可刷新?删除它?还是就让它保持原样?考虑一下,然后告诉我。” 我们得查一下这些数据的所有者是谁。看起来是Josh Lopresti发布的。在和他沟通之前,我当然不想删除任何内容。我想在这里回复,但我想在评论中明确提到Josh。这样,他就会像我一样收到通知,并参与到讨论中来。
“我觉得我们应该先跟Josh确认一下,”我按下D键,“然后再做任何操作。”为了稍微放慢速度,我刚才只是在键盘上输入了@符号,这样就调出了所有用户的列表。当你开始输入内容时,列表就会开始向下筛选。这是你在网站上很常见的操作。我提交这条评论后,Josh会收到通知。你可以在JMP Live的任何评论区进行这样的操作。你可以在像我这里展示的数据帖子、报告帖子或文件夹上进行评论。
稍作介绍后,我们继续前往我要向您展示的报告。我打开协作空间,我的报告就在这里。我把这个协作空间命名为“Discovery Americas 2024”。进入这个空间后,我发现了一些新内容,所以我停下来讲解一下。这里新增的内容是“历史记录”和“视图”选项卡。如果您是组织 JMP Live 站点的管理员,或者负责管理某个协作空间,您就会看到这些选项卡。
您无需拥有站点管理员权限。如果有人委派您负责某个空间,您也能看到这些信息。“历史记录”选项卡会显示您的协作空间中发生的一切:发生了什么、影响了哪个帖子、由谁操作以及何时操作。非常基础。最新内容会显示在列表顶部。您还可以筛选协作空间中发生的事件列表。也许我只想查看今天发生的事情。也许我还想进一步筛选,只查看我执行的操作。
您还可以下载此历史记录表。“视图”选项卡与之类似,但它不会显示协作空间中发生的所有事件,而是显示谁访问过您的协作空间。它会显示谁查看了哪些内容,以及他们何时查看的。它还会显示他们如何访问这些内容。他们是只是查看了还是下载了?与历史记录表类似,您可以进行筛选和下载。
现在,侧边栏里以前有个功能已经不在了,那就是权限设置。之所以把它移到别处,是因为以前你可以直接设置整个协作空间的权限,但现在不行了。现在你不仅可以设置协作空间的权限,还可以逐个文件夹地进行设置。
让我举个例子来说明我的意思。这里我展示的是整个空间的权限。我们可以看到,所有用户都有权查看这个空间里的内容,所以他们可以查看所有的报告。Aaron Andersen 还有一些额外的权限,比如他可以下载和添加新内容。Josh 几乎可以在这个协作空间里做任何事情。而我,在这个协作空间里,真的可以做任何事情。
然而,对于“绝密项目”,我想进一步细化这些权限。我已经大幅缩减了权限,并设置只有我和 Aaron 可以访问此文件夹及其子文件夹。即使是 Aaron 的访问权限也受到严格限制。另一方面,同一空间下还有另一个文件夹。我没有对这个文件夹做任何设置,因为它并不特殊,也没有任何特殊的安全需求。我接受了 JMP Live 的默认行为,即直接从空间继承权限,我觉得这样就可以了。
现在我们可以开始看我想给你们看的这些报告了。假设我们已经实现了业务多元化,现在在北卡罗来纳州经营着几家葡萄酒厂。我们想跟踪天气情况,跟踪我们种植的葡萄情况,还想跟踪一些与我们用来装酒的玻璃瓶相关的测量数据。
让我先从地图报告开始。这份报告显示了北卡罗来纳州的一些气温。您可以看到该州西部有一些蓝点。这意味着那里气温较低,因为那里有山脉。JMP 可以生成一些非常复杂、令人印象深刻的报告。但这份报告并非如此。它非常简单。这份报告的巧妙之处在于它如何获取驱动报告的数据。这正是我要向您展示的内容,因为我们对 JMP Live 的数据处理进行了一些改进。
就像天气预报一样,我们需要定期刷新数据,并且我们正在使用现有的数据刷新功能来实现这一点。此次更新的亮点在于,JMP Live 上所有基于可刷新数据的报告,现在不仅会在报告顶部显示最近一次更新时间(2 分钟前),还会显示预计下次更新时间(大约 48 分钟后),因为届时数据将会刷新。
让我们深入了解一下数据。首先,我得找到它。我们收到一些客户的反馈,说从报告中找到数据的方法不太直观。我们已经努力让查找过程变得非常清晰。如果您看一下侧边栏,现在可以看到一个“数据”选项卡。我们可以看到,这份报告依赖于一个名为“北卡罗来纳州天气观测”的数据源。我们打开它。数据非常简单。一系列气象站报告的信息包括它们的位置和当前温度。
这些数据是从哪里来的?我从 weather.gov 网站获取的,该网站维护着一个 REST API。我用 Python 写了一个脚本来获取这些数据。我简单展示一下这段 Python 代码。它非常简单明了。它会查找北卡罗来纳州所有参与 weather.gov REST API 的气象站。对于每个气象站,它会尝试获取信息,在我的例子中,只需要获取温度、经度和纬度。
有可能气象站没有响应。也许它现在宕机了。也可能是那个气象站实际上并没有报告我请求的所有数据。这也没关系。我直接跳过这些就行了。当我找到我想要的数据时,我就把它添加到这个天气数据列表中。这个脚本并不复杂,也没什么了不起的,但你知道吗?我喜欢它,因为它是我自己写的,而且它能用。我真的不想为了在数据刷新脚本中使用它而把它重写成 JSL。
我们在这里做了一项改进,现在你可以在 JSL 数据刷新脚本中直接调用 Python 脚本,接下来我会演示它的工作原理。设置这个数据发布页面时,它的工作方式和以前基本相同。首先,你需要告诉 JMP Live:“我希望这个数据可以刷新。” 然后,你需要提供一个脚本,告诉 JMP Live:“当需要刷新数据时,我该如何获取这些数据?”
您可以选择设置刷新计划,我选择每天每小时刷新一次。我们来看看脚本本身。我所做的只是将刚才展示的 Python 脚本封装在一个字符串中。然后我使用了新的 JSL 命令 Python Execute。
第一个参数是我想将哪些 JSL 变量传递给 Python 脚本?就我而言,没有任何 JSL 变量,因为我的 Python 脚本本身就足够独立运行。第二个参数是我想在 Python 脚本运行结束后获取哪些变量?就我而言,我只想获取一个名为 All_Weather_Data 的列表。最后,您需要以字符串的形式传入 Python 命令。
至此,我的 JSL 脚本就可以访问 All_Weather_Data 列表了。我只需要创建一个新的 JMP 数据表并格式化列即可。我习惯在 JSL 中完成这些操作,所以这次也全部使用 JSL。Python 脚本会继续执行它最擅长的任务——获取天气数据。如果您想了解更多关于 Python 和 JSL 集成的信息,请查看 JMP 脚本索引。
我们来看看同一个文件夹里的另一份报告,这份报告是关于我们酒庄的。这里是瓶子分析报告。这份报告旨在分析瓶子制造过程中涉及的各种属性与缺陷率之间是否存在任何关联。就目前来看,随着二氧化硅含量的增加,我们的缺陷率似乎有所下降。我们这里有一个色谱柱切换器,所以还可以查看其他属性。目前看来,我们的缺陷率徘徊在1.5%左右,这并不理想。我希望我们的供应商能够进一步降低这个缺陷率。
我们来看看这份报告的数据来源。同样,我们点击左侧边栏的“数据”选项卡。这些数据来自哪里呢?正如标题所示,数据来自我们的瓶子供应商。但与我从网络 API 获取的天气数据不同,我们的瓶子供应商没有网络 API。他们没有开放内部数据库供我们查询和获取数据。不仅如此,我们的瓶子供应商甚至不使用 JMP,所以他们也不会向我们提供 JMP 数据表。他们目前的做法是通过电子邮件发送 CSV 文件。
我想要一种更好的数据更新处理方式,而不是打开电子邮件,发现有人发给我一个新的 CSV 文件,然后停下手头的工作,把它转换成 JMP 数据表等等。我们现在已经想出了一个策略来处理这种情况,即供应商向你提供数据,但数据不是以 JMP 数据表的形式提供的。
我们来看看这里的设置。您可以看到,除了之前的两个选项——上传 JMP 数据表和通过数据刷新导入数据——现在我们新增了第三个选项,我们称之为“导入”。有了这项功能,您可以为供应商提供非常有限的特定访问权限,他们可以进入这个页面,仅导入数据,而不能对一个文件夹进行其他操作。您还可以进行更多设置。您可以进入设置,告诉 JMP Live:“我希望这些数据可以导入。” 然后告诉 JMP Live:“我希望供应商提供什么类型的文件?” 在我的例子中,我希望收到 CSV 文件。但它也可以是 Excel 文件、JSON、XML 等。
最后,您需要告诉 JMP Live 如何将供应商上传的文件转换为 JMP 数据表。我们打开脚本。我在这里透露一个小秘密:这个脚本不是我写的,您也不应该自己写。JMP 的一个优点是,它完成某个操作后,会提供一个脚本来帮助您重现该操作。我翻出了之前收到的一封包含供应商提供的 CSV 文件的电子邮件,并在 JMP 中打开了它。然后我看到了一个数据表。该数据表中包含一个源脚本。这个源脚本几乎直接转换成了这个导入脚本。
当然,并非总是那么容易,但通常来说都非常简单。我强烈建议您充分利用 JMP 的脚本生成功能。事实上,当您第一次在这里设置导入脚本时,您会看到与源脚本相关的选项,例如复制和查看脚本等等。这绝对是一个非常好的开端。
当供应商导入数据时,无论是手动上传 JMP 数据表、运行数据刷新脚本,还是使用这种新的导入方式,JMP Live 都会在每次获取新数据时自动刷新所有使用该数据的报表。我们打开“报表”选项卡,以便在数据导入过程中随时查看。
我暂时假设自己是数据提供者,并使用这里更新后的信息。现在我们可以看到 JMP Live 正在处理数据表。它使用我们定义的导入脚本,将我刚刚上传的 CSV 文件转换为 JMP 数据表,而 JMP Live 正是处理这种格式的数据表。
现在,最新数据已牢固地存储在 JMP Live 中,并且正在重新生成使用这些数据的三个报告。让我们回到刚才查看的报告。我们可以看到,缺陷率已从大约 1.5% 降至大约 0.5%,这是一个很大的进步。这样做的好处是,一旦完成所有设置,耗时很短,供应商可以在数据可用时随时更新,而且不会中断您的工作流程。
我还有一份报告要给你们看,那是一份控制图。这份控制图记录了我们对酿酒葡萄进行的各种测量数据。我们种植了好几种不同的葡萄品种:阿利亚尼科、歌海娜、桑娇维塞等等。我们会测量产量、糖分含量和酸度(pH值)。
这并非什么新鲜事。JMP Live 中的控制图功能由来已久。此次的创新之处在于数据方面。现在,JMP Live 支持使用单独的文件来存储控制限值。您可以看到,这份报告使用了两个不同的 JMP 数据表。一个包含葡萄本身的数据,另一个包含控制限值。
以上内容涵盖了大多数 JMP Live 用户需要了解的大部分新功能,但我还想花点时间谈谈 JMP Live 网站管理员这部分用户需要了解的一些新功能。如果您是管理员,您还会发现一些其他的新功能。让我们一起来看看管理员页面的侧边栏。
别担心,并非每个标签页都有新功能,但第一个标签页“服务器”确实有新增内容。现在,您可以更轻松地了解何时需要进行 JMP Live 重新授权。需要重新授权时,我们也简化了操作流程。您只需点击蓝色的“授权”按钮,然后系统会引导您完成几个非常简单的步骤。您需要复制此请求代码。然后访问 jmp.com/authorize,粘贴此请求代码。系统会返回一个授权码。将其输入此处,即可完成授权。现在是不是很简单了?
沿着侧边栏向下看,下一个新增功能位于“用户”选项卡。我来找一个用户,我的同事迈克尔。这里的新功能是,我们允许您通过用户界面轻松删除用户。删除用户时,您还可以选择删除其所有个人身份信息。如果您在受特定隐私法规(例如欧洲的 GDPR)约束的地区工作,此功能可能对您很有用。
另一个新增功能是,我们现在可以帮您查找特定用户所属的群组。之前我们已经实现了反向查找功能,您可以轻松地从群组中找到用户。现在,您也可以轻松地从用户中找到群组。这非常有用,因为您可以逐步追踪这些关系,并构建出您网站上用户群组关系的清晰模型。
顺便一提,与我接下来要在管理页面上展示的大部分内容不同,这种对用户组关系的探索不仅对全站管理员开放,也对协作空间的负责人开放。因为对他们来说,了解这些关系非常有用,这样他们就能更好地决定授予谁访问空间的权限。当然,只负责一个协作空间的负责人不可能对用户和组执行所有操作。他们当然无法删除用户。
我们来快速演示一下如何查看这些用户组之间的关系。我的同事 Michael 当然是 JMP Live 用户组的成员。JMP Live 用户组里还有 Eric Hill。Eric Hill 不仅在 JMP Live 用户组里,他还在一个名为“名叫 Eric 的人”的用户组里。“名叫 Eric 的人”用户组里还有 Eric Bourn。您可以看到,您可以轻松地点击查看这些关系。
沿着侧边栏向下看,下一个新增功能是“计划”。之前我给大家展示过一个按计划刷新数据的示例,那就是北卡罗来纳州的天气观测数据。在管理页面的这个位置,您可以概览整个网站上所有正在进行的数据刷新。在我的示例中,网站上只设置了三个数据刷新计划。这是因为这是我们在JMP办公室用来做演示的小型网站。但在您的实际环境中,您可能需要设置数百个,甚至数千个数据刷新计划。
这是一个很棒的仪表盘,可以用来监控这些计划。例如,即将运行的计划(例如,35 分钟后即将运行的计划)会显示在顶部,而时间最远的计划则会显示在底部。此表格将显示所有已设置数据刷新的帖子。谁设置的?刷新频率是多少?下次运行时间是什么时候?
如果您想调整设置,或者想避免数据刷新过于集中在一天中的某个特定时间段,您也可以直接在此处编辑这些计划。如果您有很多数据刷新计划,筛选它们可能也会很有帮助。
继续向下浏览侧边栏,我们来到了“日志”或“审计日志”。这并非新功能,我们一直都有审计日志。审计日志本身并没有什么令人兴奋的新功能。但是,如果您曾经尝试下载过成千上万甚至数百万条审计日志记录,您可能对用户体验并不满意。
我们已尽力改善用户体验。现在,当您下载大量审计日志记录时,我们会立即反馈正在处理中。您还可以通过查看进度条来了解大约需要多长时间。
本次演示内容丰富,我来为您总结一下。所有 JMP Live 用户现在都可以使用排序功能,无论您选择哪种排序方式,它都会一直生效,直到您更改为止。所有用户现在都可以 @提及同事。被 @提及后,您会收到一个链接,点击即可直接进入对话,方便您立即参与讨论。
发布控制图的用户可能会很高兴地得知,JMP Live 现在支持将控制限放在单独的文件中。我们简化了从报告中查找数据以及从数据中查找报告的过程。编写数据刷新脚本的用户可能会喜欢现在可以在这些刷新脚本中执行 Python 代码这一功能。
现在您可以为数据提供商设置非常精准的访问权限,让他们只能在 JMP Live 的特定文件夹中导入数据,而不能访问其他任何位置。您只需提供导入文件类型和一个脚本,该脚本会告诉 JMP Live 如何将提供商上传的内容转换为 JMP 数据表。编写脚本时,我强烈建议您从数据表源脚本入手。尽可能利用 JMP 的脚本编写功能。
对于协作空间的管理者来说,现在可以查看空间内发生的所有事件,以及访问过该空间的用户。这两种情况下,这些表格都可以进行筛选和下载。您不再局限于对整个空间进行全局权限设置,而是可以根据需要,对特定文件夹的权限进行细化。
对于管理 JMP Live 的用户而言,还有一些其他新增或改进的功能。我们简化了 JMP Live 的重新授权流程。我们内置了删除用户的功能,并且支持 GDPR 等法规,这些法规可能会要求您删除用户的个人身份信息。
我们简化了用户与组之间关系的探索过程。我们新增了从 Active Directory 服务器同步用户和组的功能。现在,您可以查看或编辑整个 JMP Live 站点的数据刷新计划,而且下载大型审计日志也不再是问题。
时间这么短,内容确实很多。感谢您的参与。我也建议您看看本次大会的其他点播视频。谢谢,祝您今天过得愉快。再见。