错误:在作业配置中将allowLargeResults设置为true后仍然出现错误?

时间:2016-10-17 13:50:27

标签: javascript node.js google-bigquery

我在代码中写了bigquery。 我想获得更大的结果。

我还设置了属性 allowLargeResult:true ,但我仍然得到错误:响应太大而无法返回。考虑在作业配置中将allowLargeResults设置为true。有关更多信息,请参阅http S://cloud.google.com/bigquery/troubleshooting-errors

这是我的Node.js代码:

var google = require('googleapis');
var bigquery = google.bigquery('v2');

var authClient = new google.auth.JWT(
    'arjun-dev@mybank-bigquery.iam.gserviceaccount.com',
    'keyA.pem',
    null, ['https://www.googleapis.com/auth/bigquery']);

var request2 = {
    projectId: 'project-bank',
    jobId:'job_LHMRhoUfM038QA4jPZHaOESI3Uo',
    startIndex: 0,
    maxResults: 100000,
    timeoutMs: 10000,
    configuration:{
        allowLargeResults: true
    },      
    auth: authClient
};

var list1 = bigquery.jobs.getQueryResults(request2, function(err, result) {
    if (err) {
        console.log("### 2 " + err);
    } else {
        console.log(result);
        res.send(result);
    }
});

请帮忙!

1 个答案:

答案 0 :(得分:1)

您的结果可能太大而无法返回并且您缺少目标表,因为当您将allowLargeResults设置为true时,这是必需的,因为您无法返回大结果,而是需要写入目标表。如果您以后想要获取数据,则需要将表导出到GCS,然后从GCS下载。

返回大型查询结果

通常,查询的最大响应大小为128 MB压缩。如果您计划运行可能返回较大结果的查询,则可以在作业配置中将allowLargeResults设置为true。

返回大结果的查询需要更长的时间才能执行,即使结果集很小,也会受到其他限制:

  • 您必须指定目的地表。
  • 您无法指定顶级ORDER BY,TOP或LIMIT子句。这样做会否定使用allowLargeResults的好处,因为无法再并行计算查询输出。
  • 仅当与PARTITION BY子句一起使用时,窗口函数才能返回大型查询结果。