The exception logs tells that your table “myFlinkTable” does not contain a 
column/field named “t”. Could be something  wrong  about your table 
registration.  It would be helpful to show us your table registration code,  
like:

// register a Table
tableEnv.registerTable("table1", ...)            // or
tableEnv.registerTableSource("table2", ...);     // or
tableEnv.registerExternalCatalog("extCat", ...);

   

LiYue
http://tig.jd <http://tig.jd/>.com
liyue2...@gmail.com



> 在 2018年4月3日,上午11:23,韩宁宁 <453673...@qq.com> 写道:
> 
> Deal All
>       I have a question about subquery of flink sql.
>       My sql like this:
>       select 
>         user,
>         count(product),
>         TUMBLE_START(t, INTERVAL '60' SECOND) as wStart,
>         TUMBLE_END(t, INTERVAL '60' SECOND) as wEnd
>     from (
>         select 
>             distinct(user),
>             product,
>             amount,
>             actionTime
>         from myFlinkTable
>     ) GROUP BY user,TUMBLE(t, INTERVAL '60' SECOND) 
> 
>     The typeinfo of field like this:
>     TypeInformation<Row> typeInfo = Types.ROW(
>                 new String[] {"user","product","amount","actionTime"},
>                 new TypeInformation<?>[] {
>                         BasicTypeInfo.STRING_TYPE_INFO,
>                         BasicTypeInfo.INT_TYPE_INFO,
>                         BasicTypeInfo.INT_TYPE_INFO,
>                         BasicTypeInfo.LONG_TYPE_INFO,
>                 }
>         );
> 
>     My datasource implements DefinedRowtimeAttribute,as follows:
>     @Override
>     public String getRowtimeAttribute() {
>         return "t";
>     }
> 
>     I run the test code,and get the following error.
>     Exception in thread "main" 
> org.apache.flink.table.api.ValidationException: SQL validation failed. At 
> line 13, column 24: Column 't' not found in any table
>       at 
> org.apache.flink.table.calcite.FlinkPlannerImpl.validate(FlinkPlannerImpl.scala:92)
>       at 
> org.apache.flink.table.api.TableEnvironment.sql(TableEnvironment.scala:499)
>       at com.didi.flink.sql.Main.main(Main.java:103)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:498)
>       at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
> Caused by: org.apache.calcite.runtime.CalciteContextException: At line 13, 
> column 24: Column 't' not found in any table
>       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>       at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>       at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>       at 
> org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)
>       at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:804)
>       at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:789)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4363)
>       at 
> org.apache.calcite.sql.validate.DelegatingScope.fullyQualify(DelegatingScope.java:258)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.visit(SqlValidatorImpl.java:5018)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.visit(SqlValidatorImpl.java:5000)
>       at org.apache.calcite.sql.SqlIdentifier.accept(SqlIdentifier.java:344)
>       at 
> org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.visitChild(SqlShuttle.java:134)
>       at 
> org.apache.calcite.sql.util.SqlShuttle$CallCopyingArgHandler.visitChild(SqlShuttle.java:101)
>       at org.apache.calcite.sql.SqlOperator.acceptCall(SqlOperator.java:859)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.visitScoped(SqlValidatorImpl.java:5053)
>       at 
> org.apache.calcite.sql.validate.SqlScopedShuttle.visit(SqlScopedShuttle.java:50)
>       at 
> org.apache.calcite.sql.validate.SqlScopedShuttle.visit(SqlScopedShuttle.java:33)
>       at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:137)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.expand(SqlValidatorImpl.java:4624)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateGroupClause(SqlValidatorImpl.java:3529)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3172)
>       at 
> org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60)
>       at 
> org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:931)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:912)
>       at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:220)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:887)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:597)
>       at 
> org.apache.flink.table.calcite.FlinkPlannerImpl.validate(FlinkPlannerImpl.scala:88)
>       ... 7 more
> Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Column 't' 
> not found in any table
>       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>       at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>       at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>       at 
> org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)
>       at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:572)
>       ... 32 more
> ==========================================
> How to solve this problem?
> 
> Best wishes
> Thanks
> 
> 
> 

Reply via email to