BigQueryテーブルを作成する際には、データのソース、テーブルの識別情報、スキーマ、そしてパフォーマンスとコスト効率を高めるための各種設定を行います。

1. テーブルの作成元 [必須]
どのような方法でテーブルを作成し、データをロードするかを指定します。
| 空のテーブル | スキーマを定義し、空のテーブルを作成します。後でデータをロードします |
| アップロード | ローカルファイル(CSV, JSONL, Parquet, ORCなど)から直接データをアップロードしてテーブルを作成します |
| Cloud Storage | Cloud Storageバケットに保存されたファイルからデータをロードしてテーブルを作成します |
| ドライブ | Google Driveに保存されたファイルからデータをロードしてテーブルを作成します |
| Google Bigtable | Google Cloud BigtableインスタンスのデータをBigQueryの外部テーブルとして参照します |
| Amazon S3 | Amazon S3バケットに保存されているデータをBigQueryの外部テーブルとして参照します。これは「BigQuery Omni」という機能の一部です。BigQuery Omniは、BigQueryの分析エンジンがGoogle Cloud外(AWSやAzure)のデータを直接クエリできるサービスです |
| Azure Blob Storage | Azure Blob Storageに保存されているデータをBigQueryの外部テーブルとして参照します。これも「BigQuery Omni」による機能です |
| 既存のテーブル / ビュー | 既存のBigQueryテーブルまたはビューのスキーマとデータ(選択した場合)をコピーして、新しいテーブルを作成します |
2. プロジェクト [必須]
テーブルを作成するGoogle CloudプロジェクトのIDです
3. データセット [必須]
テーブルを作成するデータセットのIDです。データセットは、関連するテーブルをまとめる論理的なグループです。
既存のデータセットから選択するか、または新しいデータセットを作成することができます。
4. テーブル [必須]
作成するテーブルの一意な名前です。
用途
SQLクエリでテーブルを指定する際に使用します(例: project_id.dataset_id.table_id)
5. テーブルタイプ (Table type)
作成するテーブルの具体的な種類を指定します
| ネイティブテーブル | BigQueryのマネージドストレージにデータを保存する標準的なテーブルです |
| 外部テーブル | BigQueryのストレージではなく、Cloud Storageなどの外部ソースにデータが保存されているテーブルです。BigQueryは外部ソースを直接参照します |
6. Apache Iceberg 用の BigQuery テーブルを作成する
このオプションは、BigQueryがApache Iceberg形式のテーブルと連携するためのものです。Apache Icebergは、大規模なデータレイクのためのオープンソースのテーブル形式です
用途
Cloud StorageなどのデータレイクにIceberg形式で保存されたデータをBigQueryから直接クエリしたい場合に選択します。これにより、BigQueryの強力な分析機能とデータレイクの柔軟性を組み合わせることができます。
注意点
通常のBigQueryのネイティブテーブルとは異なり、外部ストレージにIceberg形式でデータが格納されていることを前提とします。
7. テキストとして編集
テーブルのスキーマをJSON形式のテキストとして直接入力・編集できるようにします。
用途
多数の列がある場合や、複雑なデータ型(STRUCT, ARRAY)を含むスキーマを定義する場合に便利です。手動でフィールドを追加するよりも効率的です。
8. パーティショニング設定
大規模なテーブルのデータを、指定した列の値や取り込み時間に基づいて、より小さなセグメント(パーティション)に分割します。これにより、クエリのパフォーマンスを向上させ、コストを削減できます。
| パーティショニングなし | テーブル全体が1つのまとまりとして扱われます。小規模なテーブルに適しています |
| 取り込み時間により分割 | BigQueryにデータがロードされた日付に基づいてテーブルをパーティション分割します。タイムスタンプ列がないデータにも適用できます |
| フィールドにより分割 | テーブル内のフィールドに基づいてパーティション分割します |
パーティショニングフィルタ – データのクエリでWHERE句を必須にする
このオプションを有効にすると、このパーティション分割されたテーブルにクエリを実行する際に、必ずパーティション列(または取り込み時間)をWHERE句で指定することを強制します。
パーティショニングタイプ
パーティションの細かさ(粒度)を指定します。日次、月次、年次、または時間ごとのパーティションなど。
9. クラスタリングの順序
テーブル内のデータを1つ以上の列(クラスタリング列)に基づいて物理的に並べ替える機能です。
用途
- クエリパフォーマンスの向上:
WHERE句でクラスタリング列を使用するクエリのパフォーマンスが向上します。BigQueryは、不要なブロックを読み取らずに、関連するデータブロックに直接アクセスできます。 - コスト削減: スキャンするデータ量が減るため、クエリのコストを削減できます。

