2016-10-17 22 views
2

我在我的代碼中寫了bigquery。 我想獲取更大的結果。錯誤:在作業配置中將allowLargeResults設置爲true後仍然出現錯誤?

我還設置了propertie allowLargeResult:真,但我仍然正在錯誤:響應太大返回。考慮在作業配置中將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(
    '[email protected]', 
    '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

您的結果可能太大而無法返回,並且您缺少目標表,因爲當您將allowLargeResults設置爲true時,這是必需的,因爲無法返回較大的結果,而需要寫入目標表。如果您以後想要獲取數據,則需要將表格導出到GCS,然後從GCS下載。

返回大查詢結果

通常,查詢有一個響應的最大尺寸128 MB壓縮。如果您計劃運行可能會返回更大結果的查詢,則可以在作業配置中將allowLargeResults設置爲true。

查詢返回較大的結果需要更長的時間來執行,即使結果集很小,並受到更多的限制:

  • 您必須指定一個目標表。
  • 您不能指定頂級ORDER BY,TOP或LIMIT子句。這樣做會否定使用allowLargeResults的好處,因爲不能再同時計算查詢輸出。
  • 僅當與PARTITION BY子句結合使用時,窗口函數才能返回大型查詢結果。
+0

是的,我獲取8百萬記錄..當我指定我的DESTINATION TABLE結果將去他們...所以我不得不再次查詢目的地表..是對的。 ? –

+0

您需要對錶格進行分頁,或者將表格導出爲文件 – Pentium10

+0

您可以提供如何將分頁和其他方法導出表格作爲文件的鏈接.. –

相關問題