BigQueryでパーティションテーブルを作成するときに使うDDLをよく忘れるのでまとめようと思う。
1, 日付パーティション(DATE型の列を使用)
-- 1. 日付パーティション(DATE型の列を使用)
CREATE OR REPLACE TABLE my_project.example_dataset.daily_sales_partition
PARTITION BY DATE(event_date)
AS
SELECT * FROM source_table;
DATE(event_date)で、event_date列がDATE型指定
このパーティションは、日付単位で分割
2, 日時パーティション(TIMESTAMP型の列を使用)
-- 2. 日時パーティション(TIMESTAMP型の列を使用)
CREATE OR REPLACE TABLE my_project.example_dataset.event_logs_timestamp_partition
PARTITION BY TIMESTAMP_TRUNC(event_timestamp, DAY)
AS
SELECT * FROM source_table;
TIMESTAMP_TRUNC(event_timestamp, DAY)でevent_timestamp列をTIMESTAMP型で日単位にパーティション化、パーティション単位はHOUR、DAY、WEEK、MONTH、YEARなど指定可能
3, 整数範囲パーティション(INTEGER型の列を使用)
-- 3. 整数範囲パーティション(INTEGER型の列を使用)
CREATE OR REPLACE TABLE my_project.example_dataset.customer_segments_partition
PARTITION BY RANGE_BUCKET(customer_id, GENERATE_ARRAY(1, 100, 10))
AS
SELECT * FROM source_table;
customer_id列を整数範囲でパーティション化
GENERATE_ARRAY(1, 100, 10)により、1から100までの範囲を10ごとに分割する例
これは今のところあまり使い所がなかった