BigQuery ジョブを送信した後、ジョブデータの表示、ジョブの一覧表示、ジョブのキャンセル、ジョブの再実行ができます。
ジョブが送信されると、次の 3 つの状態のいずれかになります。
PENDING
- スケジュール済みRUNNING
DONE
-SUCCESS
またはFAILURE
(ジョブがエラーを伴って完了した場合)として報告
ジョブデータの表示
GCP Console、従来のウェブ UI、CLI、および API を使用して、ジョブデータおよびメタデータを表示できます。このデータには、ジョブタイプ、ジョブの状態、ジョブを実行したユーザーなどの詳細情報が含まれます。
必要な権限
ジョブデータとメタデータを取得するユーザーには、少なくとも bigquery.jobs.get
権限が付与されている必要があります。bigquery.jobs.get
権限は、次の事前定義された Cloud IAM 役割に含まれています。
bigquery.admin
アカウントに bigquery.admin
役割を付与すると、そのユーザーは誰がジョブを送信したかに関係なく、プロジェクト内のすべてのジョブデータを表示できます。
次の役割には、自己作成ジョブに対する bigquery.jobs.get
権限が付与されます。これらのユーザーは、自分が送信したジョブのジョブデータのみを表示できます。
bigquery.user
bigquery.jobUser
BigQuery での Cloud IAM 役割と権限については、アクセス制御をご覧ください。
ジョブに関する情報の表示
ジョブに関する情報を表示するには:
Console
ナビゲーション パネルで [ジョブ履歴] または [クエリ履歴] をクリックして、クエリジョブに関する情報を表示します。
[個人履歴] をクリックして、ジョブの詳細を表示します。[プロジェクト履歴] をクリックして、プロジェクトで実行されたすべてのジョブに関する詳細を表示します。
従来の UI
ナビゲーション パネルで [Job history] または [Query history] をクリックして、クエリジョブに関する情報を表示します。
[Recent Jobs] セクションで、詳細を表示するジョブをクリックします。クエリジョブの場合は、[Query history] タブをクリックしてクエリジョブの詳細を表示します。
CLI
-j
フラグおよび job_id パラメータを指定して bq show
コマンドを実行します。
ジョブ ID を指定するとき、完全修飾 ID と短縮形のどちらを使用してもかまいません。たとえば、BigQuery ウェブ UI に一覧表示されているジョブ ID は完全修飾 ID であり、プロジェクトとロケーションが含まれています。
my-project-1234:US.bquijob_123x456_123y123z123c
コマンドライン ツールのジョブ ID は短縮形で一覧表示されます。プロジェクト ID とロケーションは含まれません。
bquijob_123x456_123y123z123c
ジョブのロケーションを指定するには、--location
フラグを使用して該当するロケーションを設定します。完全修飾ジョブ ID を使用する場合、このフラグは省略できます。--location
フラグを指定して完全修飾ジョブ ID を使用した場合、--location
フラグは無視されます。
次のコマンドは、ジョブに関する情報をリクエストします。
bq --location=location show -j job_id
ここで
- location は省略可能です。location は、ジョブが実行されるロケーションの名前です。たとえば、BigQuery を東京リージョンで使用している場合は、このフラグの値を
asia-northeast1
に設定します。.bigqueryrc ファイルを使用してロケーションのデフォルト値を設定できます。 - job_id はジョブの ID です。
例:
次のコマンドは、myproject
で実行されているジョブ US.bquijob_123x456_123y123z123c
の概要を取得します。
bq show -j myproject:US.bquijob_123x456_123y123z123c
出力は次のようになります。
Job Type State Start Time Duration User Email Bytes Processed Bytes Billed Billing Tier Labels ---------- --------- ----------------- ---------- ------------------- ----------------- -------------- -------------- -------- extract SUCCESS 06 Jul 11:32:10 0:01:41 user@example.com
ジョブの詳細を表示するには、次のように入力します。
bq show --format=prettyjson -j myproject:US.bquijob_123x456_789y123z456c
出力は次のようになります。
{ "configuration": { "extract": { "compression": "NONE", "destinationUri": "[URI removed]", "destinationUris": [ "[URI removed]" ], "sourceTable": { "datasetId": "github_repos", "projectId": "bigquery-public-data", "tableId": "commits" } } }, "etag": "\"[etag removed]\"", "id": "myproject:bquijob_123x456_789y123z456c", "jobReference": { "jobId": "bquijob_123x456_789y123z456c", "projectId": "[Project ID removed]" }, "kind": "bigquery#job", "selfLink": "https://www.googleapis.com/bigquery/v2/projects/federated-testing/jobs/bquijob_123x456_789y123z456c", "statistics": { "creationTime": "1499365894527", "endTime": "1499365894702", "startTime": "1499365894702" }, "status": { "errorResult": { "debugInfo": "[Information removed for readability]", "message": "Operation cannot be performed on a nested schema. Field: author", "reason": "invalid" }, "errors": [ { "message": "Operation cannot be performed on a nested schema. Field: author", "reason": "invalid" } ], "state": "DONE" }, "user_email": "user@example.com" }
API
jobs.get を呼び出して、jobId
パラメータと projectId
パラメータを渡します。(省略可)location
パラメータを使用して、ジョブが実行されるロケーションを指定します。ロケーションを含む完全修飾ジョブ ID を使用する場合(例: my-project-1234:US.bquijob_123x456_123y123z123c
)、このパラメータは省略できます。
Go
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Go の設定手順に従ってください。 詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の設定手順に沿ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
プロジェクト内のジョブの一覧表示
プロジェクトには、過去 6 か月間に作成されたすべてのジョブの履歴が保持されます。50 日以上経過したジョブの自動削除をリクエストするには、サポートにお問い合わせください。
BigQuery のジョブ履歴は、次の方法で表示できます。
- Google Cloud Platform Console または従来のウェブ UI を使用する
- CLI の使用
jobs.list
API メソッドの呼び出し- クライアント ライブラリの使用
ジョブ履歴には、RUNNING
状態のジョブと、すでに DONE
になったジョブが含まれます(これらは SUCCESS
状態または FAILURE
状態として報告されます)。
必要な権限
ジョブを一覧表示するユーザーには、少なくとも bigquery.jobs.list
権限が付与されている必要があります。bigquery.jobs.list
権限は、事前定義された以下の Cloud IAM 役割に含まれています。
bigquery.user
bigquery.admin
次の役割には、自分で作成したジョブのみに対する bigquery.jobs.list
権限が付与されています。この役割を付与されたエンティティは、エンティティ自身が送信したジョブのみを一覧表示できます。
bigquery.jobUser
bigquery.jobs.list
権限が付与されたユーザーは、プロジェクト内のすべてのジョブを一覧表示できますが、他のユーザーが送信したジョブについては詳細とメタデータが除去されます。bigquery.jobs.list
権限によって詳細を確認できるのは、自分で作成したジョブだけです。
他のユーザーが作成したジョブの詳細を含むすべてのジョブを一覧表示するには、bigquery.jobs.listAll
権限が必要です。bigquery.jobs.listAll
権限を持つのは bigquery.admin
役割のみです。
BigQuery での Cloud IAM 役割と権限については、事前定義された役割と権限をご覧ください。
ジョブのリスト化
プロジェクトでジョブを一覧表示する際に、ロケーションを指定する必要はありません。 現在のところ、すべてのロケーションのジョブが一覧表示されます。
プロジェクト内のジョブを一覧表示するには:
Console
ナビゲーション ペインで [ジョブ履歴] をクリックします。
[個人履歴] セクションに、最新のジョブを先頭として作成日時順にジョブが一覧表示されます。この一覧では、現在のユーザーのジョブだけが表示されます。プロジェクトのすべてのジョブを表示するには、[プロジェクト履歴] をクリックします。(そのプロジェクトのオーナー以外のユーザーは、プロジェクトのすべてのジョブを表示する権限がない場合があります)。
従来の UI
ナビゲーション ペインで [Job History] をクリックします。
[Recent Jobs] セクションに、作成日時の新しい順にジョブが一覧表示されます。この一覧では、現在のユーザーのジョブだけが表示されます。すべてのジョブを表示するには、コマンドライン ツールまたは API を使用します。
CLI
次のいずれかのフラグを指定して bq ls
コマンドを発行します。
-j
は、一覧表示するリソースとしてジョブを指定します。--all
または-a
を指定すると、すべてのユーザーのジョブが一覧表示されます。すべてのジョブの完全な詳細を表示するには、bigquery.jobs.listAll
権限が必要です。--min_creation_time
を使用すると、指定したタイムスタンプ以降のジョブが一覧表示されます。--max_creation_time
を使用すると、指定したタイムスタンプ以前のジョブが一覧表示されます。-n
は結果を制限します。デフォルトでは、結果は 100,000 件に制限されています。
bq ls -j -a \ --min_creation_time integer1 \ --max_creation_time integer2 \ -n integer3 \ project_id
ここで
- integer1 は、タイムスタンプを表す整数です。
- integer2 は、タイムスタンプを表す整数です。
- integer3 は、一覧表示するジョブの数を指定する整数です。
- project_id は、一覧表示するジョブが含まれているプロジェクトの ID です。デフォルト プロジェクトを設定している場合、project_id パラメータを指定する必要はありません。
例:
次のコマンドは、現在のユーザーのすべてのジョブを一覧表示します。このコマンドを実行するには、bigquery.jobs.list
権限が必要です。
bq ls -j myproject
次のコマンドは、すべてのユーザーのすべてのジョブを一覧表示します。このコマンドを実行するには、bigquery.jobs.listAll
権限が必要です。
bq ls -j -a myproject
以下のコマンドは、myproject
で最近の 10 件のジョブを一覧表示します:
bq ls -j -a -n 10 myproject
次のコマンドは、2018 年 10 月 18 日午後 4:04:53 より前に送信されたすべてのジョブを一覧表示します。このタイムスタンプ(ミリ秒数)に該当するのは、整数 1539903893000
です。
bq ls -j --max_creation_time 1539903893000
API
jobs.list を呼び出して、projectId
パラメータを指定します。すべてのユーザーのジョブを一覧表示するには、allUsers
パラメータを true
に設定します。allUsers
を true
に設定するには bigquery.jobs.listAll
権限が必要です。
Go
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Go の設定手順に従ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順に従ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の設定手順に沿ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
ジョブのキャンセル
次の方法で、RUNNING
または PENDING
のジョブをキャンセルできます。
- GCP Console または従来のウェブ UI の使用
- CLI の使用
jobs.cancel
API メソッドの呼び出し- クライアント ライブラリの使用
すべてのジョブタイプをキャンセルできるわけではありません。ジョブをキャンセルできない場合は、エラーが返されます。
ジョブをキャンセルできる場合でも、キャンセルが成功する保証はありません。キャンセル リクエストが送信されるまでにジョブがすでに完了している場合や、ジョブがキャンセルできない段階に達している場合などがあります。
必要な権限
ジョブをキャンセルするには、少なくとも bigquery.jobs.update
権限が付与されている必要があります。bigquery.jobs.update
権限は、次の事前定義された Cloud IAM 役割に含まれています。
bigquery.admin
アカウントに bigquery.admin
役割を付与すると、そのユーザーは誰がジョブを送信したかに関係なく、プロジェクト内のすべてのジョブデータをキャンセルできます。
次の役割では、自己作成ジョブをキャンセルできます。これらのユーザーは、自分が送信したジョブのみをキャンセルできます。
bigquery.user
bigquery.jobUser
BigQuery での Cloud IAM 役割と権限については、事前定義された役割と権限をご覧ください。
ジョブのキャンセル
ジョブをキャンセルするには:
Console
ナビゲーション ペインで [ジョブ履歴] をクリックします。
[個人履歴] セクションで、キャンセルするジョブをクリックします。最新のジョブがリストの一番上に表示されます。
ジョブの詳細で [ジョブをキャンセル] をクリックします。
従来の UI
ナビゲーション ペインで [Job History] をクリックします。
[Recent Jobs] セクションで、キャンセルするジョブをクリックします。最新のジョブがリストの一番上に表示されます。
ジョブの詳細で [Cancel Job] をクリックします。
CLI
job_id
パラメータを指定して bq cancel
コマンドを発行します。キャンセルをリクエストしてすぐに戻るには、--nosync
- フラグを使用します。デフォルトでは、キャンセル リクエストが完了するまで待機します。
ジョブ ID を指定するとき、完全修飾 ID と短縮形のどちらを使用してもかまいません。たとえば、BigQuery ウェブ UI に一覧表示されているジョブ ID は完全修飾 ID であり、プロジェクトとロケーションが含まれています。
my-project-1234:US.bquijob_123x456_123y123z123c
コマンドライン ツールのジョブ ID は短縮形で一覧表示されます。プロジェクト ID とロケーションは含まれません。
bquijob_123x456_123y123z123c
ジョブのロケーションを指定するには、--location
フラグを使用して該当するロケーションを設定します。完全修飾ジョブ ID を使用する場合、このフラグは省略できます。--location
フラグを指定して完全修飾ジョブ ID を使用した場合、--location
フラグは無視されます。
次のコマンドはジョブのキャンセルをリクエストし、リクエストが完了するまで待機します。完全修飾ジョブ ID が指定されている場合、--location
フラグは無視されます。
bq --location=location cancel job_id
次のコマンドはジョブのキャンセルをリクエストし、即時に戻ります。完全修飾ジョブ ID が指定されている場合、--location
フラグは無視されます。
bq --location=location --nosync cancel job_id
ここで
- location は省略可能です。location は、ジョブが実行されるロケーションの名前です。たとえば、BigQuery を東京リージョンで使用している場合は、このフラグの値を asia-northeast1 に設定します。.bigqueryrc ファイルを使用してロケーションのデフォルト値を設定できます。
- job_id は、キャンセルするジョブの ID です。BigQuery ウェブ UI からジョブ ID をコピーする場合、ジョブ ID にはプロジェクト ID とロケーションが含まれます(例:
my-project-1234:US.bquijob_123x456_123y123z123c
)。
例:
次のコマンドは、US
マルチ リージョン ロケーションの my-project-1234
で実行中のジョブ my-project-1234:US.bquijob_123x456_123y123z123c
をキャンセルし、リクエストが完了するまで待機します。完全修飾ジョブ ID が使用されているため、location フラグは指定されていません。
bq cancel my-project-1234:US.bquijob_123x456_123y123z123c
次のコマンドは、US
マルチ リージョン ロケーションの my-project-1234
で実行中のジョブ bquijob_123x456_123y123z123c
をキャンセルし、リクエストが完了するまで待機します。短縮形のジョブ ID が使用されているため、--location
フラグが指定されています。
bq --location=US cancel bquijob_123x456_123y123z123c
次のコマンドは、US
マルチ リージョン ロケーションの my-project-1234
で実行中のジョブ bquijob_123x456_123y123z123c
をキャンセルし、即時に戻ります。完全修飾ジョブ ID が使用されているため、--location
フラグは指定されていません。
bq --nosync cancel my-project-1234:US.bquijob_123x456_123y123z123c
API
jobs.cancel を呼び出して、jobId
パラメータと projectId
パラメータを指定します。location
パラメータを使用して、ジョブが実行されるロケーションを指定します。
Go
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Go の設定手順に従ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の設定手順に沿ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
ジョブの繰り返し
同じジョブ ID を使用してジョブを再実行することはできません。代わりに、同じ構成で新しいジョブを作成します。GCP Console、従来のウェブ UI、または CLI で新しいジョブを送信すると、新しいジョブ ID が割り当てられます。API またはクライアント ライブラリを使用してジョブを送信する場合は、新しいジョブ ID を生成する必要があります。
必要な権限
ジョブを実行するには、少なくとも bigquery.jobs.create
権限が付与されている必要があります。bigquery.jobs.create
権限は、事前定義された以下の Cloud IAM 役割に含まれています。
bigquery.user
bigquery.jobUser
bigquery.admin
BigQuery での Cloud IAM 役割と権限については、事前定義された役割と権限をご覧ください。
ジョブの再実行
ジョブを繰り返すには:
Console
クエリジョブを繰り返すには:
ナビゲーション ペインで [クエリ履歴] をクリックします。
[個人履歴] または [プロジェクト履歴] のセクションで、再実行するクエリをクリックし、[クエリをエディタで開く] をクリックします。
[実行] をクリックします。
読み込みジョブを繰り返すには:
ナビゲーション ペインで [ジョブ履歴] をクリックします。
[個人履歴] または [プロジェクト履歴] のセクションで、繰り返したいジョブをクリックします。最新のジョブがリストの一番上に表示されます。
ジョブの詳細で、[読み込みジョブを繰り返す] をクリックします。
従来の UI
クエリジョブを繰り返すには:
ナビゲーション ペインで [Query History] をクリックします。
クエリの右側にある [Queries] セクションで、[Open Query] をクリックします。
[Run Query] をクリックします。
読み込みジョブを繰り返すには:
ナビゲーション ペインで [Job History] をクリックします。
[Recent Jobs] セクションで、繰り返すジョブをクリックします。最新のジョブがリストの一番上に表示されます。
ジョブの詳細で、[Repeat Load Job] をクリックします。
CLI
コマンドをもう一度実行すると、BigQuery が自動的にジョブを生成し、新しいジョブ ID が割り当てられます。
API
ジョブを繰り返す単一の呼び出しメソッドはありません。特定のジョブを繰り返すには、次のようにします。
jobs.get
を呼び出して、繰り返すジョブのリソースを取得します。id、status、statistics の各フィールドを削除します。 クライアント コードによって生成された新しいジョブ ID を、jobId フィールドに設定します。必要に応じて他のフィールドを変更します。
変更したリソースと新しいジョブ ID を使用して
jobs.insert
を呼び出し、新しいジョブを開始します。