RE: "select as" in Flink SQL
Thank you Timo. From: Timo Walther [mailto:twal...@apache.org] Sent: Wednesday, August 31, 2016 4:28 AM To: user@flink.apache.org Subject: Re: "select as" in Flink SQL Hi Davran, Flink SQL uses a lexical policy similar to Java: The case of identifiers is preserved whether or not they are quoted; after which, identifiers are matched case-sensitively. Unlike Java, back-ticks allow identifiers to contain non-alphanumeric characters. So "select assetClass as `asset class` from tabel0" should do the trick. I will improve the documentation about this. Regards, Timo Am 30/08/16 um 21:49 schrieb Davran Muzafarov: I am try to execute simple sql like this: DataSet dataSet0 = env.fromCollection( infos0 ); tableEnv.registerDataSet( "table0", dataSet0 ); Table table = tableEnv.sql( "select assetClass as \asset class\ from tabel0" ); I am getting: org.apache.calcite.sql.parser.SqlParseException: Encountered "as \"" at line 1, column 19. Was expecting one of: "FROM" ... "," ... "AS" ... "AS" ... "AS" ... "AS" ... "AS" ... "." ... "(" ... "NOT" ... "IN" ... "BETWEEN" ... "LIKE" ... "SIMILAR" ... "=" ... ">" ... "<" ... "<=" ... ">=" ... "<>" ... "+" ... "-" ... "*" ... "/" ... "||" ... "AND" ... "OR" ... "IS" ... "MEMBER" ... "SUBMULTISET" ... "MULTISET" ... "[" ... at org.apache.calcite.sql.parser.impl.SqlParserImpl.convertException(SqlParserI mpl.java:388) at org.apache.calcite.sql.parser.impl.SqlParserImpl.normalizeException(SqlParse rImpl.java:119) at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:131) at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:156) at org.apache.flink.api.table.FlinkPlannerImpl.parse(FlinkPlannerImpl.scala:75) If I use [ insteand of , I am getting: org.apache.calcite.sql.parser.SqlParseException: Encountered "as [" at line 1, column 19. Was expecting one of: "FROM" ... "," ... "AS" ... "AS" ... "AS" ... "AS" ... "AS" ... "." ... "(" ... "NOT" ... "IN" ... "BETWEEN" ... "LIKE" ... "SIMILAR" ... "=" ... ">" ... "<" ... "<=" ... ">=" ... "<>" ... "+" ... "-" ... "*" ... "/" ... "||" ... "AND" ... "OR" ... "IS" ... "MEMBER" ... "SUBMULTISET" ... "MULTISET" ... "[" ... at org.apache.calcite.sql.parser.impl.SqlParserImpl.convertException(SqlParserI mpl.java:388) at org.apache.calcite.sql.parser.impl.SqlParserImpl.normalizeException(SqlParse rImpl.java:119) at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:131) at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:156) at org.apache.flink.api.table.FlinkPlannerImpl.parse(FlinkPlannerImpl.scala:75) at org.apache.flink.api.table.BatchTableEnvironment.sql(BatchTableEnvironment.s cala:128) How would I use aliases which contain space(s)? Thank you, Davran. -- Freundliche Grüße / Kind Regards Timo Walther Follow me: @twalthr https://www.linkedin.com/in/twalthr
"select as" in Flink SQL
I am try to execute simple sql like this: DataSet dataSet0 = env.fromCollection( infos0 ); tableEnv.registerDataSet( "table0", dataSet0 ); Table table = tableEnv.sql( "select assetClass as \"asset class\" from tabel0" ); I am getting: org.apache.calcite.sql.parser.SqlParseException: Encountered "as \"" at line 1, column 19. Was expecting one of: "FROM" ... "," ... "AS" ... "AS" ... "AS" ... "AS" ... "AS" ... "." ... "(" ... "NOT" ... "IN" ... "BETWEEN" ... "LIKE" ... "SIMILAR" ... "=" ... ">" ... "<" ... "<=" ... ">=" ... "<>" ... "+" ... "-" ... "*" ... "/" ... "||" ... "AND" ... "OR" ... "IS" ... "MEMBER" ... "SUBMULTISET" ... "MULTISET" ... "[" ... at org.apache.calcite.sql.parser.impl.SqlParserImpl.convertException(SqlParserI mpl.java:388) at org.apache.calcite.sql.parser.impl.SqlParserImpl.normalizeException(SqlParse rImpl.java:119) at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:131) at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:156) at org.apache.flink.api.table.FlinkPlannerImpl.parse(FlinkPlannerImpl.scala:75) . If I use [ insteand of ", I am getting: org.apache.calcite.sql.parser.SqlParseException: Encountered "as [" at line 1, column 19. Was expecting one of: "FROM" ... "," ... "AS" ... "AS" ... "AS" ... "AS" ... "AS" ... "." ... "(" ... "NOT" ... "IN" ... "BETWEEN" ... "LIKE" ... "SIMILAR" ... "=" ... ">" ... "<" ... "<=" ... ">=" ... "<>" ... "+" ... "-" ... "*" ... "/" ... "||" ... "AND" ... "OR" ... "IS" ... "MEMBER" ... "SUBMULTISET" ... "MULTISET" ... "[" ... at org.apache.calcite.sql.parser.impl.SqlParserImpl.convertException(SqlParserI mpl.java:388) at org.apache.calcite.sql.parser.impl.SqlParserImpl.normalizeException(SqlParse rImpl.java:119) at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:131) at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:156) at org.apache.flink.api.table.FlinkPlannerImpl.parse(FlinkPlannerImpl.scala:75) at org.apache.flink.api.table.BatchTableEnvironment.sql(BatchTableEnvironment.s cala:128) . How would I use aliases which contain space(s)? Thank you, Davran.
Is java.sql.Timestamp fully suported in Flink SQL?
I have two tables created from data sets: List infos0 = . List infos1 = . DataSet dataSet0 = env.fromCollection( infos0 ); DataSet dataSet1 = env.fromCollection( infos1 ); tableEnv.registerDataSet( "table0", dataSet0 ); tableEnv.registerDataSet( "table1", dataSet1 ); Table table = tableEnv.sql( "select * from table0 union select * from table1" ); DataSet redyData = tableEnv.toDataSet( table, Row.class ); If "MarketDataInfo" have only String, Floats or Integers fields "toDataSet" works. If MarketDataInfo has Timestamp, I am getting: Internal error: Error occurred while applying rule DataSetAggregateRule at org.apache.calcite.util.Util.newInternal(Util.java:792) at org.apache.calcite.plan.volcano.VolcanoRuleCall.transformTo(VolcanoRuleCall. java:149) at org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:225) at org.apache.calcite.rel.convert.ConverterRule.onMatch(ConverterRule.java:118) at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java :214) at org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.ja va:825) at org.apache.calcite.tools.Programs$RuleSetProgram.run(Programs.java:334) at org.apache.flink.api.table.BatchTableEnvironment.translate(BatchTableEnviron ment.scala:253) at org.apache.flink.api.java.table.BatchTableEnvironment.toDataSet(BatchTableEn vironment.scala:146) ... Caused by: org.apache.flink.api.table.TableException: Unsupported data type encountered at org.apache.flink.api.table.plan.nodes.dataset.DataSetRel$$anonfun$estimateRo wSize$2.apply(DataSetRel.scala:65) at org.apache.flink.api.table.plan.nodes.dataset.DataSetRel$$anonfun$estimateRo wSize$2.apply(DataSetRel.scala:53) at scala.collection.IndexedSeqOptimized$class.foldl(IndexedSeqOptimized.scala:5 1) at scala.collection.IndexedSeqOptimized$class.foldLeft(IndexedSeqOptimized.scal a:60) at scala.collection.mutable.ArrayBuffer.foldLeft(ArrayBuffer.scala:47) at org.apache.flink.api.table.plan.nodes.dataset.DataSetRel$class.estimateRowSi ze(DataSetRel.scala:53) at org.apache.flink.api.table.plan.nodes.dataset.DataSetAggregate.estimateRowSi ze(DataSetAggregate.scala:38) at org.apache.flink.api.table.plan.nodes.dataset.DataSetAggregate.computeSelfCo st(DataSetAggregate.scala:80) at org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows.getNonCumulative Cost(RelMdPercentageOriginalRows.java:162) at GeneratedMetadataHandler_NonCumulativeCost.getNonCumulativeCost_$(Unknown Source) at GeneratedMetadataHandler_NonCumulativeCost.getNonCumulativeCost(Unknown Source) at org.apache.calcite.rel.metadata.RelMetadataQuery.getNonCumulativeCost(RelMet adataQuery.java:258) at org.apache.calcite.plan.volcano.VolcanoPlanner.getCost(VolcanoPlanner.java:1 134) at org.apache.calcite.plan.volcano.RelSubset.propagateCostImprovements0(RelSubs et.java:336) at org.apache.calcite.plan.volcano.RelSubset.propagateCostImprovements(RelSubse t.java:319) at org.apache.calcite.plan.volcano.VolcanoPlanner.addRelToSet(VolcanoPlanner.ja va:1838) at org.apache.calcite.plan.volcano.VolcanoPlanner.registerImpl(VolcanoPlanner.j ava:1774) at org.apache.calcite.plan.volcano.VolcanoPlanner.register(VolcanoPlanner.java: 1038) at org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlann er.java:1058) at org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlann er.java:1950) at org.apache.calcite.plan.volcano.VolcanoRuleCall.transformTo(VolcanoRuleCall. java:137) ... 35 more Am I missing something? Thank you, Davran.
Flink and SQL
Hi, I could not find the way to reuse table names. tableEnv = TableEnvironment.getTableEnvironment(env); . Table table = tableEnv.registerTable( "table1", table ); Table table = tableEnv.sql( "select * from table1" ); . . Is it possible to "unregister" table or replace it with another one? Thank you.