2017-10-18 4 views
1

Il existe deux API pour manipuler des entités BigQuery (jeux de données, tables, vues, etc.) ...dialecte SQL pour Spécifiez ViewDefinition API BigQuery

  1. L'ancien (dépréciée) API: com.google.api .services.bigquery
  2. la nouvelle API: com.google.cloud.bigquery

Dans l'ancienne API, la classe View a un drapeau booléen qui indique si la requête associée utilise ou héritage SQL standard. Ce drapeau est accessible via les méthodes suivantes:

  • getUseLegacySql
  • setUseLegacySql

La nouvelle API introduit la classe ViewDefinition, mais il n'a pas le drapeau booléen.

Comment spécifier le dialecte SQL pour une ViewDefinition?

Répondre

1

Il semble que c'est effectivement cassé. Je viens d'ouvrir un dossier dans Google à ce sujet (s'il vous plaît,-les!): https://issuetracker.google.com/issues/70662064

Pendant ce temps, il travaille avec la ligne de commande « bq », ou REST (qui est l'approche que je pris, jusqu'à ce que l'API Java est corrigée).

Mise à jour sur 15/12/21017:

Google vient m'a conseillé d'utiliser la mention « #standardSQL » au début de la requête. Cela fonctionne bien et je le préfère que d'utiliser REST.

Voici un exemple:

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