Peter Brumblay created BEAM-4363: ------------------------------------ Summary: Method chaining order matters for BigQueryIO.readTableRows() and usingStandardSql() Key: BEAM-4363 URL: https://issues.apache.org/jira/browse/BEAM-4363 Project: Beam Issue Type: Bug Components: io-java-gcp Affects Versions: 2.4.0 Reporter: Peter Brumblay Assignee: Chamikara Jayalath
Depending on the order of the method calls you use in the fluent API for BigQueryIO.readTableRows() you'll either successfully execute a query requiring standard SQL or get an error indicating that you tried something incompatible with legacy SQL. Works: {code:java} p.apply("Read rows will succeed", BigQueryIO.readTableRows().fromQuery(query.toString()).usingStandardSql()); {code} Fails with a 400: {code:java} p.apply("Read rows will fail", BigQueryIO.readTableRows().usingStandardSql().fromQuery(query.toString())); {code} Error message (edited to anonymize): "Invalid table name: `<project>:<dataset>.<table>`\n[Try using standard SQL ([https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql)].] I wouldn't expect a fluent API to care about the ordering of the clauses. Even if a specific order were required, I would expect a more informative error message with a link to a grammar ... See here for a complete example: https://github.com/pbrumblay/bigqueryioproblems/blob/master/src/main/java/com/fearlesstg/UsingStandardSQLOrderMatters.java -- This message was sent by Atlassian JIRA (v7.6.3#76005)