Till Rohrmann created FLINK-4240: ------------------------------------ Summary: Cannot use expressions in Scala Table API's groupBy method Key: FLINK-4240 URL: https://issues.apache.org/jira/browse/FLINK-4240 Project: Flink Issue Type: Bug Components: Table API & SQL Affects Versions: 1.1.0 Reporter: Till Rohrmann
The following code fails even though it should be supported according to the documentation: {code} package com.dataartisans.batch import org.apache.flink.api.scala._ import org.apache.flink.api.scala.table._ import org.apache.flink.api.table.{Row, TableConfig, TableEnvironment} object ScalaSimpleTableAPIJob { def main(args: Array[String]): Unit = { val env = ExecutionEnvironment.getExecutionEnvironment val tblConfig = new TableConfig val tblEnv = TableEnvironment.getTableEnvironment(env, tblConfig) val input1Seq = 0 until 10 map {x => (x, ('a' + x).toChar.toString, x.toDouble)} val inputDS1 = env.fromCollection(input1Seq) val input1 = tblEnv.fromDataSet(inputDS1, 'a, 'b, 'c) // fails with org.apache.flink.api.table.ValidationException: cannot resolve [a] given input [('a % 4)] val tblResult = input1.groupBy('a % 4).select('a); val result = tblEnv.toDataSet[Row](tblResult) result.print() } } {code} {code} Exception in thread "main" org.apache.flink.api.table.ValidationException: cannot resolve [a] given input [('a % 4)] at org.apache.flink.api.table.plan.logical.LogicalNode.failValidation(LogicalNode.scala:143) at org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$validate$1.applyOrElse(LogicalNode.scala:87) at org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$validate$1.applyOrElse(LogicalNode.scala:84) at org.apache.flink.api.table.trees.TreeNode.postOrderTransform(TreeNode.scala:72) at org.apache.flink.api.table.plan.logical.LogicalNode.org$apache$flink$api$table$plan$logical$LogicalNode$$expressionPostOrderTransform$1(LogicalNode.scala:120) at org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$7$$anonfun$apply$1.apply(LogicalNode.scala:133) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) at scala.collection.AbstractTraversable.map(Traversable.scala:105) at org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$7.apply(LogicalNode.scala:132) at scala.collection.Iterator$$anon$11.next(Iterator.scala:328) at scala.collection.Iterator$class.foreach(Iterator.scala:727) at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48) at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103) at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47) at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273) at scala.collection.AbstractIterator.to(Iterator.scala:1157) at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265) at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157) at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252) at scala.collection.AbstractIterator.toArray(Iterator.scala:1157) at org.apache.flink.api.table.plan.logical.LogicalNode.expressionPostOrderTransform(LogicalNode.scala:137) at org.apache.flink.api.table.plan.logical.LogicalNode.validate(LogicalNode.scala:84) at org.apache.flink.api.table.plan.logical.Project.validate(operators.scala:57) at org.apache.flink.api.table.GroupedTable.select(table.scala:631) at com.dataartisans.batch.ScalaSimpleTableAPIJob$.main(ScalaSimpleTableAPIJob.scala:26) at com.dataartisans.batch.ScalaSimpleTableAPIJob.main(ScalaSimpleTableAPIJob.scala) 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:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)