BigQueryのテーブルには有効期限が設定できます
設定の2種類あります
- テーブルの有効期限
テーブルが作成されてから有効期限が過ぎるとテーブル自体が削除される
例) 有効期限を2023-02-03 14:00:00に設定すると、2023-02-03 14:00:00 (UTC)にテーブル自体が削除される
- パーティションの有効期限
パーティションの有効期限が過ぎるとパーティションが削除される
例) 有効期限を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)
コメント
コメントを投稿