小ネタです。特にLooker Studioでよく起きますが、カスタムクエリや選択するフィールドをぽちぽちいじっていると、その都度クエリが発行されます。探索的にあれこれいじっていると、段々クエリが詰まってくることもあります(Looker Studio側がうまいことjobのキャンセルをしてくれない...?)。データのスキャン量やスロットの使用量的にもよくないので、こういったjobはキャンセルしたいです。しかし、BigQueryのWebコンソールからはまとめてキャンセルすることはできないですし、bqコマンドも基本的にjob_idを一個一個指定する形になっています。十数個ほどjobが滞留しているときに、一個一個指定するのは手間がかかります。
というわけでまとめてキャンセルするワンライナーを書きました。
bq --project_id my-project ls --jobs --all --format json | \ jq -r '.[] | select(.state == "RUNNING" and .user_email == "me@example.com") | .id' | \ xargs -I% bq --project_id my-project --nosync cancel %
BigQuery Scriptingでやる方法もよさそうです。
BigQueryジョブの全キャンセルはスクリプト推し
— na0 (@na0fu3y) 2023年5月28日
FOR job IN (
SELECT
project_id || "." || job_id AS full_job_id
FROM
`your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_USER
WHERE
state IN ("RUNNING", "PENDING")
)
DO
CALL https://t.co/m75EL4xeok.CANCEL(job.full_job_id);
END FOR; https://t.co/QpnktjLxPt