セッションの操作

このドキュメントでは、セッションを作成、使用、終了、一覧表示する方法について説明します。

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

セッションを作成する

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

コンソール

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

  1. Trusted 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 ステートメント。

セッション ID はクエリの結果とともに返されます。

API

次のパラメータを使用して、jobs.query メソッドを呼び出します。

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

ここで

  • SQL_STATEMENT: セッションの最初の SQL ステートメント。
  • SESSION_LOCATION: セッションを物理的な場所にバインドします。セッション内のすべてのクエリをこの場所に制限します。省略可。

レスポンス本文は次のようになります。

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

セッションでクエリを実行する

セッションを作成したら、そのセッションでクエリを実行できます。

コンソール

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

    BigQuery に移動

  2. セッションを含むエディタのタブをクリックします。

  3. クエリをセッションに追加し、[実行] をクリックします。

bq

Cloud Shell を開き、次の bq query コマンドを入力します。

bq query \
--nouse_legacy_sql \
--session_id=SESSION_ID \
'SQL_STATEMENT'

ここで

  • SESSION_ID: 使用するセッションの ID に置き換えます。
  • SQL_STATEMENT: セッションで実行する SQL ステートメント。

クエリの結果の後にセッション ID が続きます。

Cloud Shell で多数のクエリを実行する場合は、.bigqueryrc[query] にセッション ID を追加します。これにより、セッション ID をコピーして各コマンドに貼り付ける必要がなくなります。

.bigqueryrc でのセッション ID は次のようになります。

[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

セッション ID を .bigqueryrc に追加したら、bq query コマンドから --session_id フラグを省略できます。別のセッションを使用する場合や、セッションを終了する場合は、.bigqueryrc ファイルを更新する必要があります。

API

次のパラメータを使用して、jobs.query メソッドを呼び出します。

{
  "query": "SQL_STATEMENT",
  "connectionProperties": [{
    "key": "session_id",
    "value": "SESSION_ID"
  }]
}

ここで

  • SQL_STATEMENT: セッションの最初の SQL ステートメント。
  • SESSION_ID: セッションの ID

セッションを終了する

セッションは手動で、または自動的に終了できます。終了したセッションの履歴は、終了後 20 日間確認できます。

セッションを自動的に終了する

セッションは、24 時間操作しないか、7 日が経過した時点の、どちらか早い時点で自動的に終了します。

現在のセッションを終了する

現在のセッションは、SQL ステートメントを使用して終了できます。また、Trusted Cloud コンソールでセッションを作成した場合は、コンソールで終了することもできます。

コンソール

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

    BigQuery に移動

  2. セッションを含むエディタタブを見つけて閉じます。セッションが終了します。

SQL

セッションを終了する方法は次のとおりです。

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

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    CALL BQ.ABORT_SESSION();

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

ID でセッションを終了する

ID を使用してセッションを終了できます。この方法でセッションを終了する場合は、このセッションを表示している必要はありません。

セッション ID を取得して、次のステートメントを実行します。

CALL BQ.ABORT_SESSION(SESSION_ID);

SESSION_ID は、終了するセッションの ID に置き換えます。

アクティブなセッションの ID を取得する

セッション内で作業を継続するために、セッションの参照が必要になることがあります。たとえば、Cloud Shell で作業している場合は、セッションのコマンドを実行するたびにセッション ID を指定する必要があります。

コンソール

Trusted Cloud コンソールのセッション内で新しいクエリを実行する場合は、セッション ID を指定する必要はありません。セッションを含むエディタタブで作業を継続できます。ただし、Cloud Shell または API 呼び出しでセッションを参照する場合は、コンソールで作成したセッションの ID が必要になります。

この操作を行う前に、アクティブなセッションで 1 つ以上のクエリが実行されていることを確認してください。

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

    BigQuery に移動

  2. セッションを含むエディタのタブをクリックします。

  3. [クエリ結果] で [ジョブ情報] をクリックします。

  4. [ジョブ情報] リストで、セッション ID を検索します。

    Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
    

bq

Cloud Shell 内のセッションでクエリコマンドを実行する場合は、コマンドにセッション ID を含める必要があります。セッション ID は、セッションを作成するとき、またはセッションの一覧を取得することで確認できます。

Cloud Shell でセッションを作成すると、次のようなセッション ID が返されます。

In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

API

API コマンドを使用してセッションに SQL コマンドを渡す場合は、API 呼び出しにセッション ID を含める必要があります。セッション ID は、セッションを作成するとき、またはセッションの一覧を取得することで確認できます。

API 呼び出しでセッションを作成すると、次のようなセッション ID が返されます。

sessionId: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ

アクティブなセッションと非アクティブなセッションを一覧表示する

アクティブなセッションと非アクティブなセッションのセッション ID を取得するには、次の操作を行います。

コンソール

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

    BigQuery に移動

  2. ジョブ履歴の種類を選択します。

    • 最近のジョブの情報を表示するには、[個人履歴] をクリックします。
    • プロジェクトの最近のジョブの情報を表示するには、[プロジェクト履歴] をクリックします。
  3. [セッション ID] 列で、ジョブのセッション ID を確認できます。

    ジョブ履歴のセッション ID

SQL

直近の 3 つのセッション(アクティブなセッションと終了したセッションを含む)のリストを取得するには、エディタタブで次のクエリを実行します。

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

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    SELECT
      session_id,
      MAX(creation_time) AS last_modified_time
    FROM region-us.INFORMATION_SCHEMA.VIEW
    WHERE
      session_id IS NOT NULL
      AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 20 DAY)
    GROUP BY session_id
    ORDER BY last_modified_time DESC;

    次のように置き換えます。

    • VIEW: INFORMATION_SCHEMA ビュー:
      • JOBS_BY_USER: 現在のプロジェクトで現在のユーザーによって作成されたジョブのみを返します
      • SESSIONS_BY_USER: 現在のプロジェクトで現在のユーザーによって作成されたセッションのみを返します
      • SESSIONS_BY_PROJECT: 現在のプロジェクト内のすべてのセッションを返します

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

次のような結果になります。

+-------------------------------------------------------------------------+
| session_id                                        | last_modified_time  |
+-------------------------------------------------------------------------+
| CgwKCmZhbGl1LXRlc3QQARokMGQ5YWWYzZmE0YjhkMDBm     | 2021-06-01 23:04:26 |
| CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZTczwZjA1NDc2 | 2021-05-30 22:43:02 |
| CgwKCmZhbGl1LXRlc3QQY2MzLTg4ZDEtYzVhOWZiYmM5NzZk  | 2021-04-07 22:31:21 |
+-------------------------------------------------------------------------+

セッションの履歴を表示する

セッションは、期間内の SQL アクティビティをキャプチャします。この情報は、セッションの履歴に保存されます。セッション履歴では、セッション内で発生した変更を追跡できます。ジョブの失敗または成功はセッション履歴に記録されるため、実行した操作を後で確認できます。

コンソール

Trusted Cloud コンソールでセッションの履歴を表示するには、セッション ID で個人履歴またはプロジェクト履歴をフィルタリングして、特定のセッションで実行されるすべての SQL クエリを表示します。

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

    [BigQuery] に移動

  2. [ジョブ履歴] セクションを開きます。

  3. 表示するジョブ履歴の種類を選択します。

    • 最近のジョブの情報を表示するには、[個人履歴] をクリックします。
    • プロジェクトの最近のジョブの情報を表示するには、[プロジェクト履歴] をクリックします。
  4. [ フィルタ] をクリックし、[セッション ID] を選択します。

  5. [セッション ID] フィールドでセッション ID を検索します。

    Session ID: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
    

SQL

特定のセッションの履歴データを表示するには、まずセッション ID を取得してから、次の操作を行います。

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

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    SELECT
      *
    FROM
      region-us.INFORMATION_SCHEMA.VIEW
    WHERE
      session_info.session_id = 'SESSION_ID';

    次のように置き換えます。

    • VIEW: 使用する INFORMATION_SCHEMA ビュー

      次のいずれかのビューを選択します。

      • JOBS_BY_USER: 現在のプロジェクトで現在のユーザーによって作成されたジョブのみを返します
      • SESSIONS_BY_USER: 現在のプロジェクトで現在のユーザーによって作成されたセッションのみを返します
      • SESSIONS_BY_PROJECT: 現在のプロジェクト内のすべてのセッションを返します
    • SESSION_ID: 履歴データを取得するセッションの ID

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

次の例は、セッション ID CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0 があるセッションの履歴を返します。このセッション ID は独自のものに置き換えることができます。

SELECT
  creation_time, query
FROM
  region-us.INFORMATION_SCHEMA.JOBS_BY_USER
WHERE
  session_info.session_id = 'CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0'
  AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 20 DAY);

次のような結果になります。

+---------------------+------------------------------------------------------------------------------------------+
|    creation_time    |                                          query                                           |
+---------------------+------------------------------------------------------------------------------------------+
| 2021-06-01 23:04:26 | SELECT * FROM Purchases;                                                                 |
| 2021-06-01 23:02:51 | CREATE TEMP TABLE Purchases(total INT64) AS SELECT * FROM UNNEST([10,23,3,14,55]) AS a;  |
+---------------------+------------------------------------------------------------------------------------------+

次のステップ