Cloud StorageからBigQueryに定期的にデータをロードする
目次
使用するマネージドサービス
Cloud Composerのようなワークフローを使用せずにCloud Storageにあるデータを毎日BigQueryにロードしたい時に Google BigQuery Data Transfer Service | Google BigQuery Data Transfer Service | Google Cloud を使用すると簡単にデータロードを行うことが出来ます。
データ準備
アイリスデータをダウンロード
アイリスデータを使用してBigQueryに取り込んで行きたいと思います。 GithubからCSV形式データをローカルPCにダウンロードしておきます。
$ wget https://raw.githubusercontent.com/pandas-dev/pandas/master/pandas/tests/data/iris.csv
データには1行目にカラムのヘッダーがあり、5カラム分のデータは保存されています。
- SpealLength : がく片の長さ
- SepalWidth : がく片の幅
- PetalLength : 花びらの長さ
- PetalWidth : 花びらの幅
- Name : あやめの種類
Cloud Storageにアイリスデータにアップロード
$ gsutil cp iris.csv gs://$BUCKET/iris_csv/YYYYMMDD/
BigQuery
テーブル作成
コマンドラインとWeb UIでテーブル作成を用意しておきましたので、どちらか一方の手段でテーブル作成してください。
コマンドライン
- gistsに使用するBigQueryのスキーマファイルを保存してあるのでローカルPCにダウンロードしておきます。
$ wget https://gist.githubusercontent.com/hirokiokumura/80059ca2cbfade4a2dd1ff3f1aadac49/raw/3d52234da05a50bd609b45a9b4bdf5afc32bd26a/iris_fields.json
$ bq mk --time_partitioning_type=DAY $DATASET.iris ./iris_fields.json
Web UI
BigQuery Data Transfer Service for Cloud Storage
画面遷移は[BigQuery] > [転送]から行います
Destination table
${run_time|"%Y%m%d"}
はData Transfer Serviceが実行した際に評価されてYYYYMMDD形式に変換されます
iris${run_time|"%Y%m%d"}
- Cloud Storage URI
$BUCKET
は適宜変更してください
gs://$BUCKET/iris_csv/{run_time|"%Y%m%d"}/iris.csv