我喜欢 JMP 报告每天更新并自动发布,无需按任何键。 因此,为了证明我的意思,我将使用大多数人应该感兴趣的案例研究。 从 2020 年开始,我想观察疫情的演变,以预测未来是否会在特定国家实施封锁。
首先,我必须寻找一个好的、可靠的数据源。 在研究了不同的公开数据库后,我选择了约翰霍普金斯大学冠状病毒资源中心。 我的下一步是将三个不同的数据源导入到联合管理计划分析每日病例、每日死亡和每日康复情况。 我在文件菜单中选择了“Internet 打开”,这样可以轻松、直接地导入数据。 以下是已确诊的 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 ,我的生活现在轻松多了。 现在,我可以轻松地从动作录制本身中提取不同的脚本化数据操作步骤,并将它们插入到最终脚本中。

现在我已经有了所有数据导入和准备步骤的脚本,我可以使用 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 任务计划程序。 在任务计划程序中,我选择一个基本任务,为该任务创建一个名称,然后触发它,以便它每天上午 8:00 发布报告

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

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