{GCP BigQuery}テーブル スナップショットの作成


https://cloud.google.com/bigquery/docs/table-snapshots-create?hl=ja


-- 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 mk ds02
bq ls


-- 4. テーブル スナップショットを作成する

CREATE TABLE ds01.tab1
(
  col1 INT64
, col2 DATE
);


insert into ds01.tab1 values(1,CURRENT_DATE);
select * from ds01.tab1;

 

CREATE SNAPSHOT TABLE ds02.snap01 CLONE ds01.tab1;

select * from ds02.snap01;
insert into ds02.snap01 values(2,CURRENT_DATE);

→ Table project01-9999999:ds02.snap01 is a snapshot, and snapshots are immutable.

SELECT * FROM ds02.INFORMATION_SCHEMA.TABLE_SNAPSHOTS;

 

-- 5. スナップショットから書き込み可能なテーブルを作成する

CREATE OR REPLACE TABLE ds01.tab2 CLONE ds02.snap01;

select * from ds01.tab2;
insert into ds01.tab2 values(3,CURRENT_DATE);
select * from ds01.tab2;
truncate table ds01.tab2;
select * from ds01.tab2;


-- 6. テーブル スナップショットをコピーする

CREATE SNAPSHOT TABLE ds02.snap02 CLONE ds02.snap01;

select * from ds02.snap02;

-- 7. テーブル スナップショットの削除

DROP SNAPSHOT TABLE ds02.snap01;


-- 8. テーブル クローン(書き込み可能なスナップショット)を作成する

CREATE TABLE ds01.clone01 CLONE ds01.tab1;

select * from ds01.clone01;
insert into ds01.clone01 values(4,CURRENT_DATE);
select * from ds01.clone01;
truncate table ds01.clone01;
select * from ds01.clone01;

 

CREATE TABLE ds01.clone02 CLONE ds02.snap02;

select * from ds01.clone02;
insert into ds01.clone02 values(5,CURRENT_DATE);
select * from ds01.clone02;
truncate table ds01.clone02;
select * from ds01.clone02;

 

-- 9. クリーンアップ


gcloud projects list

gcloud projects delete project01-9999999 \
--quiet