Choose Language Hide Translation Bar
Ritalv
Staff
COVID-2019疫情可视化报表自动发布实战技巧

在之前我们发布的《如何用JMP让新冠肺炎疫情的可视化清晰地共享可见》文章中,我们向大家展示了经由JMP Live或其免费公共版JMP Public发布报表的常规流程。尽管其手动发布过程简单明了,但当下的疫情动态更新至少以天来度量,而企业运营相关的一些报表更是以小时来刷新,如果每次发布都是以手动形式实施的话,除了后台数据和报表高效更新外,发布操作既重复、琐碎,又技术含量低。那么,是否存在更智能的发布方案将我们从低附加值的工时中解放出来,投入到具有更高附加值的工作中去呢?

 

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

 

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

  1. 尽管这是一篇偏JSL的文章,但我们会侧重阐述JSL的编写逻辑和重点,尽量不造成大家的阅读障碍。
  2. 如果你能理解下面的JSL基本语法结构,那么你理解本文其实并不困难。

object << Message (Argument);   /* 即向某对象(obj)发送(<<)某指令或信息(Message) */

 

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

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

Ritalv_0-1584684031661.png

图-1 JMP Public发布效果图

 

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

Ritalv_1-1584684031677.png

Ritalv_2-1584684031686.png

 

图-2 JMP Public发布报表的JSL模板框架

 

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

  1. Include (“*.jsl”)

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

 

若将图-2中的*.jsl局部展开,他们大致如下图所示(图-3),其核心功能是用“图形生成器”画了一张图,并将这张图形报表命名为gb01

Ritalv_3-1584684031695.png

图-3 生成“中国疫情地图”的JSL脚本

 

  1. New Web Report ()

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

 

  1. Index ()

设定Web报表的标题和描述等索引信息。其中,description ()可以使用HTML href语法链接到其他网站。在图-2JSL中,描述包含指向中国国家卫生健康委员会官网的链接。其中,<a href=“link”>链接标题</a> 形式的语句使该链接生效,需要注意的是,在href参数中需要使用转义字符串\!”。然后,该链接将在JMP Pubic索引信息中被识别,单击该链接则跳转至相应地址,甚至是另一个JMP Public报告。

 

  1. add report ()

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

 

  1. publish ()
  • URL ()用于指定JMP Public服务器的网络地址。
  • public (0 or 1)定义所发布的报表是“仅自己可见”还是“公开可见”。如在图-2的示例中,public (0)使所发布的报表仅自己可见,因此在Web页面子报表的右上角呈现“锁型”图标。如果想变更为所有人可见,则设置public (1)公开即可。
  • 图-2示例为首次发布报表的JSL范本。若想用当前发布报表替换之前的已发布报表,则追加一个replace ()语句即可,参数为期望替换报表的Package ID。所谓Package ID,即在已发布报表的网址末尾,一段具有唯一性的代码,非常容易识别,拷贝ID粘贴至红色字符处即可。

       Ritalv_4-1584684031695.png

 

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

 

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

 

  1. 最后,如果你的数据源保持定期更新,那么,通过上述逻辑,我们已然可以实现一键式的生成自定义报表并发布至指定的JMP PublicJMP Live服务器。此时,JMP的广大拥趸兴许还有一丝奢望,那就是:是否可以实现自定义报表按照自定义周期来滚动自动发布?答案也是肯定的。我们之前曾经发布过一篇《自动化分析运行程序,让你的报告自动“起来!文章,只需在所编写脚本的起始行添加 //! 字符串,则该脚本在打开时便可自动运行,这在某种程度上将一个*.jsl文件转型为了一个近似*.exe的文件。再配合Windows的任务计划程序,即可打通周期性自动发布报表的完整路径,从而使所发布报表实时更新。

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

    PS:本文部分内容参考DanielBlog自动发布JMP Live报告的10个有用技巧。谢谢!

 

Article Labels
Article Tags