BigQuery テーブルの有効期限を設定する

BigQueryのテーブルには有効期限が設定できます

設定の2種類あります
  1. テーブルの有効期限 テーブルが作成されてから有効期限が過ぎるとテーブル自体が削除される 例) 有効期限を2023-02-03 14:00:00に設定すると、2023-02-03 14:00:00 (UTC)にテーブル自体が削除される
  2. パーティションの有効期限 パーティションの有効期限が過ぎるとパーティションが削除される 例) 有効期限を86400秒(3日)に設定すると、2023-02-05にパーティションの2023-02-02以前が削除される ※ちなみに2023-02-05以降に2023-02-02以前のデータを入れた場合、即時削除されます

テーブルの有効期限

bqコマンドでの設定
// 新規テーブルに有効期限を設定 (作成から3日後に削除される)
bq mk --expiration 86400 dataset.table --schema schema.json

// 既存テーブルに有効期限を設定
bq update --expiration 86400 dataset.table
// 既存テーブルの有効期限を解除したい場合は0を指定
bq update --expiration 0 dataset.table
Client Libraryでの設定(Python)
// 新規テーブルに有効期限を設定 (2023-02-27 14:00:00に削除される)
from google.cloud import bigquery
from datetime import datetime

client = bigquery.Client()
bq update
schema = [
    bigquery.SchemaField("timestamp", "TIMESTAMP", mode="REQUIRED"),
]

table_id = 'project_id.dataset.table'
table = bigquery.Table(table_id, schema=schema)

table.partitioning_type = 'DAY'
table.expires = datetime(2023, 2, 27, 14, 0, 0)
table = client.create_table(table)

パーティションの有効期限

bqコマンドでの設定
// 新規テーブルに有効期限を設定 (3日が経過したパーティションが削除される)
bq mk --time_partitioning_expiration 86400 dataset.table --schema schema.json

// 既存テーブルに有効期限を設定
bq update --time_partitioning_expiration 86400 dataset.table
// 既存テーブルの有効期限を解除したい場合は0を指定
bq update --time_partitioning_expiration 0 dataset.table
Client Libraryでの設定(Python)
// 新規テーブルに有効期限を設定
bq mk --time_partitioning_expiration 86400 dataset.table --schema schema.json

// 既存テーブルに有効期限を設定
bq update --time_partitioning_expiration 86400 dataset.table
// 既存テーブルの有効期限を解除したい場合は0を指定
bq update --time_partitioning_expiration 0 dataset.table
// 新規テーブルに有効期限を設定
from google.cloud import bigquery

client = bigquery.Client()

schema = [
    bigquery.SchemaField("timestamp", "TIMESTAMP", mode="REQUIRED"),
]

table_id = 'project_id.dataset.table'
table = bigquery.Table(table_id, schema=schema)

table.partitioning_type = 'DAY'
table.partition_expiration = 86400
table = client.create_table(table)
もしくは、
// 新規テーブルに有効期限を設定
from google.cloud import bigquery

client = bigquery.Client()

schema = [
    bigquery.SchemaField("timestamp", "TIMESTAMP", mode="REQUIRED"),
]

table_id = 'project_id.dataset.table'
table = bigquery.Table(table_id, schema=schema)
table.time_partitioning = bigquery.table.TimePartitioning(
                              type_ = 'DAY',
                              expiration_ms = 86400,
                         )

table = client.create_table(table)

コメント

このブログの人気の投稿

Cloud Schedulerは必ず実行されるわけではない

ChromebookでAndroidアプリをインストールする方法