Flink:在视图中使用MATCH_RECOGNIZE

问题描述

我想创建一个包含MATCH_RECOGNIZE语句的视图。这会遇到以下错误

org.apache.flink.table.api.sqlParserException: sql parse Failed. Encountered "MATCH_RECOGNIZE" at line 3,column 79.
Was expecting one of:
    <EOF>
    "EXCEPT" ...
    "FETCH" ...
    "GROUP" ...
    "HAVING" ...
    "INTERSECT" ...
    "LIMIT" ...
    "OFFSET" ...
    "ORDER" ...
    "MINUS" ...
    "TABLESAMPLE" ...
    "UNION" ...
    "WHERE" ...
    "WINDOW" ...
    "(" ...
    "NATURAL" ...
    "JOIN" ...
    "INNER" ...
    "LEFT" ...
    "RIGHT" ...
    "FULL" ...
    "CROSS" ...
    "," ...
    "OUTER" ...

如果您想重现此问题,可以例如请遵循Ververica training,该内容也涵盖了MATCH_RECOGNIZE。

初始设置后,创建以下视图:

CREATE VIEW `RideView`
AS
SELECT rideId,TIMESTAMPDIFF(MINUTE,startT,endT) AS durationMin
FROM Rides
MATCH_RECOGNIZE (
  PARTITION BY rideId
  ORDER BY rideTime
  MEASURES 
    S.rideTime AS startT,E.rideTime AS endT
  AFTER MATCH SKIP PAST LAST ROW
  PATTERN (S E)
  DEFINE
    S AS S.isstart,E AS NOT E.isstart
);

仅运行SELECT * FROM RideView就会触发问题。

这并不意外,因为Flink documentation表示

当前,MATCH_RECOGNIZE子句只能应用于追加表。此外,它也总是产生一个追加表。 (https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/match_recognize.html#sql-semantics)。

是否有任何方法可以克服此限制,并与CREATE VIEW AS <query>结合使用MATCH_RECOGNIZE?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...