Потоковый SQL - Как получить последнюю запись в простом агрегирующем окне - PullRequest
3 голосов
/ 14 марта 2019

Среда - AWS Kinesis Analytics (но я могу взять любую предложенную концепцию потокового SQL и применить ее к своей среде)

У меня есть такие исходные данные, которые непрерывно передаются в:

epoc_timestamp  baic_id station floor       ap
1552314547      alex    bloor   platform    be-ye12
1552314548      alex    bloor   platform    be-ye12
1552314549      alex    bloor   platform    ye-ab70
1552314550      alex    bloor   platform    ye-ab70
1552314551      alex    bloor   platform    ye-ab70
1552314555      alex    bloor   platform    ye-ab70
1552314559      alex    bloor   platform    ge-ye30

Я ищу, чтобы последний "ap" был записан, разделен по baic_id (есть несколько, а не просто "alex", как показано выше) и сгруппирован в 10-секундные окна.Таким образом, результат из приведенных выше данных будет выглядеть следующим образом:

epoc_timestamp  baic_id station floor       ap
1552314540      alex    bloor   platform    ye-ab70
1552314550      alex    bloor   platform    ge-ye30

Примечание : хотя это довольно просто в стандартном SQL с чем-то вроде

LAST_VALUE(ap) OVER (PARTITION by baic_id ORDER by epoc_timestamp RANGE МЕЖДУ НЕПРЕРЫВНЫМ ПРЕДВАРИТЕЛЬНЫМ И НЕПРЕРЫВНЫМ СЛЕДУЮЩИМ)

Я использую потоковый SQL, что означает отсутствие «конца» для потока, и Kinesis Analytics не разрешитИспользование СЛЕДУЮЩЕГО СЛЕДУЮЩЕГО.Поэтому, если я использую LAST_VALUE, он получает только значение CURRENT, поскольку не может видеть следующие строки.

...