2016-12-23 99 views
3

BigQueryは、フラグ "useLegacySQL:False"を使用してJSONペイロードを送信しても、標準SQLではなく従来のSQLを使用しています。標準SQLは拒否されていますが、システムは以下のJSONでレガシーSQLを受け入れます。BigQueryのAPIで標準SQLをクエリに使用するにはどうすればよいですか?

私たちが言うところまでは、BigQuery's documentationです。 BigQueryでこのAPI呼び出しで標準SQLを使用するにはどうすればよいですか?ここで

は、私たちのBigQueryのJSONペイロードである:

{ 
    'jobReference': { 
     'jobId': '####', 
     'projectId': 'healthlabs-4' 
    }, 
    'configuration': { 
     'query': { 
      'destinationTable': { 
       'tableId': u 'our_table_name', 
       'datasetId': 'our_dataset_id', 
       'projectId': 'our_project_id' 
      }, 
      'useLegacySQL': False, 
      'priority': 'INTERACTIVE', 
      'query': u "SELECT ... FROM our_table WHERE ... GROUP BY ... ORDER BY ...", 
      'allowLargeResults': True 
     } 
    } 
} 

当社は、レガシーSQLを受け入れますが、このエラーで私たちの標準的なSQLを拒否したBigQueryからの戻りメッセージから拒否されたクエリを伝えることができます:

{'create_table_error': [{u'location': u'query', u'message': u'Encountered " "FROM" "FROM "" at line 1, column 333.\nWas expecting:\n ")" ...\n ', u'reason': u'invalidQuery'}], 'bq_table_exists': 'no'} 

答えて

3

JSONキーで大文字と小文字が区別されていることに気付きました。これは大文字の問題です。 SQLは大文字にするべきではありません。正しいキーは次のとおりです。

'useLegacySはQL':代わりにuseLegacySQLを定義する別の方法として虚偽

関連する問題