新冠病毒肺炎疫情数据分析 APP 发布 国际疫情大盘

简介

在今年2月初,SLS 已经发布针对新冠病毒肺炎疫情国内动态展示分析 APP,目前该能力全面开放给*、社区、第三方平台和开放者进行广泛应用,完全免费开放。还没有关注过的同学可以通过以下链接了解背景:

最近,随着新冠病毒肺炎疫情在全球爆发,SLS 又推出了跟踪关注全球范围疫情动态的分析大盘。与国内大盘主要关注国内疫情(数据来源于央视新闻、人民日报、各省市卫健委公告)相比,国际疫情大盘则是跟踪关注全球范围的疫情动态,数据来源是被国际上广泛引用的约翰·霍普金斯大学开源数据集

SLS

阿里云日志服务(SLS)是针对日志类数据的一站式服务,无需开发就能快捷完成海量日志数据的采集、消费、投递以及查询分析等功能,提升运维、运营效率。日志服务主要包括实时采集与消费、数据投递、查询与实时分析等功能,适用于从实时监控到数据仓库的各种开发、运维、运营与安全场景。
新冠病毒肺炎疫情数据分析 APP 发布 国际疫情大盘

作为日志分析中台,日志服务提供了一站式的数据采集、加工、查询分析、AI计算、可视化,并支持互联互通。
新冠病毒肺炎疫情数据分析 APP 发布 国际疫情大盘

亮点

1. 提供规整的疫情数据,并每天定时同步更新

SLS 已经将疫情相关数据进行收集和规整,每天定时更新,并形成可视化平台覆盖全球各个国家/地区、省份/州的疫情信息。你只需要专注在数据的分析和展示,其它繁琐的细节 SLS 都已经处理好。

2. 预定义丰富数据大盘、并支持自定义

内置多份数据大盘并支持自定义提供全球各个国家/地区、省份/州疫情态势。支持交互式查询分析、自定义报表、深钻与告警等。

全球疫情态势概览

新冠病毒肺炎疫情数据分析 APP 发布 国际疫情大盘

新冠病毒肺炎疫情数据分析 APP 发布 国际疫情大盘

各国家/地区的疫情详情

新冠病毒肺炎疫情数据分析 APP 发布 国际疫情大盘

新冠病毒肺炎疫情数据分析 APP 发布 国际疫情大盘

3. 数据平台开放,互联互通

数据平台开放,互联互通日志服务是开放的,可以和大量其他环境的系统、三方应用或开源进行对接。提供易扩展的数据分析、存储、可视化平台能力,如DataV、Blink、OSS、流计算、Grafana、SOC等。
新冠病毒肺炎疫情数据分析 APP 发布 国际疫情大盘

4. 完全免费

完全免费疫情服务应用以及相关资源数据,包括仪表盘、告警等功能完全免费。

数据

导入和规整

可能有一些同学只关注对 COVID-19 疫情的数据分析,也想要上手试一试,但是对于如何从各个数据源获取并处理数据不了解,又或者对 SLS 的 SQL 不是很熟练。为了帮助这部分同学方便快捷的实现数据分析,SLS 已经将疫情相关数据进行收集和规整,并且每天定时更新。你只需要专注在数据的分析和展示,其它繁琐的细节 SLS 都已经处理好。

数据样例

type:  Country/Region Cases
version:  v2020-04-17T11:55:36
Last Update:  2020-04-09 01:12:20
Country/Region:  China
Country/Region (ch):  中国
LatLng:  35.000074,104.999927
Confirmed:  83798
Confirmed Hist:  [644, 923, 1409, 2079, 2882]
Confirmed Trend:  {"2020-01-23": 644, "2020-01-24": 923, "2020-01-25": 1409, "2020-01-26": 2079, "2020-01-27": 2882}
New Confirmed Hist:  [95, 279, 486, 670, 803]
New Confirmed Trend:  {"2020-01-23": 95, "2020-01-24": 279, "2020-01-25": 486, "2020-01-26": 670, "2020-01-27": 803}
Deaths:  3352
Deaths Hist:  [18, 26, 42, 56, 82]
Deaths Trend:  {"2020-01-23": 18, "2020-01-24": 26, "2020-01-25": 42, "2020-01-26": 56, "2020-01-27": 82}
Recovered:  78556
Recovered Hist:  [30, 36, 39, 49, 58]
Recovered Trend:  {"2020-01-23": 30, "2020-01-24": 36, "2020-01-25": 39, "2020-01-26": 49, "2020-01-27": 58}

数据格式

各种疫情相关数据均放在一个日志库 ncp 中,通过字段 type 作为类型区分:Global Cases, Country/Region Cases and Province/State Cases。通过 version 字段来标记数据版本,每一个版本都会包含完整的数据,用来实现数据的修正。
数据字段列表如下:

字段名 说明 样例
type 数据类型 Global Cases, Country/Region Cases 或者 Province/State Cases
version 数据版本 v2020-01-26T12:30:00
Last Update 最新来源新闻发布时间 2020-01-26 18:23
Confirmed 最新确诊病例累计数据 1058
Confirmed Hist 确诊病例累计数据(从2020.01.23到当前的历史数据数组) [270, 444, 444, 549, 729, 1058]
Confirmed Trend 确诊病例累计数据(从2020.01.23到当前的历史趋势数据字典) {"2020-01-21": 1, "2020-01-22": 1, "2020-01-23": 1, "2020-01-24": 2, "2020-01-25": 2, "2020-01-26": 3}
Recovered 最新治愈病例累计数据 42
Recovered Hist 治愈病例累计数据(从2020.01.23到当前的历史数据数组) [0, 28, 28, 31, 32, 42]
Recovered Trend 治愈病例累计数据(从2020.01.23到当前的历史趋势数据字典) {"2020-01-21": 1, "2020-01-22": 1, "2020-01-23": 1, "2020-01-24": 2, "2020-01-25": 2, "2020-01-26": 3}
Deaths 最新死亡病例累计数据 52
Deaths Hist 死亡病例累计数据(从2020.01.23到当前的历史数据数组) [3, 17, 17, 24, 39, 52]
Deaths Trend 死亡病例累计数据(从2020.01.23到当前的历史趋势数据字典) {"2020-01-21": 1, "2020-01-22": 1, "2020-01-23": 1, "2020-01-24": 2, "2020-01-25": 2, "2020-01-26": 3}
New Confirmed Hist 疑似病例现有数据(从2020.01.23到当前的历史数据数组) [11, 0, 41, 0, 56, 127]
New Confirmed Trend 疑似病例现有数据(从2020.01.23到当前的历史趋势数据字典) {"2020-01-21": 1, "2020-01-22": 1, "2020-01-23": 1, "2020-01-24": 2, "2020-01-25": 2, "2020-01-26": 7}

分析展示

SLS 提供大规模日志实时查询与分析能力,其拥有以下优势:

  • 实时:写入后可以立即被分析。
  • 快速:一秒内,查询(5个条件)可处理10亿级数据,分析(5个维度聚合+GroupBy)可聚合亿级别数据。
  • 灵活:可以改变任意查询和分析条件,实时获取结果。
  • 生态丰富:除控制台提供的报表、仪表盘、快速分析等功能外,还可以与Grafana、DataV、Jaeger等产品无缝对接,并支持Restful API,JDBC等协议。

如上文所说,SLS 提供的疫情数据通过 version 字段来标记数据版本。为了查询出最新版本的数据,可以通过以下 SQL:

type : "Province/State Cases" | select .... from log l right join (select max(version) as version from log) r on  l.version =  r.version

在预定义的疫情大盘中,每一个仪表盘对应的都是一个 SQL 分析。以 Global Cases Trend(全球疫情趋势)为例,为了分析全球累计确诊、死亡、治愈,以及现存病例发展趋势,我们可以通过以下 SQL 查询,并将结果图标保存为仪表盘即可,方便快捷。

type : "Global Cases" | select date_format(date_parse(l.a, '%Y-%m-%d'), '%b %e') as "Date", l.b as "Confirmed", l.b - r2.b - r6.b as "Active Confirmed", r2.b as "Deaths", r6.b as "Recovered"  from  (select  a,b    from log l right join (select max(version) as version from log) r on  l.version =  r.version, unnest( cast( json_parse("Confirmed Trend")   as map(varchar, bigint) ) ) as  t(a,b)) l left join (select  a,b    from log l right join (select max(version) as version from log) r on  l.version =  r.version, unnest( cast( json_parse("New Confirmed Trend")   as map(varchar, bigint) ) ) as  t(a,b)) r on l.a = r.a left join (select  a, b    from log l right join (select max(version) as version from log) r on  l.version =  r.version, unnest( cast( json_parse("Deaths Trend")   as map(varchar, bigint) ) ) as  t(a, b)) r2 on l.a = r2.a left join (select  a, b    from log l right join (select max(version) as version from log) r on  l.version =  r.version, unnest( cast( json_parse("Recovered Trend")   as map(varchar, bigint) ) ) as  t(a, b)) r6 on l.a = r6.a  order by l.a

使用方法

登录阿里云日志服务控制台,可以看到疫情分析的应用:
新冠病毒肺炎疫情数据分析 APP 发布 国际疫情大盘

点击进入进行首次配置(一次性,后续数据会自动同步),之后即可直接使用日志服务提供的多份数据大盘,开启交互式分析、可视化之旅。

上一篇:第5章—构建Spring Web应用程序—SpringMVC详解


下一篇:日志服务时间选择器增强