{GCP BigQuery}クラスタ化テーブルの作成と使用

 

https://blog.g-gen.co.jp/entry/bigquery-paritioning-and-clustering
https://cloud.google.com/bigquery/docs/creating-clustered-tables?hl=ja


BigQuery のクラスタ化テーブルは、クラスタ化列を使用したユーザー定義の列並べ替え順序があるテーブルです。

クラスタ化テーブルは、テーブルを変更する各オペレーションのコンテキストの中で並べ替えプロパティを維持します。
クラスタ化列でフィルタや集計を行うクエリは、テーブルやテーブル パーティション全体ではなく、
クラスタ化列に基づいて関連するブロックのみをスキャンします。


最大 4 つのクラスタ化列を指定できます。

 

-- 1. 前作業

gcloud init
gcloud auth list

gcloud --version

gcloud projects create project01-9999999 \
--name="project01"

gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-southeast1 --quiet
gcloud config set compute/zone asia-southeast1-a --quiet

gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111

gcloud services enable compute.googleapis.com --project project01-9999999

gcloud components update


-- 2. BigQuery API有効化

gcloud services list --enabled


gcloud services enable bigquery.googleapis.com \
--project project01-9999999

 

-- 3. BigQueryデータセットを作成する

bq mk ds01

bq ls

 

-- 4. クラスタ化テーブルの作成


CREATE TABLE ds01.tab1
(
col1 STRING,
col2 NUMERIC
)
CLUSTER BY col1
OPTIONS (
description = 'a description of tab1');


CREATE TABLE ds01.tab2
(
col1 STRING,
col2 NUMERIC
)
CLUSTER BY col1,col2
OPTIONS (
description = 'a description of tab2');

 

 

-- 5. 動作確認

select * from ds01.INFORMATION_SCHEMA.TABLES
order by table_name
;

select * from ds01.INFORMATION_SCHEMA.TABLE_OPTIONS
order by table_name
;


SELECT *
FROM ds01.INFORMATION_SCHEMA.COLUMNS
order by table_name,column_name
;

 

truncate table ds01.tab1;
truncate table ds01.tab2;


insert into ds01.tab1 values('X',100);
insert into ds01.tab2 values('Y',200);


select * from ds01.tab1;
select * from ds01.tab2;

 


-- 6. クリーンアップ


gcloud projects list

gcloud projects delete project01-9999999 \
--quiet