Google Cloud Dataflowハンズオンの復習メモ

## 経緯

昨日参加させて頂いた[GCPの勉強会](https://gcpug-shonan.connpass.com/event/87314/)で、Dataflowのハンズオンをしていた際、
プロジェクトIDにバケットIDを設定して実行してしまったのが原因か、Dataflowがエラーで止まったままだったので、
復習がてらプロジェクトの作成からDataflowの実行までやり直してみました。

## 構築

#### 補足

[your_project_id]と[your_backet]にはそれぞれ任意のプロジェクト名(ID)とバケット名を設定

#### プロジェクト新規作成

プロジェクトの選択から新しいプロジェクトを選択する

![スクリーンショット 2018-05-27 10.03.38.png](https://qiita-image-store.s3.amazonaws.com/0/25578/b80c7561-6504-393f-692a-e76acea33cbb.png)

下記を設定及び選択して、作成を選択する

* プロジェクト名:[your_project_id]

![スクリーンショット 2018-05-27 10.09.39.png](https://qiita-image-store.s3.amazonaws.com/0/25578/9559525f-74cc-b9f5-1784-dbfe29adb35f.png)

ダッシュボードから作成したプロジェクトを選択する

![スクリーンショット 2018-05-27 10.10.17.png](https://qiita-image-store.s3.amazonaws.com/0/25578/d7575586-b142-e981-feb5-c35c1669fbfa.png)

#### バケット新規作成

ナビゲーションメニューのストレージからStorageを選択し、ブラウザを表示する

![スクリーンショット 2018-05-27 10.10.48.png](https://qiita-image-store.s3.amazonaws.com/0/25578/ad8bf83b-f029-375d-19b2-1b828c1b3e8d.png)

バケットの作成を選択する

![スクリーンショット 2018-05-27 10.12.40.png](https://qiita-image-store.s3.amazonaws.com/0/25578/080e569a-4197-1901-88cb-6514e730a284.png)

下記を設定及び選択して作成を実施する

* 名前:[your_backet]
* デフォルトのストレージクラス:Multi-Regional
* 場所:アジア

![スクリーンショット 2018-05-27 10.23.48.png](https://qiita-image-store.s3.amazonaws.com/0/25578/f63f2892-4025-0259-2136-8e39f9aa4f30.png)

#### BigQueryのデータセット作成

ナビゲーションメニューのビッグデータからBigQueryを選択する

![スクリーンショット 2018-05-27 10.29.54.png](https://qiita-image-store.s3.amazonaws.com/0/25578/a15d0b74-4bd2-9168-6c2b-436fda760deb.png)

プロジェクト名の横の三角からCreate new datasetを選択し、下記設定値でOKを選択する

* Dataset ID:chigasaki_opendata
* Data location:unspecifled
* Data expiration:Never

![スクリーンショット 2018-05-27 10.47.41.png](https://qiita-image-store.s3.amazonaws.com/0/25578/0b194697-86ec-21bc-ab3f-a005d0bedc5a.png)

## 実行

ナビゲーションメニューのビッグデータからDataflowを選択する

![adc828fa-f6ab-d924-51f6-9a618fac7e24.png.png](https://qiita-image-store.s3.amazonaws.com/0/25578/cd0ca33a-bfce-dfd1-e68b-fb3dcbb1446c.png)

#### Cloud Dataflow APIの有効化

ナビゲーションメニューのAPIとサービスからダッシュボードを選択する

<img width="494" alt="スクリーンショット 2018-05-29 19.10.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/25578/a52938b3-a46c-f273-0245-4e5ae7f0cad1.png">

APIとサービスを検索からCloud Dataflow APIを検索する

<img width="1345" alt="スクリーンショット 2018-05-29 19.11.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/25578/8c2edbfe-52b6-642e-d3b3-9246ddd26933.png">

Cloud Dataflow APIを有効にする

<img width="1344" alt="スクリーンショット 2018-05-29 19.13.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/25578/e0ec2c98-2d69-0602-8e53-c0763e100584.png">

有効になったら、Google Cloud Shellを起動し、コマンドを実行していく

![スクリーンショット 2018-05-27 11.05.55のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/25578/b83aeb1b-1b7d-8eef-ea14-9a8d5fed50f3.png)

#### 必要資材のコピー

下記コマンドを実行し、ハンズオン用のスキーマとCSV、udfをコピーする

```
gsutil cp gs://gcpug-shonan-vol27/schema.json gs://[your_backet]/gcs-to-bigquery/bigquery-schema/
gsutil cp gs://gcpug-shonan-vol27/jinkounosuii_3004.csv gs://[your_backet]/gcs-to-bigquery/input/
gsutil cp gs://gcpug-shonan-vol27/udf.js gs://[your_backet]/gcs-to-bigquery/udf/
```

#### Dataflowの実行

下記コマンドを実行し、テンプレートエンジンの作成及び実行を実施する

```
gcloud beta dataflow jobs run text-to-bigquery \
    --gcs-location gs://dataflow-templates/latest/GCS_Text_to_BigQuery \
    --parameters javascriptTextTransformFunctionName=transform,JSONPath=gs://[your_backet]/gcs-to-bigquery/bigquery-schema/schema.json,javascriptTextTransformGcsPath=gs://[your_backet]/gcs-to-bigquery/udf/udf.js,inputFilePattern=gs://[your_backet]/gcs-to-bigquery/input/jinkounosuii_3004.csv,outputTable='[your_project_id]:chigasaki_opendata.jinkounosuii',bigQueryLoadingTemporaryDirectory=gs://[your_backet]/gcs-to-bigquery/temp \
    --staging-location gs://[your_backet]/gcs-to-bigquery/staging
```

## 確認

うごいた。。

![スクリーンショット 2018-05-27 11.16.28.png](https://qiita-image-store.s3.amazonaws.com/0/25578/d4339b7b-a4f7-823f-26f4-68b3ac98aafc.png)

データも見れる様子。。

![スクリーンショット 2018-05-27 12.59.17.png](https://qiita-image-store.s3.amazonaws.com/0/25578/d6f6122c-249a-d853-354e-92796fb4d75f.png)

## 結果

エラーが解消出来てスッキリしました。
また、他の記事書いてる方はプロジェクトIDとパケット名マスクしてたので真似してみましたが、意味があるのかはちょっと謎です。

## 参考

* [GCPUG Shonan vol.27 feat.Dataflow](https://gcpug-shonan.connpass.com/event/87314/)添付資料