模擬問題集 › GCP-PDE › 練習問題 5

GCP-PDE 練習問題 5|分析のためのデータの準備と利用

Professional Data Engineer・無料公開(全 200 問中 15 問を無料公開中)

問題
あなたはチームの BigQuery インスタンスを監視し、最適化しています。大規模な JOIN 操作を使用する特定の日次レポートが、一貫して遅いことに気づきました。JOIN 内の潜在的なパフォーマンスのボトルネックを特定するために、クエリの実行計画をできるだけ迅速に調べたいと考えています。どうすればよいですか?

選択肢と解説

  • 1
    bq query --dry_run コマンドを使用して、読み取られる推定バイト数を確認し、クエリ構文を確認する。
  • 2
    INFORMATION_SCHEMA.JOBS_BY_PROJECT ビューに対して job_ID でフィルタするクエリを実行し、total_bytes_processed を分析する。
  • 3
    Cloud Logging で BigQuery の監査ログを確認する。
  • ✓
    BigQuery の Query History ビューを活用し、実行グラフを分析する。

解説

【正解】D

【0からの解説】
①前提知識:BigQuery はクエリを受け取ると、それを複数の「ステージ」(読み取り・集計・結合・シャッフルなど)から成る実行計画(クエリプラン)に分解し、多数のワーカー(スロット)で並列に処理します。各ステージにどれだけ時間がかかったか、どれだけの行が入出力されたか、待機・読み取り・計算・書き込みのどこに時間を使ったか、といった情報はジョブの統計情報として記録されます。Google Cloud コンソールでは、この情報を「クエリ実行グラフ」として図示でき、ジョブ履歴(個人の履歴/プロジェクトの履歴、元問題でいう Query History)から対象ジョブを開き「実行グラフ」タブを選ぶだけで、ステージ間のつながりと各ステージの詳細(ステップ、スロット時間、シャッフル量など)を確認できます。さらに、スロットの競合、シャッフル割り当て不足、データの偏り(スキュー)といった「パフォーマンス分析情報(クエリ インサイト)」も表示されます。
②要件と制約語の整理:(1) 大規模な JOIN を含むレポートが遅い、(2) 「実行計画」を調べて JOIN 内のボトルネックを特定したい、(3) 「できるだけ迅速に」=追加の仕組みやクエリを用意せず、すぐに見られる方法が望ましい。
③正解の理由:ジョブ履歴から実行グラフを開けば、既に実行済みの日次レポートのジョブについて、JOIN ステージでの入出力行数の急増(行の爆発)、特定ワーカーへの偏り、シャッフルの大きさなどを、追加の準備なしでその場で視覚的に確認できます。実行計画そのものを最短で確認できるのはこの方法です。

【誤りの選択肢】
A:--dry_run(ドライラン)はクエリを実際には実行せず、構文チェックと処理予定バイト数の見積もりを返すだけです。実行されないためステージごとの所要時間や JOIN での行の増減といった実行時の情報は得られず、JOIN のボトルネックは特定できません。
B:INFORMATION_SCHEMA.JOBS_BY_PROJECT はジョブのメタデータを SQL で調べられる便利なビューですが、選択肢の内容は total_bytes_processed(処理したバイト数の合計)を見るだけです。ジョブ全体の合計値ではどのステージ、どの JOIN が遅いのかは分からず、実行計画の分析にはなりません。クエリを書いて結果を解釈する手間もかかり、「できるだけ迅速に」という条件にも劣ります。
C:監査ログ(Cloud Audit Logs)は「誰が・いつ・何をしたか」を記録するためのもので、ログにジョブ統計の一部が含まれることはあっても、実行計画を見やすく分析する用途ではありません。ログを検索して読み解く手間がかかり、実行グラフを開くより明らかに遅く非効率です。

【参考】
クエリプランとタイムライン
クエリのパフォーマンス分析情報を取得する
← 練習問題 4練習問題 6 →
GCP-PDE の模擬問題集は全 200 問

本番形式の練習テスト 4 回を、試験モード/演習モードで受験できます。 全問に解説付き、ドメイン別の弱点分析にも対応。模試プラン(月額 ¥980)からご利用いただけます。

GCP-PDE の模試を受ける料金プランを見る

GCP-PDE の無料公開問題

問題 1問題 2問題 3問題 4問題 5問題 6問題 7問題 8問題 9問題 10問題 11問題 12問題 13問題 14問題 15