BigQuery ジョブを送信した後、ジョブデータの表示、ジョブの一覧表示、ジョブのキャンセル、ジョブの再実行ができます。
ジョブが送信されると、次の 3 つの状態のいずれかになります。
PENDING
: スケジュール済みRUNNING
DONE
:SUCCESS
またはFAILURE
(ジョブがエラーを伴って完了した場合)として報告
ジョブデータの表示
ジョブデータとメタデータを表示するには、Cloud Console、bq
コマンドライン ツール、API を使用します。このデータには、ジョブタイプ、ジョブの状態、ジョブを実行したユーザーなどの詳細情報が含まれます。
必要な権限
ジョブデータとメタデータを取得するユーザーには、少なくとも bigquery.jobs.get
権限が付与されている必要があります。bigquery.jobs.get
権限は、次の事前定義された IAM ロールに含まれています。
bigquery.admin
アカウントに bigquery.admin
ロールを付与すると、そのユーザーは誰がジョブを送信したかに関係なく、プロジェクト内のすべてのジョブデータを表示できます。
次の役割には、自己作成ジョブに対する bigquery.jobs.get
権限が付与されます。これらのユーザーは、自分が送信したジョブのジョブデータのみを表示できます。
bigquery.user
bigquery.jobUser
BigQuery での IAM ロールと権限の詳細については、アクセス制御をご覧ください。
ジョブに関する情報の表示
ジョブに関する情報を表示するには:
Console
ナビゲーション パネルで [ジョブ履歴] または [クエリ履歴] をクリックして、クエリジョブに関する情報を表示します。
[個人履歴] をクリックして、ジョブの詳細を表示します。[プロジェクト履歴] をクリックして、プロジェクトで実行されたすべてのジョブに関する詳細を表示します。
bq
-j
フラグとジョブ ID を指定して bq show
コマンドを発行します。
ジョブ ID を指定するとき、完全修飾 ID と短縮形のどちらを使用してもかまいません。たとえば、Cloud Console に一覧表示されているジョブ 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://bigquery.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 のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
プロジェクト内のジョブの一覧表示
プロジェクトには、過去 6 か月間に作成されたすべてのジョブの履歴が保持されます。
BigQuery のジョブ履歴は次の方法で表示できます。
- Google Cloud Console を使用する。
bq
コマンドライン ツールを使用する。jobs.list
API メソッドを呼び出す。- クライアント ライブラリを使用する。
ジョブ履歴には、RUNNING
状態のジョブと、すでに DONE
になったジョブが含まれます(これらは SUCCESS
状態または FAILURE
状態として報告されます)。
必要な権限
ジョブを一覧表示するユーザーには、少なくとも bigquery.jobs.list
権限が付与されている必要があります。次の事前定義済みの IAM ロールには bigquery.jobs.list
権限が含まれています。
bigquery.user
bigquery.admin
次のロールには、自分で作成したジョブのみに対する bigquery.jobs.list
権限が付与されています。この役割を付与されたエンティティは、エンティティ自身が送信したジョブのみを一覧表示できます。
bigquery.jobUser
bigquery.jobs.list
権限が付与されたユーザーは、プロジェクト内のすべてのジョブを一覧表示できますが、他のユーザーが送信したジョブについては詳細とメタデータが除去されます。bigquery.jobs.list
権限によって詳細を確認できるのは、自分で作成したジョブのみです。
他のユーザーが作成したジョブの詳細を含むすべてのジョブを一覧表示するには、bigquery.jobs.listAll
権限が必要です。bigquery.jobs.listAll
権限を持つのは bigquery.admin
ロールと bigquery.resourceAdmin
ロールだけです。
BigQuery での IAM のロールと権限について詳しくは、事前定義ロールと権限をご覧ください。
ジョブのリスト化
プロジェクトでジョブを一覧表示する際に、ロケーションを指定する必要はありません。現在のところ、すべてのロケーションのジョブが一覧表示されます。
プロジェクト内のジョブを一覧表示するには:
Console
ナビゲーション ペインで [ジョブ履歴] をクリックします。
[個人履歴] セクションに、作成日時の新しい順にジョブが一覧表示されます。この一覧では、現在のユーザーのジョブだけが表示されます。プロジェクトのすべてのジョブを表示するには、[プロジェクト履歴] をクリックします。(そのプロジェクトのオーナー以外のユーザーは、プロジェクトのすべてのジョブを表示する権限がない場合があります)。
bq
次のいずれかのフラグを指定して 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 のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
ジョブのキャンセル
次の方法で、RUNNING
または PENDING
のジョブをキャンセルできます。
- Cloud Console の使用
bq
コマンドライン ツールを使用する。- SQL クエリで
BQ.JOBS.CANCEL
システム プロシージャを使用する。 jobs.cancel
API メソッドを呼び出す。- クライアント ライブラリを使用する。
すべてのジョブタイプをキャンセルできるわけではありません。ジョブをキャンセルできない場合は、エラーが返されます。
ジョブをキャンセルできる場合でも、キャンセルが成功する保証はありません。キャンセル リクエストが送信されるまでにジョブがすでに完了している場合や、ジョブがキャンセルできない段階に達している場合などがあります。
必要な権限
ジョブをキャンセルするには、少なくとも bigquery.jobs.update
権限が付与されている必要があります。bigquery.jobs.update
権限は、次の事前定義された IAM ロールに含まれています。
bigquery.admin
アカウントに bigquery.admin
ロールを付与すると、そのユーザーは誰がジョブを送信したかに関係なく、プロジェクト内のすべてのジョブデータをキャンセルできます。
次の役割では、自分で作成したジョブをキャンセルできます。これらのユーザーは、自分が送信したジョブのみをキャンセルできます。
bigquery.user
bigquery.jobUser
BigQuery での IAM のロールと権限について詳しくは、事前定義ロールと権限をご覧ください。
ジョブをキャンセルする
ジョブをキャンセルするには:
Console
ナビゲーション ペインで [ジョブ履歴] をクリックします。
[個人履歴] セクションで、キャンセルするジョブをクリックします。最新のジョブがリストの一番上に表示されます。
ジョブの詳細で [ジョブをキャンセル] をクリックします。
SQL
BQ.JOBS.CANCEL
システム プロシージャを使用します。
CALL BQ.JOBS.CANCEL('job_id');
job_id は、キャンセルするジョブの ID に置き換えます。
キャンセルするジョブと同じリージョンにある別のプロジェクトを使用している場合は、プロジェクト ID も含める必要があります。
CALL BQ.JOBS.CANCEL('project_id.job_id');
以下を置き換えます。
project_id
は、キャンセルするジョブを含むプロジェクトの ID です。job_id
は、キャンセルするジョブの ID です。
プロシージャがすぐに返され、その後まもなく BigQuery によってジョブがキャンセルされます。ジョブがすでに成功または失敗している場合は、この手順を行ってもジョブはキャンセルできません。
bq
job_id
パラメータを指定して bq cancel
コマンドを発行します。キャンセルをリクエストしてすぐに戻るには、--nosync
- フラグを使用します。デフォルトでは、キャンセル リクエストが完了するまで待機します。
ジョブ ID を指定するとき、完全修飾 ID と短縮形のどちらを使用してもかまいません。たとえば、Cloud Console に一覧表示されているジョブ ID は完全修飾 ID であり、プロジェクトとロケーションが含まれています。
my-project-1234:US.bquijob_123x456_123y123z123c
bq
コマンドライン ツールのジョブ 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 です。Cloud Console からジョブ 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 のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
ジョブの繰り返し
同じジョブ ID を使用してジョブを再実行することはできません。代わりに、同じ構成で新しいジョブを作成します。Cloud Console または bq
コマンドライン ツールで新しいジョブを送信すると、新しいジョブ ID が割り当てられます。API またはクライアント ライブラリを使用してジョブを送信する場合は、新しいジョブ ID を生成する必要があります。
必要な権限
ジョブを実行するには、少なくとも bigquery.jobs.create
権限が付与されている必要があります。次の IAM 事前定義ロールには bigquery.jobs.create
権限が含まれています。
bigquery.user
bigquery.jobUser
bigquery.admin
BigQuery での IAM のロールと権限について詳しくは、事前定義ロールと権限をご覧ください。
ジョブの再実行
ジョブを繰り返すには:
Console
クエリジョブを繰り返すには:
ナビゲーション ペインで [クエリ履歴] をクリックします。
[個人履歴] または [プロジェクト履歴] のセクションで、再実行するクエリをクリックし、[クエリをエディタで開く] をクリックします。
[実行] をクリックします。
読み込みジョブを繰り返すには:
ナビゲーション ペインで [ジョブ履歴] をクリックします。
[個人履歴] または [プロジェクト履歴] のセクションで、繰り返したいジョブをクリックします。最新のジョブがリストの一番上に表示されます。
ジョブの詳細で、[読み込みジョブを繰り返す] をクリックします。
bq
コマンドをもう一度実行すると、BigQuery が自動的にジョブを生成し、新しいジョブ ID が割り当てられます。
API
ジョブを繰り返す単一の呼び出しメソッドはありません。特定のジョブを繰り返すには、次のようにします。
jobs.get
を呼び出して、繰り返すジョブのリソースを取得します。id、status、statistics の各フィールドを削除します。 クライアント コードによって生成された新しいジョブ ID を、jobId フィールドに設定します。必要に応じて他のフィールドを変更します。
変更したリソースと新しいジョブ ID を使用して
jobs.insert
を呼び出し、新しいジョブを開始します。