S3 Select - получить последние X секунд данных из CSV - PullRequest
0 голосов
/ 23 сентября 2019

Я использую 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

Редактировать: Добавлены данные образца

...