Python 如何获取BigQuery';s API使用标准SQL进行查询?

Python 如何获取BigQuery';s API使用标准SQL进行查询?,python,sql,google-bigquery,Python,Sql,Google Bigquery,尽管我们使用标志“useLegacySQL:False”发送JSON负载,BigQuery使用的是遗留SQL而不是标准SQL。标准SQL被拒绝-但系统将接受带有下面JSON的遗留SQL 据我们所知,我们正在跟进。我们需要什么来让BigQuery在这个API调用中使用标准SQL 下面是我们的BigQuery JSON负载: { 'jobReference': { 'jobId': '####', 'projectId': 'healthlabs-4'

尽管我们使用标志“useLegacySQL:False”发送JSON负载,BigQuery使用的是遗留SQL而不是标准SQL。标准SQL被拒绝-但系统将接受带有下面JSON的遗留SQL

据我们所知,我们正在跟进。我们需要什么来让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
        }
    }
}
我们可以从BigQuery返回的消息中看出查询被拒绝,BigQuery接受我们的旧SQL,但拒绝我们的标准SQL,并出现以下错误:

{'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'} 

我们刚刚注意到JSON键是区分大小写的。这是一个资本化问题。SQL不应大写。正确的答案是:


“useLegacySql”:False

作为替代,而不是定义
useLegacySQL
,而是在查询前加上#standardSQL,如下所示:

#standardSQL
SELECT COUNT(*)
FROM `bigquery-public-data.noaa_gsod.gsod2016` 
(当浏览不能很好地处理额外API选项的库时,这种方法非常有效)