建立工作階段

本文件說明如何在 BigQuery 中建立工作階段。本文章適用於熟悉 BigQuery 工作階段的使用者。

建立工作階段

如要擷取一組 SQL 活動,請建立 BigQuery 工作階段。建立工作階段後,您可以在工作階段中執行互動式查詢,直到工作階段終止為止。工作階段中的所有查詢都會在建立工作階段的位置執行 (處理)。

完成這些步驟前,請確認您具備建立工作階段的必要權限

主控台

在 Google Cloud 控制台中,每個工作階段都會指派至編輯器分頁。

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 按一下「Compose new query」(編寫新查詢) 。系統會開啟新的編輯器分頁。

  3. 依序按一下「更多」>「查詢設定」。系統會顯示「查詢設定」面板。

  4. 在「工作階段管理」專區中,按一下「使用工作階段模式」,啟用工作階段模式。

  5. 在「其他設定」>「資料位置」中選取位置。建立工作階段後,工作階段中的所有查詢都會受限於這個位置,且無法變更位置。

  6. 按一下 [儲存]

  7. 在編輯器分頁中編寫查詢並執行。系統會在執行這項第一個查詢後建立新的工作階段。

bq

開啟 Cloud Shell,然後輸入下列 bq query 指令:

bq query \
--nouse_legacy_sql \
--create_session
[--location 'SESSION_LOCATION'] \
'SQL_STATEMENT'

其中:

  • SESSION_LOCATION:將工作階段繫結至實體位置。將工作階段中的所有查詢限制在這個位置。選填。
  • SQL_STATEMENT:工作階段的第一個 SQL 陳述式。

測試工作階段

使用以下指令建立工作階段和暫存資料表:

bq query \
  --nouse_legacy_sql \
  --create_session \
  --location 'asia-northeast1' \
  'SELECT 1;'

確認產生的結果類似下列內容:

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

API

使用已定義的工作資源呼叫 jobs.insert 方法或 jobs.query 方法。

jobs.insert

使用下列參數呼叫 jobs.insert 方法:

{
  "jobReference": {
    "projectId": "PROJECT_ID",
    "jobId": "JOB_ID",
    ["location": "SESSION_LOCATION"]
  },
  "configuration": {
    "query": {
      "query": "SQL_STATEMENT",
       "createSession": {
         "value": true
       }
    }
  }
}

其中:

  • PROJECT_ID:要建立工作階段的專案。
  • JOB_ID:要建立工作階段的工作。
  • SESSION_LOCATION:將工作階段繫結至實體位置。將工作階段中的所有查詢限制在這個位置。選填。
  • SQL_STATEMENT:工作階段的第一個 SQL 陳述式。

測試工作階段

輸入以下要求主體。將 myProjectjob_123 替換為專案 ID 和工作 ID。

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "configuration": {
    "query": {
      "query": "SELECT 1;",
      "createSession": {
          "value": true
      }
    }
  }
}

請確認回應主體類似以下內容:

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "statistics": {
    "sessionInfo": {
      "sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
    }
  }
}

jobs.query

使用下列參數呼叫 jobs.query 方法:

{
  "query": "SQL_STATEMENT",
  "createSession": true,
  ["location": "SESSION_LOCATION"]
}

其中:

  • SQL_STATEMENT:工作階段的第一個 SQL 陳述式。
  • SESSION_LOCATION:將工作階段繫結至實體位置。將工作階段中的所有查詢限制在這個位置。選填。

測試工作階段

輸入以下要求主體。將 myProjectjob_123 替換為專案 ID 和工作 ID。

{
  "query": "SELECT 1;",
  "createSession": true
}

請確認回應主體類似以下內容:

{
  "jobReference": {
    "projectId": "myProject",
    "jobId": "job_123"
  },
  "statistics": {
    "sessionInfo": {
      "sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
    }
  }
}

後續步驟