テーブル スナップショットの概要
このドキュメントでは、BigQuery テーブル スナップショットの概要を紹介します。これは、テーブル スナップショットの作成、復元、更新、情報の取得、クエリなど、BigQuery テーブル スナップショットの操作方法を説明する一連のドキュメントの中の最初のドキュメントです。このドキュメント セットは、BigQuery と BigQuery テーブルをよく使用されている方を対象としています。
テーブル スナップショット
BigQuery テーブル スナップショットでは、特定の時点でのテーブルの内容(ベーステーブルと呼ばれます)が保持されます。現在のテーブルのスナップショットを保存することや、過去 7 日間の任意の時点におけるテーブルのスナップショットを作成することが可能です。テーブル スナップショットには、有効期限を設定できます。テーブル スナップショットを作成した後、構成した時間が経過すると、そのスナップショットは、BigQuery により削除されます。テーブル スナップショットでは、標準のテーブルと同じようにクエリを実行できます。テーブル スナップショットは読み取り専用ですが、テーブル スナップショットから標準テーブルを作成(復元)し、復元したテーブルを変更できます。
テーブル スナップショットを使用するメリットは、次のとおりです。
- レコードを 7 日間以上保持する。BigQuery のタイムトラベルでは、過去 7 日以内のテーブルのデータにのみアクセスできます。テーブル スナップショットを使用すると、指定した時点におけるテーブルのデータを必要な期間保持できます。 
- ストレージ費用を最小限に抑える。BigQuery では、スナップショットとベーステーブルで異なるバイトのみが保存されるため、通常、テーブル スナップショットでは、使用するストレージがテーブルの完全なコピーよりも少なくなります。 
テーブルの変更可能で軽量なコピーが必要な場合は、テーブル クローンの使用を検討してください。
テーブル スナップショットのアクセス制御
テーブル スナップショットのアクセス制御は、テーブルのアクセス制御と似ています。詳細については、IAM を使用してリソースへのアクセスを制御するをご覧ください。
テーブル スナップショットのクエリ
テーブル スナップショットのデータに対するクエリは、他のタイプの BigQuery テーブルに対するクエリと同じ方法で実行します。詳細については、BigQuery データのクエリをご覧ください。
ストレージの費用
テーブル スナップショットにはストレージ費用が適用されますが、BigQuery では、別のテーブルにまだ課金されていないテーブル スナップショットのデータに対してのみ課金されます。
- テーブル スナップショットを作成すると、最初はテーブル スナップショットのストレージ費用が発生しません。 
- テーブル スナップショットの作成後に新しいデータがベーステーブルに追加された場合、テーブル スナップショットでのそのデータの保存に対しては課金されません。 
- テーブル スナップショットにも存在するベーステーブル内のデータを変更または削除すると、次の料金が発生します。 - 変更または削除したデータのテーブル スナップショット ストレージに対して課金されます。 
- ベーステーブルが物理ストレージとして課金される場合、タイムトラベルとフェイルセーフの料金はベーステーブルに課金されません。スナップショットが削除されると、タイムトラベルとフェイルセーフに対して課金されます。 
- 変更または削除されたデータを含むスナップショットが複数ある場合は、最も古いスナップショットで使用されているストレージに対してのみ課金されます。 
 
- 同じリージョン内、あるいは単一リージョン / マルチリージョンから別のリージョンにテーブル スナップショットまたはクローンをコピーすると、テーブルの完全なコピーが作成されます。これにより、追加のストレージ費用が発生します。 
次の図に、ベーステーブルとテーブル スナップショットのストレージ料金の違いを示します。

詳細については、BigQuery のストレージの料金をご覧ください。
制限事項
- テーブル スナップショットは、ベーステーブルと同じリージョン内、同じ組織下に存在する必要があります。別のリージョンのデータセットを選択すると、BigQuery は、そのリージョンのターゲット データセットにテーブルのコピーを作成します。 
- テーブル スナップショットは読み取り専用で、スナップショットから標準テーブルを作成してデータを更新しない限り、テーブル スナップショットのデータは更新できません。説明、有効期限、アクセス ポリシーなど、テーブル スナップショットのメタデータのみ更新できます。 
- タイムトラベルの 7 日間制限により、7 日以内のテーブルデータのスナップショットのみ作成できます。 
- ビューやマテリアライズド ビューのスナップショットは作成できません。 
- 外部テーブルのスナップショットは作成できません。 
- テーブル スナップショットを作成する際に、既存のテーブルやテーブル スナップショットを上書きすることはできません。 
- 書き込みに最適化されたストレージ(ストリーミング バッファ)にデータがあるテーブルのスナップショットを作成する場合、書き込みに最適化されたストレージのデータはテーブル スナップショットに含まれません。 
- タイムトラベルのデータを含むテーブルのスナップショットを作成した場合、タイムトラベルのデータはテーブル スナップショットに含まれません。 
- パーティションの有効期限が設定されているパーティション分割テーブルのスナップショットを作成する場合、パーティションの有効期限情報はスナップショットで保持されません。スナップショット テーブルは、代わりに宛先データセットのデフォルトのパーティション有効期限を使用します。パーティションの有効期限情報を保持するには、代わりにテーブルをコピーします。 
割り当てと上限
テーブル スナップショットに適用される割り当てと上限については、テーブル スナップショットの割り当てと上限をご覧ください。
次のステップ
- テーブル スナップショットを作成する。
- テーブル スナップショットを復元する。
- テーブル スナップショットの説明、有効期限、またはアクセス ポリシーを更新する。
- スケジュールされたクエリを実行するサービス アカウントを使用して、テーブルのスナップショットを毎月作成する。
- データセット レベルでスナップショットを自動化する。