-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Description
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:
p.apply("Read rows will succeed", BigQueryIO.readTableRows().fromQuery(query.toString()).usingStandardSql());
Fails with a 400:
p.apply("Read rows will fail", BigQueryIO.readTableRows().usingStandardSql().fromQuery(query.toString()));
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)](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:
Imported from Jira BEAM-4363. Original Jira may contain additional context.
Reported by: pbrumblay.