Вложенный запрос match_recognize не поддерживается в flink SQL?
Я использую flink 1.11 и пробую вложенный запрос, где match_recognize находится внутри, как показано ниже:
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: Table 'A' not found
Это не поддерживается? Если нет, то какая альтернатива?
1 ответ
Результатом подзапроса match_recognize является таблица, поэтому вам нужно будет сделать что-то вроде
SELECT * FROM events WHERE id IN (...)
или же
SELECT e.* FROM events e JOIN (...) AS m ON e.id = m.id
.
Я предполагаю, что вы пытаетесь избежать перечисления всех столбцов из A в предложении MEASURES MATCH_RECOGNIZE. Вы можете сравнить полученные планы выполнения, чтобы увидеть, есть ли какие-либо существенные различия.