BigQueryのコスト・パフォーマンス最適化を始めるための入門ガイド
概要
以下は、本記事シリーズ用のGitHubリポジトリに収録しているクエリの一覧と、それぞれの簡単な説明です。各項目には、INFORMATION_SCHEMAビューを利用するクエリと、BigQuery監査ログのシンクを利用するクエリの2系統が用意されています。後者については、ファイル名に「_general」が付いたものがシンク内のすべてのプロジェクトを横断的に検索する汎用クエリ、サフィックスのないものがプロジェクト単位で検索するクエリです。

新しいクエリが加わり次第、本リストも随時更新していきます。リクエストはコメントで受け付けており、時間の許す限り順次追加していく予定です。
このリストの読み方
Mediumがテーブル表示にネイティブ対応していないため(本来はテーブル形式が最適です)、可読性と見やすさのバランスを取って箇条書きでまとめています。
1行目は太字+斜体でファイル名、2行目にクエリの説明、その下に箇条書きで関連リンクを記載しています。
クエリ一覧
- billing_recommendation_per_query.sql
指定期間内の各クエリについて、定額料金プランとオンデマンド料金プランのどちらで実行する方が効率的かを判定し、推奨プランを返します。判定はスロット数とスキャンバイト数に基づいています。
- concurrent_queries_by_minute.sql
指定期間を1分単位の時系列で集計し、各時点で同時実行されていたクエリ数を返します。
- concurrent_queries_by_second.sql
指定期間を1秒単位の時系列で集計し、各時点で同時実行されていたクエリ数を返します。
- general_job_information.sql
指定期間内に実行された各ジョブの主要情報を抜粋して返します。
- load_job_information.sql
指定期間内に実行された各ロードジョブの概要情報を返します。
- load_slots_per_minute.sql
指定期間を1分単位の時系列で集計し、その時間帯に実行されたロードジョブが消費したスロット数を返します。
- load_slots_per_second.sql
指定期間を1秒単位の時系列で集計し、その時間帯に実行されたロードジョブが消費したスロット数を返します。
- longest_running_queries.sql
指定期間内に実行されたすべてのクエリと料金データを、実行時間の長い順に並べて返します。
- looker_job_information.sql
指定期間内にLookerのサービスアカウント経由で実行された各ジョブの概要情報を返します。
- query_counts.sql
指定期間内に実行されたすべてのクエリを、実行回数の多い順に並べて返します。
- query_job_information.sql
指定期間内に実行された各クエリジョブの概要情報を返します。
- query_slots_per_minute.sql
指定期間を1分単位の時系列で集計し、その時間帯に実行されたクエリジョブが消費したスロット数を返します。
- query_slots_per_second.sql
指定期間を1秒単位の時系列で集計し、その時間帯に実行されたクエリジョブが消費したスロット数を返します。
- slots_by_day.sql
指定期間を1日単位の時系列で集計し、その期間中に実行されたすべてのジョブが消費したスロット数を返します。
- slots_by_hour.sql
指定期間を1時間単位の時系列で集計し、その時間帯に実行されたすべてのジョブが消費したスロット数を返します。
- slots_by_minute.sql
指定期間を1分単位の時系列で集計し、その時間帯に実行されたすべてのジョブが消費したスロット数を返します。
- slots_by_minute_and_user.sql
指定期間を1分単位の時系列で集計し、その時間帯に実行されたすべてのジョブが消費したスロット数を、実行ユーザー別に集計して返します。
- slots_by_second.sql
指定期間を1秒単位の時系列で集計し、その時間帯に実行されたすべてのジョブが消費したスロット数を返します。
- table_query_counts.sql
指定期間内に各テーブルへアクセスしたジョブ数を返します。なお、いずれのジョブからも参照されなかったテーブルは結果に含まれません。
- top_billed_labels.sql
指定期間内のジョブに付与されたラベル別のコストを、コストの高い順に並べて返します。
- top_billed_queries.sql
指定期間内に実行されたクエリジョブを、課金額の高い順に並べて返します。
注意: 同じパラメータで複数回実行されたジョブが重複して含まれる場合があります。
- top_billed_queries_deduplicated.sql
指定期間内に実行されたクエリジョブを、課金額の高い順に並べて返します。
注意: このクエリは重複を排除し、ジョブごとに1行のみを返します。前述のクエリよりも実行時間がかなり長くなります。
- top_complex_queries.sql
クエリジョブを複雑度の高い順に並べて返します。ここでの複雑度とは、処理完了までに使用されたスロット数を指します。
- top_cost_users.sql
ジョブを実行したユーザーと、その利用コストをコストの高い順に並べて返します。注意: サービスアカウントも結果に含まれます。
- top_costly_queries.sql
指定期間内に実行されたクエリジョブについて、複数回実行分も合算した総コストを算出して返します。結果はコストの高い順に並びます。