dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

BigQuery で実行中のジョブをキャンセル

2024-07-25 21:14:45 | BigQuery

BigQuery で実行中のジョブをキャンセルする方法のメモ。


実行中のジョブ一覧

以下でジョブ一覧を出力することができる。

bq ls --jobs

実行結果例

             jobId               Job Type    State      Start Time         Duration
 ------------------------------ ---------- --------- ----------------- ----------------
  bquxjob_3ba5c31b_190e9c1dd8a   query      RUNNING   25 Jul 20:58:34
  bquxjob_63ac3918_190e9bf7161   query      SUCCESS   25 Jul 20:55:55   0:02:00.769000
...

ジョブ情報の表示

以下でジョブに関する情報を表示することができる。

show --job "{project_id}:{location}.{job_id}" 

実行結果例

{project_id}:bquxjob_3ba5c31b_190e9c1dd8a

  Job Type    State      Start Time      Duration         User Email         Bytes Processed   Bytes Billed   Billing Tier   Labels
 ---------- --------- ----------------- ---------- ------------------------ ----------------- -------------- -------------- --------
  query      RUNNING   25 Jul 20:58:34              {user_email}


ジョブのキャンセル

以下でジョブをキャンセルすることができる。

bq cancel "{project_id}:{location}.{job_id}"

実行結果例

Waiting on bquxjob_3ba5c31b_190e9c1dd8a ... (16s) Current status: DONE
Job {projecct_id}:bquxjob_3ba5c31b_190e9c1dd8a

  Job Type    State      Start Time         Duration            User Email         Bytes Processed   Bytes Billed   Billing Tier   Labels
 ---------- --------- ----------------- ---------------- ------------------------ ----------------- -------------- -------------- --------
  query      FAILURE   25 Jul 20:58:34   0:03:16.366000   {user_email}            0                 0              1


Error encountered during job execution:
Job execution was cancelled: User requested cancellation

Job has been cancelled successfully.

ジョブ一覧では以下のように FAILURE となる。

bq ls --jobs

             jobId               Job Type    State      Start Time         Duration
 ------------------------------ ---------- --------- ----------------- ----------------
  bquxjob_3ba5c31b_190e9c1dd8a   query      FAILURE   25 Jul 20:58:34   0:03:16.366000
  bquxjob_63ac3918_190e9bf7161   query      SUCCESS   25 Jul 20:55:55   0:02:00.769000
  bquxjob_c547e29_190e9b61dd7    query      SUCCESS   25 Jul 20:45:44   0:00:10.844000

BigQuery で sleep する方法のメモ

2024-07-25 20:49:44 | BigQuery

BigQuery で Cloud SQL(MySQL)の sleep() を使って sleep する方法のメモ。


BigQuery から Cloud SQL に接続する方法

BigQuery で「+追加」をクリックし、「外部データソースへの接続」から DB への外部接続を設定。

上記で作成した外部接続の接続情報から、サービスアカウントIDをコピー。

「IAM と管理」メニューで「アクセス件を付与」をクリックし、「新しいプリンシパル」にコピーしたサービスアカウントIDをペースト、ロールに「Cloud SQL クライアント」を指定して「保存」。


BigQuery から Cloud SQL のクエリを実行

Cloud SQL で sleep() を実行することで、BigQuery で sleep することができる。

ただし、Cloud SQL への接続や BigQuery のオーバーヘッドなどで、sleep に指定した秒数よりも実行時間は長くなる。

select
  *
from
  external_query(
    "{外部接続の接続ID}",
    "select sleep({秒数});"
  )
;

外部接続の接続IDは、「接続情報」の「接続ID」に表示される projects/.../locations/.../connections/... の形式か、{ロケーション}.{接続ID} の形式。


JavaScript UDF 等で sleep したかったのですが、実現できなかったため、この方法を試してみました。