Я использую 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
Редактировать: Добавлены данные образца