Hi.  I'm hitting an obfuscated Flink SQL parser error.  Is there a way to
get better errors for Flink SQL?  I'm hitting it when I wrap some of the
fields on an inner Row.


*Works*

CREATE TEMPORARY VIEW `test_content_metrics_view` AS
SELECT
    DATE_FORMAT(TUMBLE_ROWTIME(rowtime, INTERVAL '1' DAY), 'yyyy-MM-dd'),
    platform_id,
    content_id
FROM content_event
GROUP BY
    platform_id,
    content_id,
    TUMBLE(rowtime, INTERVAL '1' DAY)

CREATE TABLE test_content_metrics (
   dt STRING NOT NULL,
   `platform_id` BIGINT,
   `content_id` STRING
) PARTITIONED BY (dt) WITH (
   'connector' = 'filesystem',
   'path' = 'etl/test_content_metrics',
   'format' = 'json',
)

INSERT INTO `test_content_metrics`
SELECT * FROM `test_content_metrics_view`


*Fails*

Wrapping a couple parameters in a Row causes the following exception.

     Caused by: org.apache.flink.sql.parser.impl.ParseException:
Encountered "." at line 1, column 119.
Was expecting one of:
    ")" ...
    "," ...

       
org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.generateParseException(FlinkSqlParserImpl.java:40981)
       
org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.jj_consume_token(FlinkSqlParserImpl.java:40792)
       
org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.ParenthesizedSimpleIdentifierList(FlinkSqlParserImpl.java:25220)
       
org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.Expression3(FlinkSqlParserImpl.java:19925)
       
org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.Expression2b(FlinkSqlParserImpl.java:19581)
       [...]


CREATE TEMPORARY VIEW `test_content_metrics_view` AS
SELECT
    DATE_FORMAT(TUMBLE_ROWTIME(rowtime, INTERVAL '1' DAY), 'yyyy-MM-dd'),
    ROW(
        platform_id,
        content_id
    )
FROM content_event
GROUP BY
    platform_id,
    content_id,
    TUMBLE(rowtime, INTERVAL '1' DAY)

CREATE TABLE test_content_metrics (
   dt STRING NOT NULL,
   `body` ROW(
       `platform_id` BIGINT,
       `content_id` STRING
   )
) PARTITIONED BY (dt) WITH (
   'connector' = 'filesystem',
   'path' = 'etl/test_content_metrics',
   'format' = 'json',
)

INSERT INTO `test_content_metrics`
SELECT * FROM `test_content_metrics_view`

Reply via email to