我喜欢JMP报告每天更新并自动发布而无需按任何键。 因此,为了说明我的意思,我将使用一个大多数人都应该感兴趣的案例研究。 从2020年开始,我想看看大流行的演变,以预测未来的封锁是否会在特定国家发生。
首先,我必须寻找一个良好且可靠的数据源。 研究了不同的公开数据库后,我选择了约翰·霍普金斯冠状病毒资源中心。 我的下一步是将三个不同的数据源导入JMP分析每天的病例,每天的死亡人数和每天的恢复情况。 我在文件菜单中选择了Internet Open,这使导入数据变得简单而直接。 以下是已确认的COVID-19病例的示例。

为了将其转换为脚本,我必须将手动导入步骤转换为三个数据集,如下所示。 以下是已确认的COVID-19病例的数据集示例:
Open(
"https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv",
HTML Table( 1, Column Names( 1 ), Data Starts( 2 ) ));
我使用的主要语法是“ Open()”函数,该函数可打开表和脚本以及来自互联网的数据! 该语句比自动写入表中的语句简单得多。
接下来,将数据导入到JMP中:

现在,我们准备采取下一步步骤,准备好数据进行分析。
- 将日期与通用引用的列名称一起堆叠到一列中(因为数据每天都会更新)。 在“表”菜单中,“堆栈”选项是一个绝佳的平台,可手动执行此任务。

- 重命名“累积案例”,“累积死亡人数”和“累积恢复”中的列。
- 加入三个数据集:每日病例,每日死亡人数和每日康复情况。
- 将日期格式更改为数字和连续,然后设置日期格式。
- 使用每一列的Dif公式函数,使用每日新病例,每天新死亡和每天新恢复的公式创建三个新列,而没有负值。
当在数据集中切换位置时会出现负值(参见下文),这当然没有任何意义。 因此,我必须创建三个新列以将负值替换为0(通过对每列使用Max公式函数)。

最终数据集现已准备好进行分析。

为了在此阶段实现自动化,已编写了数据准备的所有不同步骤的脚本。 并感谢动作记录在日志中,这是新的JMP 16 ,我的生活现在变得如此轻松。 现在,我可以轻松地从Action Recording本身提取不同的脚本化数据操作步骤,并将其插入最终脚本中。

现在,我已经掌握了所有数据导入和准备步骤的脚本,可以使用Graph Builder以有用的方式可视化和分析数据,如下例所示:

图表的上半部分包含全球累积的病例,死亡和康复情况。 下半部分每天在世界范围内有新病例,死亡和康复。 我添加了本地数据过滤器,该过滤器使我可以针对特定国家/地区进行过滤。 我将图形脚本添加到最终脚本中。
最后一步,我想将此发布到JMP Live或JMP Public。 下面是在JMP Public上发布了网络报告,JMP Live的公共版本:
由于在JMP 16中发布已经发生了很大的变化,因此,这是您可以使用脚本从JMP 16发布到JMP Public中的方法。 首先,需要创建使用桌面JMP的JMP Live连接。在JMP 16中,转到“文件”->“发布”->“管理连接”。 添加一个新的连接。 接下来,指定URL和API密钥。 要获取API密钥,请从JMP Public或JMP Live帐户设置生成它。
在JSL中,使用该连接发布到JMP Live。这里是将分析结果发布到JMP Public的脚本示例(其中graph1是要发布的报告)。 我将其设置为公开,以便每个人都可以使用该报告)。
webreport = New Web Report();
webreport << Add Report( graph1, title( "Graph1 Title" ) );
use_data = "true";
jmplive = New JMP Live( Connection( "JMP Public" ), Prompt( If Needed ));
jmpliveresult = jmplive << Publish ( webreport, Public (1));
report = jmpliveresult << As Scriptable;
由于此报告每天都会使用新数据进行更新,因此需要替换现有报告。
jmpliveresult = jmplive << Replace( webreport, ID( "website ID" ) );
网站ID是public.jmp.com/packages/之后的代码(请参见下文),使用它可以替换现有报告的内容,而不必创建具有更新内容的新报告。

到现在为止还挺好! 为了每天发布一次,我使用Windows Task Scheduler。 在“任务计划程序”中,我选择一个“基本任务”,为该任务创建一个名称,然后触发它,以便它每天早上8:00发布报告。

最后一步是告诉任务计划程序要打开哪个程序以及要执行哪个操作。 因此,我定义了要使用的JMP16.exe路径和JSL脚本。

等等,现在我的报告将每天发布和更新,而无需按任何键。 你会找到JMP Public发表的报告。