Apache flink flink SQL中不支持嵌套匹配查询?

Apache flink flink SQL中不支持嵌套匹配查询?,apache-flink,flink-streaming,flink-sql,match-recognize,Apache Flink,Flink Streaming,Flink Sql,Match Recognize,我正在使用flink 1.11并尝试嵌套查询,其中match_Recognite在其中,如下所示: select * from events where id = (SELECT * FROM events MATCH_RECOGNIZE (PARTITION BY org_id ORDER BY proctime MEASURES A.id AS startId ONE ROW PER MATCH PATTERN (A C* B) DEFINE A AS A.tag = 'tag1', C A

我正在使用flink 1.11并尝试嵌套查询,其中match_Recognite在其中,如下所示:

select * from events where id = (SELECT * FROM events MATCH_RECOGNIZE (PARTITION BY org_id ORDER BY proctime MEASURES A.id AS startId ONE ROW PER MATCH PATTERN (A C* B) DEFINE A AS A.tag = 'tag1', C AS C.tag <> 'tag2', B AS B.tag = 'tag2'));
我得到一个错误:org.apache.calcite.sql.validate.SqlValidatorException:未找到表“A”


这是否不受支持?如果没有,还有什么选择?

我可以通过这样做来实现:

Table events=tableEnv.fromDataStreaminput, $sensorId, $ts.rowtime, $kwh; tableEnv.createTemporaryViewevents,事件; Table matches=tableEnv.sqlQuery 选择id+ 从事件中+ 相配+ 传感器ID分区+ ts订购+ 措施+ 此步骤将传感器id作为id+ 比赛结束后跳到下一行+ 在下一个步骤中设置此步骤的模式+ 定义+ 这一步是正确的+ 下一步是正确的+ ; tablenv.createTemporaryViewmmm,匹配项; Table results=tableEnv.sqlQuery 从事件中选择*,其中从mmm中选择*中的events.sensorId; tableEnv .toAppendStreamresults,Row.class 打印 出于某种原因,如果不定义视图,我就无法让它工作。我不断地犯方解石错误


我猜您是在试图避免在MATCH_RECOGNIZE的MEASURES子句中枚举A中的所有列。您可能希望比较结果执行计划,看看是否有任何显著差异。

这两种方法都不起作用。在第一个案例中,我得到了与问题中提到的相同的例外。在第二个例子中,我得到了一个新的异常:org.apache.calcite.sql.validate.SqlValidatorException:Table'm'not found你能帮我举一个具体的例子吗?请参阅我的更新答案以获得一个具体的例子。请注意,这可能会阻止你对Flink 1.11.Hi David使用这种方法,谢谢你的解释。这种方法对我有效。