如何让BigQuery的API使用标准SQL进行查询?

2024-07-03 07:51:22 发布

您现在位置:Python中文网/ 问答频道 /正文

尽管我们使用“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}$

Tags: idjsonfalsesql标准by标志系统
2条回答

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

“useLegacySql”:错误

另一种方法是,不要定义useLegacySQL,而是在查询前面加上#standardSQL,如下所示:

#standardSQL
SELECT COUNT(*)
FROM `bigquery-public-data.noaa_gsod.gsod2016` 

(当浏览那些不能很好地处理额外的API选项的库时,这种方法非常有效)

https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql#sql-prefix

相关问题 更多 >