Подходит ли функция Match_Recognize Flink для захвата этого типа шаблона?

Я пытаюсь поймать события по схеме, описанной ниже:

  • Начальное событие = событие SalePackageA (Покупатель A, приобретающий PackageA)
  • 2-е событие = событие PackageUsage (клиент A использует PackageA)
  • 3-е событие = событие PackageUsage (клиент A использует PackageA)
  • 4-е событие = событие PackageUsage (клиент A использует PackageA)
  • ...
  • N-е событие = событие PackageUsage (клиент A использует PackageA)
  • Stop event = событие SalePackageA (клиент A снова покупает PackageA)

То есть: клиент приобрел какой-то пакет данных с балансом 2048 МБ, затем клиент его использует - я получаю использованные байты в каждом событии PackageUsage.

Итак, match_recognize должен кричать при каждом событии PackageUsage с некоторой логикой агрегирования:

      ( SalePackageA.Initial_Balance_Bytes - sum(present_event__PackageUsage.usage_bytes + sum(all_previous__PackageUsages.usage_bytes)) ) as Remaining_Balance

И когда тот же Клиент покупает тот же Пакет, этот «поток» должен быть прерван, и новый «поток» начнется заново.

Подходит ли CEP Flink для описанного случая? Есть идеи / предложения, как реализовать это с помощью CEP?

1 ответ

MATCH_RECOGNIZE и CEP не подходят для ваших требований (потому что вам нужно сообщать об остатке после каждого события использования).

Я предлагаю реализовать это с помощью ключевой функции процесса.

Другие вопросы по тегам