{GCP BigQuery}Cloud Storage の転送

 

https://cloud.google.com/bigquery/docs/cloud-storage-transfer?hl=ja

 

BigQuery Data Transfer Service for Cloud Storage コネクタでは、
Cloud Storage から 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-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-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

 

-- 2. BigQuery API 、BigQuery Data Transfer API の有効化


gcloud services list --enabled

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

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


-- 3. バケットの作成


gcloud storage buckets create gs://bucket99999999 \
--default-storage-class=Standard \
--no-enable-autoclass \
--location=us \
--public-access-prevention \
--uniform-bucket-level-access

gcloud storage ls


-- 4. ファイルのアップロード


echo test > test.csv
gcloud storage cp test.csv gs://bucket99999999

gcloud storage ls --long gs://bucket99999999/*

 

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

CREATE SCHEMA ds01;

SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
order by schema_name
;

 


-- 6. 宛先テーブルを作成

CREATE TABLE ds01.tab1
(
  col1 STRING
)
;


select * from ds01.tab1;


-- 7. Cloud Storage の転送を設定する


bq mk \
--transfer_config \
--project_id=project01-9999999 \
--data_source=google_cloud_storage \
--display_name=ts01 \
--target_dataset=ds01 \
--params='{"data_path_template":"gs://bucket99999999/*.csv",
"write_disposition":"MIRROR",
"destination_table_name_template":"tab1",
"file_format":"CSV",
"max_bad_records":"0",
"ignore_unknown_values":"false",
"field_delimiter":",",
"skip_leading_rows":"0",
"allow_quoted_newlines":"true",
"allow_jagged_rows":"false",
"delete_source_files":"false"}' 


※登録するとトランスファーが始まる

bq ls --transfer_config --transfer_location=us

select * from ds01.tab1;


-- 8. 手動で転送をトリガーする

bq ls --transfer_config --transfer_location=us

echo hoge > test.csv
gcloud storage cp test.csv gs://bucket99999999

gcloud storage ls --long gs://bucket99999999/*


bq mk \
--transfer_run \
--run_time='2024-11-10T00:50:00+09:00' \
projects/111111111111/locations/us/transferConfigs/11111111-1111-1111-1111-111111111111

※run_timeの値に関係なく、実行したタイミングでトランスファーが始まる

 

bq ls --transfer_config --transfer_location=us


select * from ds01.tab1;

 


-- 9. クリーンアップ

 


gcloud projects list

gcloud projects delete project01-9999999 -q


gcloud beta billing projects unlink project01-9999999