Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-17022

Flink SQL ROW_NUMBER() Exception: TableException: This calc has no useful projection and no filter. It should be removed by CalcRemoveRule.

    XMLWordPrintableJSON

Details

    Description

      exception:

      //代码占位符
      Caused by: org.apache.flink.table.api.TableException: This calc has no useful projection and no filter. It should be removed by CalcRemoveRule.
      	at org.apache.flink.table.planner.codegen.CalcCodeGenerator$.generateProcessCode(CalcCodeGenerator.scala:176)
      	at org.apache.flink.table.planner.codegen.CalcCodeGenerator$.generateCalcOperator(CalcCodeGenerator.scala:49)
      	at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecCalc.translateToPlanInternal(StreamExecCalc.scala:77)
      	at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecCalc.translateToPlanInternal(StreamExecCalc.scala:39)
      	at org.apache.flink.table.planner.plan.nodes.exec.ExecNode$class.translateToPlan(ExecNode.scala:58)
      	at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecCalcBase.translateToPlan(StreamExecCalcBase.scala:38)
      	at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecExchange.translateToPlanInternal(StreamExecExchange.scala:84)
      	at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecExchange.translateToPlanInternal(StreamExecExchange.scala:44)
      	at org.apache.flink.table.planner.plan.nodes.exec.ExecNode$class.translateToPlan(ExecNode.scala:58)
      	at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecExchange.translateToPlan(StreamExecExchange.scala:44)
      	at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecRank.translateToPlanInternal(StreamExecRank.scala:209)
      	at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecRank.translateToPlanInternal(StreamExecRank.scala:53)
      	at org.apache.flink.table.planner.plan.nodes.exec.ExecNode$class.translateToPlan(ExecNode.scala:58)
      	at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecRank.translateToPlan(StreamExecRank.scala:53)
      	at org.apache.flink.table.planner.delegation.StreamPlanner$$anonfun$translateToPlan$1.apply(StreamPlanner.scala:60)
      	at org.apache.flink.table.planner.delegation.StreamPlanner$$anonfun$translateToPlan$1.apply(StreamPlanner.scala:59)
      	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
      	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
      	at scala.collection.Iterator$class.foreach(Iterator.scala:891)
      	at scala.collection.AbstractIterator.foreach(Iterator.scala:1334)
      	at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
      	at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
      	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
      	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
      	at org.apache.flink.table.planner.delegation.StreamPlanner.translateToPlan(StreamPlanner.scala:59)
      	at org.apache.flink.table.planner.delegation.StreamPlanner.explain(StreamPlanner.scala:81)
      	at org.apache.flink.table.api.internal.TableEnvironmentImpl.explain(TableEnvironmentImpl.java:447)
      	at org.apache.flink.table.api.internal.TableEnvironmentImpl.explain(TableEnvironmentImpl.java:442)
      	at com.ververica.flink.table.gateway.operation.ExplainOperation.lambda$execute$0(ExplainOperation.java:53)
      	at com.ververica.flink.table.gateway.context.ExecutionContext.wrapClassLoader(ExecutionContext.java:230)
      	at com.ververica.flink.table.gateway.operation.ExplainOperation.execute(ExplainOperation.java:53)
      	... 45 more
      

      sql:

      //代码占位符
      create view v1 as
      select a,  b, count(1) as c 
      from test_kafka_t 
      group by a,b,HOP(ts, INTERVAL '10' SECOND, INTERVAL '1' MINUTE);
      
      explain
      select * from (
      SELECT *,  row_number() over (PARTITION BY a ORDER BY c) AS rn
      FROM v1
      -- where 1=1  -- this can fix
      )
      where rn <= 5
      

      kafka topic:

      //代码占位符
      CREATE TABLE test_kafka_t (
        a varchar,
        b int,
        ts as PROCTIME()
      ) WITH (
        'connector.type' = 'kafka',       
        'connector.version' = '0.11',
        'connector.topic' = 'xx',
        'connector.properties.zookeeper.connect' = 'xx',
        'connector.properties.bootstrap.servers' = 'xx',
        'connector.properties.group.id' = 'testGroup',
        'connector.startup-mode' = 'latest-offset',
        'format.type' = 'json'
      )
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            xingoo xingoo
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated: