简介
在今年2月初,SLS 已经发布针对新冠病毒肺炎疫情国内动态展示分析 APP,目前该能力全面开放给政府、社区、第三方平台和开放者进行广泛应用,完全免费开放。还没有关注过的同学可以通过以下链接了解背景:
最近,随着新冠病毒肺炎疫情在全球爆发,SLS 又推出了跟踪关注全球范围疫情动态的分析大盘。与国内大盘主要关注国内疫情(数据来源于央视新闻、人民日报、各省市卫健委公告)相比,国际疫情大盘则是跟踪关注全球范围的疫情动态,数据来源是被国际上广泛引用的约翰·霍普金斯大学开源数据集。
SLS
阿里云日志服务(SLS)是针对日志类数据的一站式服务,无需开发就能快捷完成海量日志数据的采集、消费、投递以及查询分析等功能,提升运维、运营效率。日志服务主要包括实时采集与消费、数据投递、查询与实时分析等功能,适用于从实时监控到数据仓库的各种开发、运维、运营与安全场景。
作为日志分析中台,日志服务提供了一站式的数据采集、加工、查询分析、AI计算、可视化,并支持互联互通。
亮点
1. 提供规整的疫情数据,并每天定时同步更新
SLS 已经将疫情相关数据进行收集和规整,每天定时更新,并形成可视化平台覆盖全球各个国家/地区、省份/州的疫情信息。你只需要专注在数据的分析和展示,其它繁琐的细节 SLS 都已经处理好。
2. 预定义丰富数据大盘、并支持自定义
内置多份数据大盘并支持自定义提供全球各个国家/地区、省份/州疫情态势。支持交互式查询分析、自定义报表、深钻与告警等。
全球疫情态势概览
各国家/地区的疫情详情
3. 数据平台开放,互联互通
数据平台开放,互联互通日志服务是开放的,可以和大量其他环境的系统、三方应用或开源进行对接。提供易扩展的数据分析、存储、可视化平台能力,如DataV、Blink、OSS、流计算、Grafana、SOC等。
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
使用方法
登录阿里云日志服务控制台,可以看到疫情分析的应用:
点击进入进行首次配置(一次性,后续数据会自动同步),之后即可直接使用日志服务提供的多份数据大盘,开启交互式分析、可视化之旅。