変更履歴の操作
BigQuery の変更履歴を使用すると、BigQuery テーブルに対する変更の履歴を追跡できます。GoogleSQL の関数を使用すると、指定した期間内に行われた特定の種類の変更を確認し、テーブルに行われた増分変更を処理できます。テーブルに対する変更を把握することで、コストのかかるコピー操作を行わずに、BigQuery の外部のテーブル レプリカで増分を管理できます。
必要な権限
テーブルの変更履歴を表示するには、そのテーブルに対する bigquery.tables.getData 権限が必要です。この権限は、次の Identity and Access Management(IAM)事前定義ロールに含まれています。
roles/bigquery.dataViewerroles/bigquery.dataEditorroles/bigquery.dataOwnerroles/bigquery.admin
テーブルに行レベルのアクセス ポリシーがあるか、すでに設定されている場合は、テーブル管理者のみがテーブルの過去のデータにアクセスできます。bigquery.rowAccessPolicies.overrideTimeTravelRestrictions 権限は、テーブルに必要であり、roles/bigquery.admin IAM 事前定義ロールに含まれています。
テーブルに列レベルのセキュリティがある場合、アクセスできる列の変更履歴のみを表示できます。
変更履歴関数
テーブルの変更履歴を把握するには、次の関数を使用します。
APPENDS: 特定の期間にテーブルに追加されたすべての行を返します。次のオペレーションでは、
APPENDSの変更履歴に行が追加されます。CHANGES: 指定した期間にテーブル内で変更されたすべての行を返します。テーブルでCHANGES関数を使用するには、テーブルのenable_change_historyオプションをTRUEに設定する必要があります。次のオペレーションでは、
CHANGESの変更履歴に行が追加されます。CREATE TABLEDDL ステートメントINSERTDML ステートメントMERGEDML ステートメントの一部として追加または変更されたデータUPDATEDML ステートメントDELETEDML ステートメント- BigQuery へのデータの読み込み
- ストリーミング取り込み
TRUNCATE TABLEDML ステートメントWRITE_TRUNCATEのwriteDispositionで構成されたジョブ- 個々のテーブル パーティションの削除
料金と費用
変更履歴関数を呼び出すと、BigQuery コンピューティング費用が発生します。APPENDS 関数でも CHANGES 関数でも、指定された期間内にテーブルに書き込まれたすべてのデータを処理する必要があります。この処理は、追加オペレーションと変更オペレーションの両方を含むすべての書き込みに適用されます。テーブルの enable_change_history オプションを FALSE に設定しても、APPENDS で処理されるデータは減りません。
CHANGES 関数を使用するためにテーブルの enable_change_history オプションを TRUE に設定すると、BigQuery はテーブル変更メタデータを保存します。このメタデータの保存により、追加の BigQuery ストレージ費用と BigQuery コンピューティング費用が発生します。料金は、テーブルに加えた変更の数と種類によって異なりますが、通常は少額です。変更オペレーションが多いテーブル(特に大規模な削除)では、費用が大きくなる可能性が高くなります。