为了挖掘冗余数据的价值,数据分析需求日益增多,而分析结果的常见表现形式有数据分析报告和数据看板(大屏),与报告文档不同,数据看板是对动态可视化的高度凝练,具有实时性强、信息量大的特点,又因其酷炫的视觉效果,深受数据产品需求方的青睐。
构建数据看板的工具有很多,比如 Python 生态的 pyecharts、plotly,或者 BI 软件的 FineBI、PowerBI 等等,甚至使用 EXCEL 的联动图表也能实现。
而对于数据库管理人员,利用 Navicat 图表工具构建数据看板,也是一个简单有效的方式。
一、数据集说明
笔者以深圳市政府数据开放平台(https://opendata.sz.gov.cn/)上的一份街道实时数据的数据集为例,该数据集包括 7 个字段。
字段名 | 含义 |
---|---|
TIME1 | 起始时间 |
PERIOD | 时间片 |
BLOCKID | 街道ID |
EXPONENT | 交通指数 |
GOLEN | 通过样本总行驶长度 |
GOTIME | 通过样本总行程时间 |
SPEED | 平均行程车速 |
起始时间为记录的开始时间,每个时间片为 5 分钟,例如时间片 1 就表示从起始时间开始的第一个 5 分钟, 2 表示第 2 个 5 分钟,以此类推。交通指数反映一个街道在一个时间片内的拥堵情况,值越大越拥堵,划分五个等级,0-1
畅通,2-3
基本畅通,4-5
缓行,6-7
较拥堵,8-10
拥堵。
下面,笔者以 SQLite 数据库进行演示。
二、统计查询需求
为了数据看板的充实性,我们可以多设计一些监测需求,比如:
1、监测街道总数
SELECT COUNT(DISTINCT BLOCKID) AS '街道总数' FROM Traffic
75
2、累计监测总量
SELECT COUNT(*) FROM Traffic
10000
3、累计监测时长
SELECT MAX(CAST(PERIOD AS decimal))*5/60 AS '累计监测时长(h)' FROM Traffic
11
4、累计行驶长度
SELECT SUM(GOLEN)/1000 AS '累计行驶长度(km)' FROM Traffic
2137966
5、总体平均交通指数趋势
-- 每五分钟的平均交通指数
SELECT PERIOD, ROUND(AVG(EXPONENT), 2) AS '平均交通指数' FROM Traffic
GROUP BY PERIOD
ORDER BY CAST(PERIOD AS decimal)
6、近两小时总体平均交通指数对比
SELECT ROUND(AVG(EXPONENT), 2) AS '交通指数', '近一小时' FROM Traffic
WHERE (SELECT MAX(CAST(PERIOD AS decimal)) FROM Traffic)-12