セッションでクエリを実行する
このドキュメントでは、BigQuery セッションでクエリを実行する方法について説明します。このドキュメントは、セッションに関する一般的な知識があり、セッションを作成して、使用するセッションの ID を把握しているユーザーを対象としています。
以下の手順を行う前に、セッションの作成に必要な権限があることを確認してください。
セッションでクエリを実行する
セッションを作成したら、セッションにクエリを追加して実行できます。いくつかの方法があります。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
セッションを含むエディタのタブをクリックします。
クエリをセッションに追加し、[実行] をクリックします。
セッションをテストする
Google Cloud コンソールで、作成したセッションを含むエディタタブを開き、次の SQL ステートメントを実行します。
CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;
タブのコンテンツを削除またはコメントアウトして、次の SQL ステートメントを実行します。
SELECT * FROM Temperature;
次のような結果が返されたことを確認します。
+---------+
| degrees |
+---------+
| 55 |
| 14 |
| 3 |
| 0 |
| 30 |
+---------+
bq
Cloud Shell を開き、次の bq query
コマンドを入力します。
bq query \ --nouse_legacy_sql \ --session_id=SESSION_ID \ 'SQL_STATEMENT'
ここで
- SESSION_ID: 使用するセッションの ID に置き換えます。
- SQL_STATEMENT: セッションで実行する SQL ステートメント。
セッションをテストする
作成したセッションに、Temperature
という一時テーブルを作成します。セッション ID は実際の ID に置き換えます。
bq query \
--nouse_legacy_sql \
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
'CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;'
Temperature
テーブル内の値のリストを取得します。セッション ID は実際の ID に置き換えます。
bq query \
--nouse_legacy_sql \
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ \
'SELECT * FROM Temperature;'
次のような結果が返されたことを確認します。
+-------+
| total |
+-------+
| 30 |
| 0 |
| 3 |
| 14 |
| 55 |
+-------+
In session: CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
セッションを .bigqueryrc
に追加すると、時間を節約できます
Cloud Shell で多数のクエリを実行する場合は、.bigqueryrc
の [query]
にセッション ID を追加します。これにより、セッション ID をコピーして各コマンドに貼り付ける必要がなくなります。
.bigqueryrc
でのセッション ID は次のようになります。
[query]
--session_id=CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ
セッション ID を .bigqueryrc
に追加したら、次のコマンドを使用できます。
bq query \
--nouse_legacy_sql \
'SELECT * FROM Temperature;'
別のセッションを使用する場合や、セッションを終了する場合は、.bigqueryrc
を更新する必要があります。
API
定義済みのジョブリソースを使用して、jobs.insert メソッドまたは jobs.query メソッドを呼び出します。
jobs.insert
次のパラメータを使用して、jobs.insert
メソッドを呼び出します。
{ "jobReference": { "projectId": "PROJECT_ID", "jobId": "JOB_ID" }, "configuration": { "query": { "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] } } }
ここで
- PROJECT_ID: セッションを作成するプロジェクト。
- JOB_ID: セッションを作成するジョブ。
- SQL_STATEMENT: セッションの最初の SQL ステートメント。
- SESSION_ID: セッションの ID。
セッションをテストする
次のリクエスト本文を入力して、作成したセッションに Temperature
という一時テーブルを作成します。プロジェクト ID、ジョブ ID、セッション ID は実際の ID に置き換えます。
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"configuration": {
"query": {
"query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
}
}
セッション内の Temperature
テーブルの値のリストを取得するには、次のリクエスト本文を入力します。プロジェクト ID、ジョブ ID、セッション ID は実際の ID に置き換えます。
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"configuration": {
"query": {
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
}
}
両方のリクエストのレスポンス本文が次のようになっていることを確認します。
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}
jobs.query
次のパラメータを使用して、jobs.query
メソッドを呼び出します。
{ "query": "SQL_STATEMENT", "connectionProperties": [{ "key": "session_id", "value": "SESSION_ID" }] }
ここで
- SQL_STATEMENT: セッションの最初の SQL ステートメント。
- SESSION_ID: セッションの ID。
セッションをテストする
次のリクエスト本文を入力して、作成したセッションに Temperature
という一時テーブルを作成します。プロジェクト ID、ジョブ ID、セッション ID は実際の ID に置き換えます。
{
"query": "CREATE TEMP TABLE Temperature(degrees INT64) AS SELECT * FROM UNNEST([30,0,3,14,55]) AS a;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
セッション内の Temperature
テーブルの値のリストを取得するには、次のリクエスト本文を入力します。プロジェクト ID、ジョブ ID、セッション ID は実際の ID に置き換えます。
{
"query": "SELECT * FROM Temperature;",
"connectionProperties": [{
"key": "session_id",
"value": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}]
}
両方のリクエストのレスポンス本文が次のようになっていることを確認します。
{
"jobReference": {
"projectId": "myProject",
"jobId": "job_123"
},
"statistics": {
"sessionInfo": {
"sessionId": "CgwKCmZhbGl1LXRlc3QQARokMDAzYjI0OWQtZ"
}
}
}