Thanks, Leonard!

I just solved this also by replacing "ROW(" with "(" from the create view
statement.

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)



On Thu, Nov 24, 2022 at 7:37 PM Leonard Xu <xbjt...@gmail.com> wrote:

> Do not trust the line number from sql parser exception, you should use
> ROW<a BIGINT, b STRING> in your DDL when you declare a composite row type,
> try the following:
>
> 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',
> )
>
>
> Best,
> Leonard
>
>
> On Nov 25, 2022, at 11:20 AM, Dan Hill <quietgol...@gmail.com> wrote:
>
> Also, if I try to do an aggregate inside the ROW, I get an error.  I don't
> get the error if it's not wrapped in.a Row.
>
> ROW(
>     SUM(view_count)
> ) AS body,
>
>
>      Caused by: org.apache.flink.table.api.SqlParserException: SQL parse 
> failed. Encountered "SUM" at line 8, column 5.
> Was expecting one of:
>     <EOF>
>     "EXCEPT" ...
>     "FETCH" ...
>     "FROM" ...
>     "INTERSECT" ...
>     "LIMIT" ...
>     "OFFSET" ...
>     "ORDER" ...
>     "MINUS" ...
>     "UNION" ...
>     "," ...
>
>        
> org.apache.flink.table.planner.parse.CalciteParser.parse(CalciteParser.java:56)
>        
> org.apache.flink.table.planner.delegation.ParserImpl.parse(ParserImpl.java:98)
>        
> org.apache.flink.table.api.internal.TableEnvironmentImpl.executeSql(TableEnvironmentImpl.java:736)
>        
> ai.promoted.metrics.logprocessor.job.contentmetrics.ContentMetricsJob.executeSqlFromResource(ContentMetricsJob.java:148)
>        [...]
>      Caused by: org.apache.calcite.sql.parser.SqlParseException: Encountered 
> "SUM" at line 8, column 5.
> Was expecting one of:
>     <EOF>
>     "EXCEPT" ...
>     "FETCH" ...
>     "FROM" ...
>     "INTERSECT" ...
>     "LIMIT" ...
>     "OFFSET" ...
>     "ORDER" ...
>     "MINUS" ...
>     "UNION" ...
>     "," ...
>
>        
> org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.convertException(FlinkSqlParserImpl.java:462)
>        
> org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.normalizeException(FlinkSqlParserImpl.java:225)
>        
> org.apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:140)
>        org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:155)
>        org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:180)
>        [...]
>      Caused by: org.apache.flink.sql.parser.impl.ParseException: Encountered 
> "SUM" at line 8, column 5.
> Was expecting one of:
>     <EOF>
>     "EXCEPT" ...
>     "FETCH" ...
>     "FROM" ...
>     "INTERSECT" ...
>     "LIMIT" ...
>     "OFFSET" ...
>     "ORDER" ...
>     "MINUS" ...
>     "UNION" ...
>     "," ...
>
>        
> 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.SqlStmtEof(FlinkSqlParserImpl.java:3981)
>        
> org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.parseSqlStmtEof(FlinkSqlParserImpl.java:273)
>        org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:153)
>        [...]
>
>
> On Thu, Nov 24, 2022 at 6:41 PM Dan Hill <quietgol...@gmail.com> wrote:
>
>> Here's the full stack trace.
>>
>>     => org.apache.flink.table.api.SqlParserException: SQL parse failed. 
>> Encountered "." at line 1, column 336.
>> Was expecting one of:
>>     ")" ...
>>     "," ...
>>
>>        
>> org.apache.flink.table.planner.parse.CalciteParser.parse(CalciteParser.java:56)
>>        
>> org.apache.flink.table.planner.calcite.FlinkPlannerImpl$ToRelContextImpl.expandView(FlinkPlannerImpl.scala:270)
>>        
>> org.apache.calcite.plan.ViewExpanders$1.expandView(ViewExpanders.java:52)
>>        
>> org.apache.flink.table.planner.catalog.SqlCatalogViewTable.convertToRel(SqlCatalogViewTable.java:58)
>>        
>> org.apache.flink.table.planner.plan.schema.ExpandingPreparingTable.expand(ExpandingPreparingTable.java:59)
>>        [...]
>>      Caused by: org.apache.calcite.sql.parser.SqlParseException: Encountered 
>> "." at line 1, column 336.
>> Was expecting one of:
>>     ")" ...
>>     "," ...
>>
>>        
>> org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.convertException(FlinkSqlParserImpl.java:462)
>>        
>> org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.normalizeException(FlinkSqlParserImpl.java:225)
>>        
>> org.apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:140)
>>        org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:155)
>>        org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:180)
>>        [...]
>>      Caused by: org.apache.flink.sql.parser.impl.ParseException: Encountered 
>> "." at line 1, column 336.
>> 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)
>>        [...]
>>
>>
>>
>> On Wed, Nov 23, 2022 at 1:55 PM Dan Hill <quietgol...@gmail.com> wrote:
>>
>>> If I remove the "TEMPORARY VIEW" and just inline the SQL, this works
>>> fine.  This seems like a bug with temporary views.
>>>
>>> On Wed, Nov 23, 2022 at 1:38 PM Dan Hill <quietgol...@gmail.com> wrote:
>>>
>>>> Looks related to this issue.
>>>> https://lists.apache.org/thread/1sb5bos6tjv39fh0wjkvmvht0824r4my
>>>>
>>>> In my case, it doesn't seem like it's a sink issue.  Even if I change
>>>> my minicluster test to SELECT * it, it fails the same way.
>>>>
>>>> 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)
>>>>
>>>> SELECT * FROM test_content_metrics_view
>>>>
>>>>
>>>>
>>>> On Wed, Nov 23, 2022 at 1:19 PM Dan Hill <quietgol...@gmail.com> wrote:
>>>>
>>>>> I upgraded to Flink v1.16.0 and I get the same error.
>>>>>
>>>>> On Wed, Nov 23, 2022 at 9:47 AM Dan Hill <quietgol...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> For the error `Encountered "." at line 1, column 119.`, here are the
>>>>>> confusing parts:
>>>>>>
>>>>>> 1. The error happens when I executed the last part of the sql query:
>>>>>>
>>>>>> INSERT INTO `test_content_metrics`
>>>>>> SELECT * FROM `test_content_metrics_view`
>>>>>>
>>>>>> 2. Line 1 column 119 doesn't exist in that SQL statement.
>>>>>> 3. None of the SQL that I've written has a period "." in it.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Nov 23, 2022 at 8:32 AM Dan Hill <quietgol...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> I'm using Flink 1.14.4
>>>>>>>
>>>>>>> On Wed, Nov 23, 2022, 02:28 yuxia <luoyu...@alumni.sjtu.edu.cn>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi, Dan.
>>>>>>>> I'm wondering what type of error you expect. IMO, I think most
>>>>>>>> engines throw parse error in such way which tell you encounter an
>>>>>>>> unexpected token.
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>> Yuxia
>>>>>>>>
>>>>>>>> ------------------------------
>>>>>>>> *发件人: *"Dan Hill" <quietgol...@gmail.com>
>>>>>>>> *收件人: *"User" <user@flink.apache.org>
>>>>>>>> *发送时间: *星期三, 2022年 11 月 23日 下午 1:55:20
>>>>>>>> *主题: *Weird Flink SQL error
>>>>>>>>
>>>>>>>> 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