セッションを作成する

このドキュメントでは、BigQuery でセッションを作成する方法について説明します。BigQuery セッションに精通しているユーザーを対象としています。

セッションを作成する

SQL アクティビティのグループをキャプチャする場合は、BigQuery セッションを作成します。セッションを作成したら、セッションが終了するまで、セッションでインタラクティブ クエリを実行できます。セッション中のすべてのクエリは、セッションが作成された場所で実行(処理)されます。

以下の手順を行う前に、セッションの作成に必要な権限があることを確認してください。

コンソール

Google Cloud コンソールでは、各セッションはエディタタブに割り当てられます。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. [クエリを新規作成] をクリックします。新しいエディタタブが開きます。

  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"
    }
  }
}

次のステップ