簡體   English   中英

如何知道 BigQuery 作業插入何時完成

[英]How to know when a BigQuery job insert is complete

我正在使用 BigQuery.Jobs.insert 將 csv blob 上傳到 BigQuery 表(如果重要的話,從 Google 表格電子表格),但我需要知道上傳何時完成,以便我可以運行查詢來處理它。 這是我的代碼......

  csv_blob = Utilities.newBlob(csv,"application/octet-stream");
  
  //Copy the csv to BigQuery
  job = BigQuery.Jobs.insert(job, projectId, csv_blob );

  var jobId=job.jobReference.jobId;

  //Give it a half second to complete
  var sleepTimeMs = 500;
  Utilities.sleep(sleepTimeMs);

  //see if it needs longer
  var jobstatus = job.status;
  while(jobstatus.state!="COMPLETE") {
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    jobstatus = job.status;
  }

上傳工作正常,但 job.status.state 永遠不會從“RUNNING”改變,無論我等多久。 即使在我手動驗證服務器上上傳的表之后,job.status.state 仍然是“RUNNING”。 知道工作何時完成的正確方法是什么? 謝謝

您需要使用BigQuery.Jobs.GetREST 參考)獲取作業的當前狀態,看來您只是在重新檢查從初始作業插入中收到的響應。

調用它的一個快速而骯臟的例子:

function myFunction() {
  projectID = "my-project-id"
  jobID = "some-job-id"
  location = "us-central1"

  job = BigQuery.Jobs.get(projectID, jobID, {location: location});
  console.log("result state: " + job.status.state + " end time:" + job.statistics.endTime);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM