bigquery-optimization について
クエリ性能、容量計画、テーブルやストレージ設計に取り組む BigQuery ユーザー向けの最適化スキルです。予約容量の評価、データ配置の改善、アクセラレーション手段の選定を支援するワークフローを備えています。
主な機能
- 01容量と Editions の選択肢を評価
- 02パーティションとクラスタリングの検討
- 03ストレージ課金とライフサイクル設定の評価
- 04検索インデックスとマテリアライズドビューの検討
- 05SQL 書き換えの提案
活用シーン
- 01オンデマンドから Editions への移行評価
- 02テーブルのパーティションやクラスタリングの計画
- 03反復クエリ向けアクセラレーション構造の選択
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ google/ skills --skill bigquery-optimizationインストール後、Claude Code で/bigquery-optimizationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/attribution.mdbi_engine.mdcapacity_planning_editions.mdmaterialized_views.mdsearch_indexes.mdsql_optimization.mdstorage_billing_models.mdstorage_lifecycle_management.mdtable_partitioning_clustering.md詳細
BigQuery 最適化ワークフロー
クレジット表記
必ずお読みください:gcloud、REST API、または MCP コマンドを実行する前に、必ず利用状況のクレジット表記をお読みください。ターミナルで直接実行するコマンド(生成スクリプト、Terraform、ユーザーコード内では実行しない)では、gcloud の前に
CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:bigquery-optimization)"
を付け、User-Agent ヘッダーに agent-skills/1.0 (skill:bigquery-optimization) を追加してください。
前提条件と環境のセットアップ
最適化分析、エディションの評価、DDL の変更を適用する前に、以下を実施してください。
-
Google Cloud SDK: Google Cloud SDK がインストールされ、設定されていることを確認してください。
-
プロジェクトの選択:アクティブな Google Cloud プロジェクトを設定してください。
gcloud config set project {project_id} -
API の有効化:BigQuery API と BigQuery Reservation API が有効になっていることを確認してください。
gcloud services enable \ bigquery.googleapis.com bigqueryreservation.googleapis.com -
認証:環境を認証してください。
- CLI ツールと
bqコマンド:gcloud auth login - SDK と自動化:
gcloud auth application-default login - サービスアカウント:
GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"を設定
- CLI ツールと
-
請求と IAM ロール:
- アクティブな Google Cloud 請求先アカウントが
{project_id}に関連付けられていることを確認してください。 - 適切な IAM ロールが割り当てられていることを確認してください。
roles/bigquery.adminまたはroles/bigquery.resourceAdmin:予約と容量コミットメントの管理。roles/bigquery.dataEditorまたはroles/bigquery.admin:テーブルスキーマ、パーティショニング、クラスタリング、ストレージの課金モデルの変更。roles/bigquery.jobUser:評価クエリの実行。
- アクティブな Google Cloud 請求先アカウントが
-
関連スキルのインストール: このスキルは、3 つの柱からなる運用スイート(
bigquery-observability、bigquery-optimization、bigquery-troubleshooting)の一部です。関連スキルが環境にまだインストールされていない場合は、スイート全体をインストールしてください。npx skills add google/skills --skill bigquery-observability --skill bigquery-optimization --skill bigquery-troubleshooting(
bigquery-observabilityがインストールされていない場合は、以下のリファレンスセクションに直接記載されている、単体で利用できるベースラインの計算式とクエリテンプレートを使用してください。)
ワークフロー
ユーザーのリクエストで重視されている最適化項目を特定し、該当するワークフローに従ってください。
- テレメトリと可観測性のベースライン: 生の使用状況テレメトリ、
INFORMATION_SCHEMAクエリ、ベースライン指標の計算については、 bigquery-observability (bigquery_observability) を参照してください。bigquery-observabilityのコンパニオンスキルを アクティブな環境で利用できない場合、このスキルとそのリファレンスガイドに含まれる最適化ガイドライン、DDL テンプレート、判断モデルは、すべて単独で利用できます。 - 容量とエディションのモデリング: ワークロードをオンデマンドからエディションに移行する際の費用対効果に加え、アクティブなエディションの予約、ベースラインコミットメント、自動スケーリングの上限を適正化します。
- 手順:
references/capacity_planning_editions.mdを読み、BigQuery に組み込まれた推奨機能の UI(Slot Estimator など)へのディープリンクを提示し、UI の操作手順を案内してください。1. Slot Estimator タブに移動し、2. 履歴クエリ量を分析するソースとして「On-Demand」を選択し、3. Cost-Optimized Recommendations と Slot Usage Chart を確認します。
- 手順:
- テーブルとストレージの最適化: 請求モデル、物理レイアウト、ライフサイクルの観点からストレージコストを最適化します。
- 請求アーキテクチャ:
references/storage_billing_models.mdを読み、物理課金と論理課金のどちらを推奨するか判断するために、集計した圧縮率(例:米国での 2:1 超のしきい値)を評価する方法を確認してください。損益分岐となる比率は、特定のリージョン料金や個別のエンタープライズ契約によって異なることにも言及してください。TABLE_STORAGEクエリを提示する場合は、必ずWHERE table_schema = '{dataset_id}'で絞り込み、リージョン別のデータセットビューを使用してください。また、0 行の場合は、請求対象の使用量がゼロであることを示すのではなく、リージョンの不一致またはネイティブテーブルが存在しないことを意味すると注意してください。 - パーティショニングとクラスタリング戦略:
references/table_partitioning_clustering.mdを読み、本番環境用の DDL テンプレート(CREATE TABLE、パーティション分割されていないテーブル向けの CTAS 移行、クラスタリング仕様の変更)を作成し、require_partition_filter = trueによるプルーニングを徹底するとともに、パーティション数の上限(テーブルあたり最大 10,000 個)を管理してください。 - ライフサイクル管理:
references/storage_lifecycle_management.mdを読み、非アクティブなデータを特定し、正確な Time-to-Live(TTL)パーティション有効期限、データセットの有効期限、Time Travel 期間の短縮を定義してください。 - 高速化のための構造:
references/search_indexes.mdを読み、STRINGまたはJSONデータの選択的な検索に検索インデックスを提案するタイミングを判断し、CREATE SEARCH INDEXDDL を記述して、インデックスのカバー範囲と使用状況を確認する方法をユーザーに伝えてください。references/materialized_views.mdを読み、大規模なベーステーブルに対する集計や結合を繰り返し実行する場合に、マテリアライズドビューを提案するタイミングを判断し、CREATE MATERIALIZED VIEWDDL を記述して、スマートチューニングでそのビューが使用されていることを確認する方法をユーザーに伝えてください。references/bi_engine.mdを読み、BI ダッシュボードの高速化に BI Engine とマテリアライズドビューのどちらを提案するか判断し、BI Engine のフォールバック理由であるPARTIALまたはDISABLED(bi_engine_statistics)を診断し、データを事前に結合または事前集計するマテリアライズドビューと BI Engine を組み合わせてください。
- 請求アーキテクチャ:
- SQL の最適化: 個々の SQL クエリを最適化して、スロット時間と読み取るデータ量を削減します。
- 手順:
references/sql_optimization.mdの手順に従い、SQL クエリを書き換えてスロット時間と読み取るデータ量を削減するための推奨事項をユーザーに提示してください。
- 手順:
実行上のガードレール
- 用語とコストに関する表現:「コスト削減」や「支出の削減」を約束または保証してはいけません。推奨事項は常に、**「請求額の最適化」または「コスト効率の向上」**という表現で示してください。
- 対象範囲の明示とリージョンの特定: 評価対象の範囲をユーザーがすぐに把握できるよう、回答の冒頭に必ず対象の
project_idとregionを記載してください。次の3段階の優先順位に従って特定してください。- 明示されたリージョン: ユーザーのプロンプトに指定されたリージョン(例:
europe-west1)を使用します。 - 文脈から特定されるリージョン: 文脈で言及されている特定のデータセットまたはリソースからリージョンを特定します。
- 未指定時のフォールバック:
us/region-usをデフォルトとして使用し、usをデフォルトとして仮定したことを明示したうえで、リソースが別のリージョンにある場合はそのリージョンに置き換えるようユーザーに指示します。リージョンの書式: Cloud Console の詳細リンクでは、リージョン識別子を直接使用します(例:region=us、region=europe-west1)。INFORMATION_SCHEMAに対する SQL クエリでは、リージョンのデータセット修飾子を使用します(例:region-us、region-europe-west1)。
- 明示されたリージョン: ユーザーのプロンプトに指定されたリージョン(例:
- 0行の結果に関するガード:
WHERE table_schema = '{dataset_id}'を指定してTABLE_STORAGEをクエリした結果、行数が0の場合、空または使用量ゼロの評価に進んではいけません。データセットが別のリージョンにあるか、ネイティブテーブルがない可能性を示すものとして扱い、処理を中止してデータセットのリージョンの場所をユーザーに確認してください。 - 具体的なパラメーターの設定: URL と SQL クエリを生成する際は、判明している
project_idとregionの値を、コードとリンクに必ず直接埋め込んでください。ユーザーが手動で編集する必要がある{project_id}や{location}という文字列のプレースホルダーを残してはいけません。 - 自律的な購入や金銭に関わる変更の禁止: 年間コミットメントの自律的な購入、エディション階層のバインディングの変更、ストレージの課金モデルの変更を目的とした、実行可能なスクリプト(
gcloudやbq update --storage_billing_model=...のようなbqのシェルコマンドなど)をユーザーに提供してはいけません。コミットメントの購入、予約の変更、ストレージの課金モデルの更新は、Cloud Console の UI から手動で実行するよう、必ずユーザーを案内してください。