Мое требование - создать триггер на основе двух событий (EVT_A и EVT_B независимо от порядка). Вот ожидание
1. EVT_A arrived. --> No action
2. EVT_B arrived --> Should Trigger
3. EVT_B arrived --> should Trigger since A was received previously (o/p should include A and current B)
4. EVT_A arrived --> should Trigger since B was received previously (o/p should include current A and last B)
5. EVT_A arrived --> should Trigger since B was received previously (o/p should include current A and last B)
Я пробовал подписаться, но безуспешно.
SELECT E.*
From MyEvents
MATCH_RECOGNIZE (
ORDER BY procTime
MEASURES ARRAY[
Event(A.id, A.name, A.date),
Event(B.id, B.name, B.date)
] AS Events
AFTER MATCH SKIP TO NEXT ROW
PATTERN (A C* B)
DEFINE
A AS name in ('EVT_A', 'EVT_B'),
B AS name in ('EVT_A', 'EVT_B') AND B.name <> A.name,
C AS name not in ('EVT_A', 'EVT_B')
) AS E;
Я также пробовал с ПОСЛЕ МАТЧА ПЕРЕЙТИ К ПЕРВОМУ A. Но это тоже одно из исключений. Любые предложения, как я могу добиться этого с помощью Flink SQL CEP или любым другим способом в Flink.