Потоковый SQL- Как получить последнюю запись в простом агрегировании окон акробатики

#sql #streaming #aggregation #amazon-kinesis

#sql #потоковая передача #агрегирование #amazon-kinesis

Вопрос:

Среда — 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
  

Я хочу записать ПОСЛЕДНЮЮ «точку доступа», разделенную по 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) ПРЕВЫШЕНО (РАЗДЕЛЕНИЕ По ПОРЯДКУ baic_id по ДИАПАЗОНУ epoc_timestamp МЕЖДУ НЕОГРАНИЧЕННЫМ ПРЕДЫДУЩИМ И НЕОГРАНИЧЕННЫМ ПОСЛЕДУЮЩИМ)

Я использую streaming SQL, что означает, что у потока нет «конца», а Kinesis Analytics не позволит использовать НЕОГРАНИЧЕННОЕ СЛЕДОВАНИЕ. Поэтому, если я использую LAST_VALUE, он захватывает только текущее значение, поскольку не может видеть следующие строки.