新冠肺炎疫情可视化报表自动发布实战技巧

时间:2024-04-10 08:42:36

在上周我们发布的《如何用JMP让新冠肺炎疫情的可视化清晰地共享可见》文章中,我们向大家展示了经由JMP Live或其免费公共预览版JMP Public发布报表的常规流程。

尽管其手动发布过程简单明了,但是相信广大JMP拥趸不禁要问,当下的疫情动态更新至少以天来度量,而企业运营相关的一些报表更是以小时来刷新,如果每次发布都是以手动形式实施的话,除了后台数据和报表与时俱进外,发布操作本身未免重复、琐碎且低技术含量。那么,是否存在更智能的发布方案将朕从低附加值的工时中解放出来,投入到具有更高附加值的工作中去呢?

答案是肯定的。本期我们就向大家介绍一些通过JMP Public自动发布报表的小技巧,希望可以帮助大家提高效率。

首先,仍然需要声明的是:

  • 这是一篇“轻度JSL癌”的文章,但我们会侧重阐述其编写逻辑和重点,尽量不造成大家的阅读障碍和不适。

  • 如果你能理解下面的JSL基本语法结构,那么你理解本文其实并不困难。
    object << Message (Argument); /* 即向某对象(obj)发送(<<)某指令或信息(Message) */

  • 之所以选择JMP Public为载体进行讲解,在于广大读者并非JMP Live的正式用户,因此无法实战体验。而与JMP Live相对应的脚本编写将在此基础上增添一些保密性设置,但总体框架逻辑与本文趋同。

*.注:JSL,即JMP Scripting Language,是JMP独有的脚本语言。

然后,为了便于初学者消化理解,我们将《如何用JMP让新冠肺炎疫情的可视化清晰地共享可见》原文中的发布内容简化至两个单一报表(图-1),即“中国疫情地图”和“确诊、死亡和治愈病例趋势图”。

新冠肺炎疫情可视化报表自动发布实战技巧

图-1 JMP Public发布效果图

我们直接给出发布该JMP Public报表的JSL参考模板框架如图-2所示,各语句职能参见绿色备注信息。

新冠肺炎疫情可视化报表自动发布实战技巧
新冠肺炎疫情可视化报表自动发布实战技巧
图-2 JMP Public发布报表的JSL模板框架

接下来,除了绿色备注信息外,我们对其中的一些要点语句做些补充说明:

1 Include (“*.jsl”)

相当于一个引用或调用语句。无论是经由JMP Live或JMP Public发布报表,还是经由其他途径发布报表,前提都是我们生成了这些待发布的报表,而这里括号中的*.jsl就是用于生成这些报表的脚本。而从数据源到生成所需报表的脚本可长可短,因此,我们把这段略去以简化脚本结构,使大家能够更清晰地窥见JMP Live或JMP Public发布脚本的总体逻辑框架。

若将图-2中的*.jsl局部展开,他们大致长成下图这个样子(图-3),白话直译的话,其核心功能就是用“图形生成器”画了一张图,并将这张图形报表命名为gb01。如果想深入了解这部分脚本编写技巧的话,也欢迎你参与下周的JMP精学课堂之《JMP脚本语言基础介绍》来一窥究竟。
新冠肺炎疫情可视化报表自动发布实战技巧
图-3 生成“中国疫情地图”的JSL脚本

2 New Web Report ()

简单地说,New Web Report ()就是个筐,啥都可以尝试往里装。该容器用于承接待发布报表及其相关元素集合,如可向其添加索引信息(标题和描述等)和各种不同类型报表。

3 Index ()

设定Web报表的标题和描述等索引信息。其中,description ()可以使用HTML href语法链接到其他网站。

在图-2的JSL中,描述包含指向中国国家卫生健康委员会官网的链接。其中,链接标题 形式的语句使该链接生效,需要注意的是,在href参数中需要使用转义字符串!”。然后,该链接将在JMP Pubic索引信息中被识别,单击该链接则跳转至相应地址,甚至是另一个JMP Public报告。

4 add report ()

<< add report ()可以将拟发布的所有报表和其他元素添加到New Web Report ()所构建的容器中。如果你需要添加新报表,则另起一行,再写一句<< add report (),并重新运行脚本即可。

5 publish ()

  1. URL ()用于指定JMP Public服务器的网络地址。

  2. public (0 or 1)定义所发布的报表是“孤芳自赏”还是“雅俗共赏”。如在图-2的示例中,public (0)使所发布的报表仅自己可见,因此在Web页面子报表的右上角呈现“锁型”图标。如果想变更为所有人可见,则设置public (1)公开即可。

  3. 图-2示例为首次发布报表的JSL范本。若想用当前发布报表替换之前的已发布报表,则追加一个replace ()语句即可,参数为期望替换报表的Package ID。所谓Package ID,即在已发布报表的网址末尾,一段具有唯一性的代码,非常容易识别,拷贝ID粘贴至红色字符处即可。

6 结尾的If ()语句用于打开发布后的Web报表页面,而Close All ()语句则使整个发布过程归于无形。

7 其他方面,本文虽然将《如何用JMP让新冠肺炎疫情的可视化清晰地共享可见》原文中的仪表板式报表简化为两个单一报表发布,但其套路对于仪表板式报表的发布同样适用,只是生成待发布报表的JSL脚本会有所不同而已。此外,JMP报表的交互特性也将在JMP Live或JMP Public的Web报表中尽可能地被予以保留。

8 最后,如果你的数据源保持定期更新,那么,通过上述逻辑链条,我们已然可以实现一键式的生成自定义报表并发布至指定的JMP Public或JMP Live服务器。

此时,JMP的广大拥趸兴许还有一丝奢望,那就是是否可以实现自定义报表按照自定义周期来滚动自动发布?答案也是肯定的。还记得我们早前曾经发布的《JSL高手修炼秘籍之–自动化分析运行程序,让你的报告自动“跑”起来!》文章吗?没错!只需在所编写脚本的起始行添加 //! 字符串,则该脚本在打开时便可自动运行,这在某种程度上将一个*.jsl文件转型为了一个近似*.exe的文件。再配合Windows的任务计划程序,即可打通周期性自动发布报表的完整路径,从而使所发布报表实时更新。

如果你觉得以上文字内容有些晦涩,没有关系,下面的小视频将向你完整演示配合Windows任务计划程序下的JMP Public自动发布过程。

undefined

可以预见的是,伴随JMP产品系列的不断更新换代,依托JMP原本强大统计分析能力的信息分享必将使你的统计洞察发挥更大价值,而事实上也的确如此,越来越多的JMP用户正在与我们探索如何充分运用JMP Live为企业赋能,让分析成果广泛地在组织内得以即时分享并落地应用。如果你对本文中所提到的报表感兴趣,欢迎前往JMP Public查看更多

小福利
如果你对本文所附带的JMP Public自动发布JSL模板感兴趣的话,也欢迎私信我们,新鲜出炉的JSL模板将赠送给你。在模板中,我们将gb01和gb02替换为了JMP自带样本数据集下Big Class.jmp的两个简单图表,便于你来练习。

新冠肺炎疫情可视化报表自动发布实战技巧