如何从 csv 保存的间隔固定的时间序列中找出缺失项
例题描述和简单分析
有 csv 文件 csv.csv,数据如下所示:
2021-02-02 00:00:00
2021-02-02 01:00:00
2021-02-02 02:00:00
2021-02-02 03:00:00
2021-02-02 04:00:00
2021-02-02 05:00:00
2021-02-02 06:00:00
2021-02-02 07:00:00
2021-02-02 08:00:00
2021-02-02 10:00:00
...
从 2021-02-02 00:00:00 至 2021-03-03 23:00:00,已排序,以 1 小时为间隔,有 30 天的数据,理论上每天 24 条,但实际上有遗漏,需要找出遗漏的日期时间,结果如下:
2021-02-02 09:00:00
2021-02-02 14:00:00
2021-02-03 06:00:00
2021-02-03 09:00:00
2021-02-03 11:00:00
2021-02-03 17:00:00
2021-02-03 18:00:00
2021-02-03 19:00:00
2021-02-03 20:00:00
2021-02-03 23:00:00
...
解法及简要说明
在集算器中编写脚本 p1.dfx,如下所示:
A |
|
1 |
=periods@s("2021-02-02 00:00:00","2021-03-03 23:00:00",3600) |
2 |
=file("csv.csv").import@ci() |
3 |
=A1\A2 |
简要说明:
A1 列出从 2021-02-02 00:00:00 至 2021-03-03 23:00:00 间隔为 1 小时的所有日期时间
A2 读取 csv 文件中的日期时间数据
A3 计算 A1 与 A2 的差集
JAVA 集成这段代码的方法可参考:《Java 如何调用 SPL 脚本》。
英文版