{GCP BigQuery}マテリアライズド ビューの作成

 

https://cloud.google.com/bigquery/docs/materialized-views-create?hl=ja

 

ベーステーブルが変更されると、バックグラウンドでマテリアライズド ビューが再計算されます。

BigQuery は、事前に計算されたマテリアライズド ビューの結果を利用し、可能な場合にはベーステーブルからの差分のみを読み取って最新の結果を計算します。

 


-- 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データセットを作成する

CREATE SCHEMA ds01;

SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
order by schema_name
;

 


-- 4. テストテーブルの作成


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

CREATE TABLE ds01.tab2
(
  col1 INT64
, col2 INT64
)
;

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

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

insert into ds01.tab1 values(1,11);
insert into ds01.tab1 values(1,12);
insert into ds01.tab1 values(2,13);
insert into ds01.tab1 values(2,14);
insert into ds01.tab1 values(3,15);
insert into ds01.tab1 values(3,16);

insert into ds01.tab2 values(1,10);
insert into ds01.tab2 values(2,100);
insert into ds01.tab2 values(3,1000);

 

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

-- 5. マテリアライズド ビューを作成する

CREATE MATERIALIZED VIEW  ds01.mv1 AS (
  SELECT
    t1.col1 AS col1
  , SUM(t2.col2 * t1.col2) AS col2
  FROM ds01.tab1 AS t1
  INNER JOIN ds01.tab2 AS t2
  ON t1.col1 = t2.col1
  GROUP BY t1.col1
);

 


select * from ds01.mv1;


insert into ds01.tab1 values(3,17);
select * from ds01.mv1;

 

bq ls --format=pretty ds01

 

-- 6. クリーンアップ

 

gcloud projects list

gcloud projects delete project01-9999999 \
--quiet