在BigQuery API中为ViewDefinition指定SQL方言

有两个用于操作BigQuery实体的API(数据集,表,视图等)……

  1. 旧的(已弃用的)API:com.google.api.services.bigquery
  2. 新API:com.google.cloud.bigquery

在旧的API中,View类有一个布尔标志,指定关联的查询是使用传统SQL还是标准SQL。 通过以下方法访问该标志:

  • getUseLegacySql
  • setUseLegacySql

新API引入了ViewDefinition类,但它没有布尔标志。

如何为ViewDefinition指定SQL方言?

它似乎确实破碎了。 我刚刚在谷歌开了一个关于它的案例(请注明它!): https : //issuetracker.google.com/issues/70662064

同时,它正在使用“bq”命令行,或者使用REST(这是我采用的方法,直到Java API被修复)。

更新于15/12/21017:

谷歌只是建议我在查询开头使用“#standardSQL”表示法。 它工作正常,我比使用REST更喜欢它。

这是一个例子:

ViewDefinition tableDefinition = ViewDefinition.newBuilder("#standardSQL\n WITH A AS (select 1 as foo) SELECT * from A").build();