尽管我们使用“useLegacySQL:False”标志发送了一个JSON负载,但BigQuery使用的是传统SQL而不是标准SQL。标准SQL被拒绝了-但是系统将接受带有以下JSON的遗留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
}
}
}
从BigQuery返回的消息中可以看出查询被拒绝了,BigQuery接受了我们的旧SQL,但拒绝了我们的标准SQL,错误如下:
^{pr2}$
我们刚刚注意到JSON键是区分大小写的。这是一个资本化问题。SQL不应大写。正确的键是:
“useLegacySql”:错误
另一种方法是,不要定义
useLegacySQL
,而是在查询前面加上#standardSQL,如下所示:(当浏览那些不能很好地处理额外的API选项的库时,这种方法非常有效)
https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql#sql-prefix
相关问题 更多 >
编程相关推荐