この記事で分かること
- 検索結果が出る前に BigQuery Studio を終了しても、後で結果を見ることができること
- ジョブ履歴(個人の履歴)から結果を開く具体的な手順
- 履歴で足りる場合と、結果をテーブルに残した方がよい場合の切り分け
- ジョブのキャンセルと、Studio を閉じることの違い
結論(先に要点)
BigQuery Studio では、SQL の実行結果が画面に出力されることを想定しています。
ところが処理が想定より長く、退勤時間になっても結果が返ってこないことがあります。
このときやりがちなのが、画面を開き続けて待つことや、待ちきれず結果テーブル用に SQL を書き直して再実行することです。
実は、結果が出る前に Studio を終了しても、あとから結果を見られることがほとんどです。ジョブをキャンセルしていなければ裏で進み、翌朝などに ジョブ履歴から結果を開けます。
「画面に出るまで張り付く」必要はありません。まず履歴です。
| 手段 | 向いていること |
|---|---|
| 履歴から結果を開く | Studio を閉じたあと・翌朝など、すでに流した SELECT の結果を見る |
| クエリキャッシュ(約24時間) | 同じ SQL の再実行コストを下げたいとき |
結果の CREATE TABLE |
名前付きで残す・共有する・追加の結合や比較をするとき |
※ 本稿のプロジェクトIDなどは説明用の仮名です。
よくある場面
- Studio で集計用の SQL を実行します。結果が表示されることが前提です。
- 思ったより時間がかかる
- 退勤時間になっても、まだ結果が返ってこない
- 「画面を開き続けるか」「結果テーブル用に書き直して再実行するか」で迷う
多くの場合、結果が出る前に BigQuery Studio を閉じて帰ることが可能です。
ジョブは動き続け、翌朝に履歴から取れます。
注意点はひとつだけです。ジョブをキャンセルしないこと。
Studio やブラウザを閉じることと、実行中ジョブを止めることは別です。止めると結果も消えます。
処理そのものがなぜ重いのか(相手テーブルの特徴など)は、別記事にまとめています。
→ 前月1か月の集計なのに重い|非パーティション表と並列フルスキャン(公開後は archives に差し替え)
履歴から結果を取得する手順(BigQuery Studio)
Google Cloud コンソールの BigQuery Studio を前提にします。
日本語 UI では「ジョブ履歴」「個人の履歴」、英語 UI では Job history / Personal history などになります。
前提
- 実行中のジョブがキャンセルされていないこと
- 同じ Google アカウントで入る
- 対象の プロジェクト を間違えない(履歴はプロジェクト単位)
手順A:個人の履歴(いちばん短い道)
- Google Cloud コンソール で BigQuery(Studio)を開く
- 左の エクスプローラ で対象プロジェクトを確認する
- ジョブ履歴 を開く
- 個人の履歴 を選ぶ
- 時刻・SQL の冒頭・ステータスで、該当ジョブを探す
- 行の アクション(⋮) から次を選ぶ(名称は UI により前後します)
- エディタでジョブを表示 … SQL と結果を開き直す
- ジョブの詳細を表示 … 状態・スキャン量・エラーを確認する
- 成功なら クエリ結果 ペイン(または結果タブ)で中身を確認する
これで、「画面に張り付いていなくても、あとから結果を見る」が完了です。
手順B:個人の履歴に無いとき
- 同じく ジョブ履歴 を開く
- プロジェクトの履歴 を選ぶ
- 時刻・ユーザー・ジョブタイプ(QUERY)で探す
- アクションからエディタ表示または詳細を開く
自分の退勤ジョブなら、多くの場合は手順Aで足ります。
ステータスの見方
| 状態 | 意味 | やること |
|---|---|---|
| 成功 / SUCCESS | 完了。結果を保持している | 結果を確認・必要なら保存 |
| 実行中 / RUNNING | まだ終わっていない | キャンセルせず待つ。あとで履歴を再表示 |
| 失敗 / FAILURE | エラーで終了 | 詳細のメッセージを読む |
「画面が真っ白なまま退勤した」=失敗、ではありません。
多くの場合、結果ペインがまだ出ていなかったか、ブラウザを閉じただけです。
結果を開いたあと
- 画面で目視する
- CSV やスプレッドシートへ保存する(メニューがある場合)
- SQL テキストをコピーしてメモに残す
- 実行詳細でスキャン量を見る(次回、どの処理が重かったかの手がかり)
履歴で見られたからといって、データセット上にテーブルが増えるわけではありません。
名前付きで残したいときだけ、別途 CREATE TABLE ... AS を設計します。
ジョブIDを控えると探しやすい
長時間かかる処理を実行した後でジョブ ID を記録すると、次の日の検索が容易になります。
# 任意。プロジェクト・リージョンは環境に合わせる
bq show -j --format=prettyjson JOB_ID
普段は Studio の履歴だけで十分なことが多いです。
履歴・キャッシュ・結果テーブルの違い
| 何をする仕組みか | |
|---|---|
| ジョブ履歴 | すでに流したジョブの結果を、あとから開く(本記事の本命) |
| クエリキャッシュ(約24時間) | 同じ SQL を再実行するとき、条件が揃えば結果を再利用する(履歴で開く話とは別) |
| 結果テーブル化 | 結果に名前を付けてデータセットに残す。共有・追加加工向き |
履歴で足りる/足りない
足りる例
- 退勤前に結果が出なかった SELECT を、翌朝確認する
- 今日のうちに、同じジョブの結果をもう一度見る
足りない例(結果テーブル化を検討)
- 何日もあとに、同じ結果セットを名前で参照したい
- 他の人や別ジョブから継続利用したい
- 結果に対して追加の結合・検証をする
- 画面の結果ペインでは扱いにくい規模
動機は「退勤に間に合わないから再実行」ではなく、残したい・使いまわしたいから残す、の方がきれいです。
結果テーブル化の書き方は 重い処理は結果をテーブルに残す を参照してください。
実務での進め方
- 退勤時刻でも画面に返らない → キャンセルせず、履歴で翌朝確認
- 共有・長期利用・追加加工がある → そのとき結果テーブル化を設計する
- 「なぜ重かったか」を次に活かす → 相手テーブルの特徴を疑う(別記事)
失敗例と回避策
- 失敗: 退勤時にジョブを停止し、同様の SQL 文を再作成して再実行すると、結果が二度手間になります。
回避: Studio を閉じても問題ありません。ただし、ジョブを停止しないでください。次の日には履歴から確認できます。 - 失敗: 履歴で見られた結果を、データセット上のテーブルだと勘違いする
回避: 残したいなら別途CREATE TABLEする
まとめ
- 結果が出る前に BigQuery Studio を閉じても、後でジョブ履歴から結果を見ることができます。
- 開き方は、ジョブ履歴 → 個人の履歴 → エディタ表示/詳細 → クエリ結果
- ジョブのキャンセルと、Studio を閉じることは別
- 残したい・使いまわしたいときだけ、結果テーブル化を使う
