BigQuery Studioを閉じても大丈夫|ジョブ履歴から検索結果を開く

この記事で分かること

  • 検索結果が出る前に BigQuery Studio を終了しても、後で結果を見ることができること
  • ジョブ履歴(個人の履歴)から結果を開く具体的な手順
  • 履歴で足りる場合と、結果をテーブルに残した方がよい場合の切り分け
  • ジョブのキャンセルと、Studio を閉じることの違い

結論(先に要点)

BigQuery Studio では、SQL の実行結果が画面に出力されることを想定しています。
ところが処理が想定より長く、退勤時間になっても結果が返ってこないことがあります。

このときやりがちなのが、画面を開き続けて待つことや、待ちきれず結果テーブル用に SQL を書き直して再実行することです。

実は、結果が出る前に Studio を終了しても、あとから結果を見られることがほとんどです。ジョブをキャンセルしていなければ裏で進み、翌朝などに ジョブ履歴から結果を開けます

「画面に出るまで張り付く」必要はありません。まず履歴です。

手段 向いていること
履歴から結果を開く Studio を閉じたあと・翌朝など、すでに流した SELECT の結果を見る
クエリキャッシュ(約24時間) 同じ SQL の再実行コストを下げたいとき
結果の CREATE TABLE 名前付きで残す・共有する・追加の結合や比較をするとき

※ 本稿のプロジェクトIDなどは説明用の仮名です。

よくある場面

  1. Studio で集計用の SQL を実行します。結果が表示されることが前提です。
  2. 思ったより時間がかかる
  3. 退勤時間になっても、まだ結果が返ってこない
  4. 「画面を開き続けるか」「結果テーブル用に書き直して再実行するか」で迷う

多くの場合、結果が出る前に BigQuery Studio を閉じて帰ることが可能です。
ジョブは動き続け、翌朝に履歴から取れます。

注意点はひとつだけです。ジョブをキャンセルしないこと。
Studio やブラウザを閉じることと、実行中ジョブを止めることは別です。止めると結果も消えます。

処理そのものがなぜ重いのか(相手テーブルの特徴など)は、別記事にまとめています。
前月1か月の集計なのに重い|非パーティション表と並列フルスキャン(公開後は archives に差し替え)

履歴から結果を取得する手順(BigQuery Studio)

Google Cloud コンソールの BigQuery Studio を前提にします。
日本語 UI では「ジョブ履歴」「個人の履歴」、英語 UI では Job history / Personal history などになります。

前提

  • 実行中のジョブがキャンセルされていないこと
  • 同じ Google アカウントで入る
  • 対象の プロジェクト を間違えない(履歴はプロジェクト単位)

手順A:個人の履歴(いちばん短い道)

  1. Google Cloud コンソール で BigQuery(Studio)を開く
  2. 左の エクスプローラ で対象プロジェクトを確認する
  3. ジョブ履歴 を開く
  4. 個人の履歴 を選ぶ
  5. 時刻・SQL の冒頭・ステータスで、該当ジョブを探す
  6. 行の アクション(⋮) から次を選ぶ(名称は UI により前後します)
    • エディタでジョブを表示 … SQL と結果を開き直す
    • ジョブの詳細を表示 … 状態・スキャン量・エラーを確認する
  7. 成功なら クエリ結果 ペイン(または結果タブ)で中身を確認する

これで、「画面に張り付いていなくても、あとから結果を見る」が完了です。

手順B:個人の履歴に無いとき

  1. 同じく ジョブ履歴 を開く
  2. プロジェクトの履歴 を選ぶ
  3. 時刻・ユーザー・ジョブタイプ(QUERY)で探す
  4. アクションからエディタ表示または詳細を開く

自分の退勤ジョブなら、多くの場合は手順Aで足ります。

ステータスの見方

状態 意味 やること
成功 / SUCCESS 完了。結果を保持している 結果を確認・必要なら保存
実行中 / RUNNING まだ終わっていない キャンセルせず待つ。あとで履歴を再表示
失敗 / FAILURE エラーで終了 詳細のメッセージを読む

「画面が真っ白なまま退勤した」=失敗、ではありません。
多くの場合、結果ペインがまだ出ていなかったか、ブラウザを閉じただけです。

結果を開いたあと

  • 画面で目視する
  • CSV やスプレッドシートへ保存する(メニューがある場合)
  • SQL テキストをコピーしてメモに残す
  • 実行詳細でスキャン量を見る(次回、どの処理が重かったかの手がかり)

履歴で見られたからといって、データセット上にテーブルが増えるわけではありません。
名前付きで残したいときだけ、別途 CREATE TABLE ... AS を設計します。

ジョブIDを控えると探しやすい

長時間かかる処理を実行した後でジョブ ID を記録すると、次の日の検索が容易になります。

# 任意。プロジェクト・リージョンは環境に合わせる
bq show -j --format=prettyjson JOB_ID

普段は Studio の履歴だけで十分なことが多いです。

履歴・キャッシュ・結果テーブルの違い

何をする仕組みか
ジョブ履歴 すでに流したジョブの結果を、あとから開く(本記事の本命)
クエリキャッシュ(約24時間) 同じ SQL を再実行するとき、条件が揃えば結果を再利用する(履歴で開く話とは別)
結果テーブル化 結果に名前を付けてデータセットに残す。共有・追加加工向き

履歴で足りる/足りない

足りる例

  • 退勤前に結果が出なかった SELECT を、翌朝確認する
  • 今日のうちに、同じジョブの結果をもう一度見る

足りない例(結果テーブル化を検討)

  • 何日もあとに、同じ結果セットを名前で参照したい
  • 他の人や別ジョブから継続利用したい
  • 結果に対して追加の結合・検証をする
  • 画面の結果ペインでは扱いにくい規模

動機は「退勤に間に合わないから再実行」ではなく、残したい・使いまわしたいから残す、の方がきれいです。
結果テーブル化の書き方は 重い処理は結果をテーブルに残す を参照してください。

実務での進め方

  1. 退勤時刻でも画面に返らない → キャンセルせず、履歴で翌朝確認
  2. 共有・長期利用・追加加工がある → そのとき結果テーブル化を設計する
  3. 「なぜ重かったか」を次に活かす → 相手テーブルの特徴を疑う(別記事

失敗例と回避策

  • 失敗: 退勤時にジョブを停止し、同様の SQL 文を再作成して再実行すると、結果が二度手間になります。
    回避: Studio を閉じても問題ありません。ただし、ジョブを停止しないでください。次の日には履歴から確認できます。
  • 失敗: 履歴で見られた結果を、データセット上のテーブルだと勘違いする
    回避: 残したいなら別途 CREATE TABLE する

まとめ

  • 結果が出る前に BigQuery Studio を閉じても、後でジョブ履歴から結果を見ることができます。
  • 開き方は、ジョブ履歴 → 個人の履歴 → エディタ表示/詳細 → クエリ結果
  • ジョブのキャンセルと、Studio を閉じることは別
  • 残したい・使いまわしたいときだけ、結果テーブル化を使う

次に読む

タイトルとURLをコピーしました