对bigquery.jobs.getQueryResults的API调用失败,并显示以下错误:找不到:作业

时间:2020-09-11 07:32:23

标签: google-apps-script google-bigquery

我正在尝试通过Apps脚本从BigQuery中提取地理数据,但是我的脚本因上述错误消息而失败。

function runQuery() {
  // Replace this value with the project ID listed in the Google
  // Cloud Platform project.
  var projectId = '111111';
  
  var request = {
    useLegacySql: false,
    query: 'select geom, POA_CODE16, POA_NAME16, AREASQKM16 from `my-bigquery-project.my-datasource.my-table` WHERE POA_CODE16 >= 2000 AND POA_CODE16 < 3000;'
  };
  
  var queryResults = BigQuery.Jobs.query(request, projectId);
  var jobId = queryResults.jobReference.jobId;
  
  Logger.log('Initial jobId: %s', jobId);
    
  // Check on status of the Query Job.
  var sleepTimeMs = 500;
  while (!queryResults.jobComplete) {
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    Logger.log('Not complete jobId: %s', jobId);
    try {
      queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId);
    } catch(e) {
      Logger.log(e);
    }
  }
  
  // Get all the rows of results.
  var rows = queryResults.rows;
  while (queryResults.pageToken) {
    
    Logger.log('Page token jobId: %s', jobId);
    
    queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, {
      pageToken: queryResults.pageToken
    });
    rows = rows.concat(queryResults.rows);

  }
  
  Logger.log(rows.length);
} 

脚本在这里失败:

queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, {
      pageToken: queryResults.pageToken
    }); 

有错误

GoogleJsonResponseException: API call to bigquery.jobs.getQueryResults failed with error: Not found: Job my-bigquery-project:job_##RJYm1kUsbMif3N6Dpa7t-mkC## (line 34, file "tests")

日志显示:

Initial jobId: job_##RJYm1kUsbMif3N6Dpa7t-mkC##
Page token jobId: job_##RJYm1kUsbMif3N6Dpa7t-mkC##

我感觉可能是返回的行的大小-多边形很大-这是问题所在,但错误消息没有提供任何线索,我不确定如何/在其他地方调试它

该查询在BigQuery上运行良好。

1 个答案:

答案 0 :(得分:0)

您可能需要为 timeoutMs 设置一个高于 default 的 10000 的值。

相关问题