我正在使用 Javascript AWS S3 SDK 从我服务器上的 CSV 中提取数据。这是通过以下 SQL 查询语句完成的:
SELECT timestamps, parameterX
FROM S3Object
WHERE ${timestamp_header} > '${startTime}' and ${timestamp_header} < '${endTime}'
这将正确返回和之间期间的timestamps
和值。parameterX
startTime
endTime
但是,我希望能够从数据集的最后 X 秒(例如命名windowSec
)中动态提取这些值。换句话说,如果timestamps
CSV 中的最后一个(也就是最大值)值是2019-04-17 19:50:55
并且我指定我想要最后 20 秒,我想要在 和 之间2019-04-17 19:50:35
进行观察2019-04-17 19:50:55
。
我可以通过运行初始 S3 选择语句来获取完整timestamps
列并提取其中的最大值来做到这一点。但我认为在 S3 选择查询中有一种“正确”的方式可以直接执行此操作。我在下面尝试过,但我无法让它工作:
SELECT timestamps, parameterX
FROM S3Object
WHERE ${timestamp_header} > (MAX(${timestamp_header})-windowSec)
and ${timestamp_header} < MAX(${timestamp_header})
任何建议,将不胜感激。
CSV 样本数据(完整数据集):
timestamps,parameterX
2019-04-17 19:49:15.673949957+02:00,4.726368587
2019-04-17 19:49:20.673949957+02:00,4.71613058
2019-04-17 19:49:25.673949957+02:00,4.705892573
2019-04-17 19:49:30.673949957+02:00,4.695654566
2019-04-17 19:49:35.673949957+02:00,4.685416559
2019-04-17 19:49:40.673949957+02:00,4.675178552
2019-04-17 19:49:45.673949957+02:00,4.664940546
2019-04-17 19:49:50.673949957+02:00,4.654702539
2019-04-17 19:49:55.673949957+02:00,4.644464532
2019-04-17 19:50:00.673949957+02:00,4.634226525
2019-04-17 19:50:05.673949957+02:00,4.623988518
2019-04-17 19:50:10.673949957+02:00,4.613750511
2019-04-17 19:50:15.673949957+02:00,4.603512505
2019-04-17 19:50:20.673949957+02:00,4.593274498
2019-04-17 19:50:25.673949957+02:00,4.583036491
2019-04-17 19:50:30.673949957+02:00,4.572798484
2019-04-17 19:50:35.673949957+02:00,4.562560477
2019-04-17 19:50:40.673949957+02:00,4.55232247
2019-04-17 19:50:45.673949957+02:00,4.542084464
2019-04-17 19:50:50.673949957+02:00,4.531846457
2019-04-17 19:50:55.673949957+02:00,4.52160845
windowSec = 20 时的预期输出:
timestamps,parameterX
2019-04-17 19:50:35.673949957+02:00,4.562560477
2019-04-17 19:50:40.673949957+02:00,4.55232247
2019-04-17 19:50:45.673949957+02:00,4.542084464
2019-04-17 19:50:50.673949957+02:00,4.531846457
2019-04-17 19:50:55.673949957+02:00,4.52160845
编辑:添加示例数据