kdb - 计算组内的滞后时间差
问题描述
我有一个包含事件 ID、日期和时间的表格,如下所示
ids: 1 1 1 1 1 2 2 2 2 2
dates: 2021.03.10 2021.03.10 2021.03.10 2021.03.11 2021.03.11 2021.03.10 2021.03.11 2021.03.11 2021.03.11 2021.03.11
times: 12:00 12:01 12:03 12:04 12:05 13:01 13:05 13:06 13:12 13:15
t:([] ids:ids; dates:dates; times:times)
ids dates times
--------------------
1 2021.03.10 12:00
1 2021.03.10 12:01
1 2021.03.10 12:03
1 2021.03.11 12:04
1 2021.03.11 12:05
2 2021.03.10 13:01
2 2021.03.11 13:05
2 2021.03.11 13:06
2 2021.03.11 13:12
2 2021.03.11 13:15
我想计算所有 id 在同一日期内连续时间之间的差异。如果在单个日期中只有一次,我希望该值为 0。所需的输出看起来像
ids dates times deltaMinutes
----------------------------------
1 2021.03.10 12:00 0
1 2021.03.10 12:01 1
1 2021.03.10 12:03 2
1 2021.03.11 12:04 0
1 2021.03.11 12:05 1
2 2021.03.10 13:01 0
2 2021.03.11 13:05 0
2 2021.03.11 13:06 1
2 2021.03.11 13:12 6
2 2021.03.11 13:15 3
用qsql可以实现吗?
解决方案
q)update deltaMinutes:`int$-':[first times;times]by ids,dates from t
ids dates times deltaMinutes
---------------------------------
1 2021.03.10 12:00 0
1 2021.03.10 12:01 1
1 2021.03.10 12:03 2
1 2021.03.11 12:04 0
1 2021.03.11 12:05 1
2 2021.03.10 13:01 0
2 2021.03.11 13:05 0
2 2021.03.11 13:06 1
2 2021.03.11 13:12 6
2 2021.03.11 13:15 3
2 2021.03.12 11:00 0
-':
只是deltas
,但似乎二进制应用程序不支持增量
推荐阅读
- java - 为什么这个 for 循环会显示 4 和 5 之前的数字?
- java - 无法运行 mvn release:使用捆绑的 Maven 从 IntelliJ 准备
- php - Laravel 5.7 php升级到7.4后无法连接mysql
- firebase - 即使在一定范围后在 Firestore 中应用索引后也获得无序数据
- javascript - Three.js 中的 EdgesGeometry(例如 EdgesBufferGeometry)是否有缓冲版本?
- spring-boot - 使用 SpringFramework 发布 STOMP 消息时偶尔出现 NullPointerException
- google-app-engine - 如何将 Helidon 应用程序部署到 Google Cloud App Engine?
- python - 使用文件向特定 API 发布请求
- r - 给定 B1 的值,如何使用 Predict() 线性模型
- c++ - 为什么不接受具有默认分配参数的函数作为 0-arg 生成器?