Вложенный запрос 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. Вы можете сравнить полученные планы выполнения, чтобы увидеть, есть ли какие-либо существенные различия.

Другие вопросы по тегам