BigQuery データ分割における2つの設計思想 データエンジニアリングのための構造的理解と選択のガイド シャーディング(日付シャードテーブル) 個別のテーブルとして保存された日付ごとのデータ。物理的に分散。 table_20230101 table_20230102 table_20230103 パーティション分割(パーティションテーブル) 単一のテーブル内で論理的に分割されたデータ。内部的に構造化。 Partition 2023-01-01 Partition 2023-01-02 Partition 2023-01-03
スキャン量を抑え、コストを削るという共通の目的 データを日付などの単位で小さく切り分ける クエリのスキャン量を物理的に制限し、無駄なコストを削る アプローチ A: シャーディング アプローチ B: パーティション分割
シャーディング:毎日増殖する独立したデータコンテナ 構造 日付ごとに「完全に独立した別々のテーブル」を大量に量産する方式。 実態 毎日「独立した箱」が1つずつ増え続ける。 GA4のエクスポートデータはこの方式を採用 events_20260601 events_20260602 events_20260603
パーティション分割:見えない壁でスライスされた巨大な単一空間 構造 テーブル自体は「1つの巨大な箱」。内部が日付ごとに見えない壁でスライスされている方式。 実態 テーブル名は1つだけ。その中に各日付の「部屋」が内包される。 events_partitioned 2026-06-01の部屋 2026-06-02の部屋
構造・管理・クエリから見る特性の完全比較 シャーディング パーティション分割 裏側の構造 独立した複数のテーブル 単一テーブル内のスライス 管理方法 テーブル数が日々増加し、全体像の把握が煩雑化 1つの巨大なテーブルとして、シンプルに一元管理 SQLの書きやすさ _TABLE_SUFFIX 等を用いた複雑なワイルドカード指定が必要 通常の WHERE 句(日付条件)で直感的に記述可能
現代のデータパイプラインが向かうべき標準アーキテクチャ どちらもコスト削減の目的は達成するが、単一テーブルのシンプルさ、管理の容易さ、直感的なクエリ記述の観点から、「パーティション分割」が現代の標準的な選択である。 シャーディングは、GA4のデフォルトエクスポートなど、特定のシステム連携における制約として理解しておく。 events_partitioned 2026-06-01の部屋 2026-06-02の部屋 アーキテクチャを理解し、最適なクエリを設計する。