2015-04-01 84 views
0

我想保存這個表使用應用程序腳本。然後我想在同一個腳本的另一個查詢中使用這個表。所以基本上我需要等第一個表創建之前,以便第二個查詢可以在谷歌大查詢項目中找到日期。使用谷歌應用腳​​本在谷歌大查詢保存表

{ 
    { 
     var projectId = 'P1'; 
     var datasetId = 'D1'; 
     var tableId = 'RR_Signup1_' + week; 
     Logger.log(tableId); 

     var job = { 
      configuration: { 
       query: { 
        query: 'query desciption', 

        destinationTable : { 
         projectId: projectId, 
         datasetId : datasetId, 
           tableId : tableId 
        } 
       } 
      } 
     }; 
    } 

    var queryResults = BigQuery.Jobs.insert(job, projectId); 
    var jobId = queryResults.jobReference.jobId; 
    Logger.log(queryResults.status); 
    var sleepTimeMs = 500; 
    while (true) { 
     Utilities.sleep(sleepTimeMs); 
     sleepTimeMs *= 2; 
     queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId); 
     if (!queryResults.jobComplete) { 
      break; 
     } 
    } 


    { 
     { 
      var projectId = 'P1'; 
      var datasetId = 'D1'; 
      var tableId = 'RR_Signup2_' + week; 
      Logger.log(tableId); 

      var job = { 
       configuration: { 
        query: { 
         query: 'select uid, Signup_time from [' + tableId1 + '] ;', 
         destinationTable : { 
          projectId: projectId, 
          datasetId : datasetId, 
          tableId : tableId 
         } 
        } 
       } 
      }; 
     } 

     var queryResults = BigQuery.Jobs.insert(job, projectId); 
     var jobId = queryResults.jobReference.jobId; 
     Logger.log(queryResults.status); 
     var sleepTimeMs = 500; 
     while (true) { 
      Utilities.sleep(sleepTimeMs); 
      sleepTimeMs *= 2; 
      queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId); 
      if (!queryResults.jobComplete) { 
       break; 
      } 
     } 

該代碼創建第一個表,然後進入無限循環並最終超時。查詢的狀態不運行到完成

+0

改進代碼格式化 – 2015-04-01 06:29:02

回答

3

改變這是我使用來檢查插入作業的狀態代碼:

job = BigQuery.Jobs.insert(job, projectId, data); 
var jobId = job.jobReference.jobId; 
var status = null; 

// Check on status of the Query Job. 
var sleepTimeMs = 1000; 
while (job.status.state != "DONE") { 
if (job.status.errorResult != null) 
    status = "fail" 
Utilities.sleep(sleepTimeMs); 
job = BigQuery.Jobs.get(projectId, jobId); 
} 

if (status != "fail") { 
    Logger.log('Load job started. JobID: ' + jobId); 
} else { 
Logger.log('Load job error. JobID: ' + jobId + "\r\nErrors: " + job.status.errors[0].message + " | " + job.status.errors[0].location); 
}