Я пытаюсь запустить следующий оператор SQL на Flink версии 1.10
select startAreaID, endAreaID
from (
select startAreaID, endAreaID,
ROW_NUMBER() OVER (ORDER BY cnt DESC ) as row_num
from (
select startAreaID, endAreaID, count(1) as cnt
from
(
select * from Rides
Match_Recognize
(
PARTITION BY taxiId
Order by rideTime
MEASURES
toAreaId(S.lon, S.lat) as startAreaID,
toAreaId(E.lon, E.lat) as endAreaID,
MATCH_ROWTIME() as matchTime
AFTER MATCH SKIP PAST LAST ROW
PATTERN (S E)
DEFINE
S AS S.isStart=True,
E AS E.isStart=False
)) as routes
group by startAreaID,endAreaID, tumble(matchTime, interval '30' minute)
) as wins
)
where row_num <= 10;
Я получаю сообщение об ошибке [ERROR] Не удалось выполнить инструкцию SQL. Причина: org.apache.flink.table.api.TableException: у этого вычисления нет полезной проекции и нет фильтра. Его следует удалить с помощью CalcRemoveRule.
Я хотел бы помочь определить, что не так в заявлении. Это слишком сложно? Следует ли регистрировать промежуточные результаты как просмотры?
ПРИМЕЧАНИЕ. Данные считываются из источника поездок Kafka со схемой.
rideId: BIGINT taxiId: BIGINT isStart: BOOLEAN lon: FLOAT lat: FLOAT rideTime: TIMESTAMP (3) ROWTIME psgCnt: INT