透過程式執行工作

如何使用 REST API 或用戶端程式庫,透過程式執行 BigQuery 工作:

  1. 使用由用戶端程式碼產生的唯一工作 ID 呼叫 jobs.insert 方法
  2. 定期要求工作資源並檢查狀態屬性,掌握工作完成時間
  3. 確認工作是否順利完成

所需權限

您至少要具備 bigquery.jobs.create 權限,才能執行 BigQuery 工作。以下是具有 bigquery.jobs.create 權限的預先定義 Cloud IAM 角色:

  • bigquery.user
  • bigquery.jobUser
  • bigquery.admin

如要進一步瞭解 BigQuery 中的 Cloud IAM 角色和權限,請參閱存取權控管

執行工作

如何透過程式執行工作:

  1. 呼叫 jobs.insert 方法啟動工作。呼叫 jobs.insert 方法時,請加入包含下列項目的工作資源表示法:

    • jobReference 區段的 location 屬性中指定您的位置。
    • 由用戶端程式碼產生的工作 ID。如果您省略工作 ID,伺服器會為您產生。不過,建議您在用戶端產生工作 ID,以便重試 jobs.insert 呼叫。

      例如:

      {
        "jobReference": {
          "projectId": "my_project",
          "jobId": "job_123",
          “location”: “asia-northeast1”
        },
        "configuration":
        {
          // ..
        },
      }
      

  2. 在工作資源的 configuration 區段中,加入會指定工作類型 (loadqueryextractcopy) 的子屬性。

  3. 呼叫 jobs.insert 方法後,使用工作 ID 和位置呼叫 jobs.get 檢查工作狀態,然後透過 status.state 瞭解工作狀態。status.stateDONE 時表示工作已停止執行,不過 DONE 狀態並不代表工作順利完成,只代表工作已停止執行。

  4. 確認工作是否成功。如果工作有 errorResult 屬性,即表示工作失敗。status.errorResult 屬性所含的資訊會說明工作失敗原因。未出現 status.errorResult 表示工作成功完成,但可能有一些不嚴重的錯誤,例如匯入幾個資料列時發生問題。不嚴重的錯誤會在工作的 status.errors 清單中傳回。

產生工作 ID

最佳做法是使用用戶端程式碼產生工作 ID,並於呼叫 jobs.insert 時傳送該工作 ID。如果呼叫 jobs.insert 時未指定工作 ID,BigQuery 會為您建立工作 ID,但您在呼叫傳回結果之前無法查看工作狀態。此外,您可能難以判斷工作是否順利插入。如果您使用自行產生的工作 ID,則可隨時查看工作狀態,並能針對同一個工作 ID 進行重試,確保工作確實起始一次。

工作 ID 是一個字串,可包含字母 (a-z、A-Z)、數字 (0-9)、底線 (_) 或破折號 (-),長度上限為 1,024 個字元。專案中的各工作 ID 不可重複。

產生專屬工作 ID 的常見做法是使用可人工辨讀的前置和後置字串,後者由時間戳記或 GUID 組成。例如:daily_import_job_1447971251

Python UUID 模組提供了可產生 GUID 的方法範例。 如需使用 Python uuid4() 方法搭配 jobs.insert 的範例,請參閱從 Cloud Storage 載入資料

相關資源

  • 如需啟動及輪詢查詢工作的程式碼範例,請參閱執行查詢一文。
  • 如要進一步瞭解如何建立工作資源表示法,請參閱 API 參考資料中的工作總覽頁面
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁