#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, он захватывает только текущее значение, поскольку не может видеть следующие строки.