Рассмотрим понятие входного потока переплетенных записей, представляющих взаимодействие с пользователем (например, покупка продукта). Представьте, что мы получаем записи, которые указывают, что пользователь поместил товар в свою корзину. Через некоторое время они проводят проверку ... или ... оставляют свою корзину.
Таким образом, я получаю поток записей, таких как:
- Транзакция: 123, добавлен предмет A в корзину
- Транзакция: 123, добавлен товар B в корзину
- ...
- Транзакция: 123, проверенная корзина
Моя цель - вывести из конвейера агрегат транзакции. Например, учитывая вышеизложенное, я хочу вывести:
Transaction 123, Items A, B, ... Sale completed
или если выезд не производится в течение 24 часов после последнего события:
Transaction 123, Items A, B, ... Sale abandoned
... и вот где я застрял. Я чувствую, что есть какой-то способ подумать об этой истории с точки зрения конвейера Apache Beam, но я боюсь, что не знаю, с чего начать. Я думаю, что я как-то хочу, чтобы окно записей как по транзакции, так и по завершению, и отправлять партию для обработки только тогда, когда получено либо end записи транзакции, либо какой-то временной интервал с момента последней записи .