初めに
何故、Google Cloud PlatformのIoT Coreを使用するか。
自宅でセンシングしたデータをサーバレスでWEBから表示出来るようにしたかったため。
何故、GoogleCloudPlatformか。
Google Cloud Next Tokyo'17に参加して興味を持ったため。
目標
Pub/Subでメッセージを公開して、Dataflow経由でBigQueryにデータを入れるところまでやってみます。
前提
2017年11月時点の情報です。
使用するまでの手順
1.BigQueryを有効にしデータセットを作成する
GCPのコンソールでビッグデータのBigQueryを選択する。プロジェクト名の右にある▼を押して、データセットを作成する。
入力内容は以下の通り。
フィールド | 入力内容 |
---|---|
Dataset ID | (適当なID) |
Data location | US |
Data expiration | Never |
2.データセット内にテーブルを作成する
先ほど作成したデータセットの右にある+を押します。
入力内容は以下の通り。
フィールド | 入力内容 |
---|---|
Source Data | Create Source Table |
Destination Table | |
Table name | (適当なテーブル名) |
Table type | Native table |
Schema | (スキーマは後述) |
Options | |
Partitioning | None |
スキーマは以下の通り。入力したらAdd Fieldを押してください。
Name | Type | Mode |
---|---|---|
TEST_MESSAGE | STRING | NULLABLE |
最後にCreate Tableボタンを押します。
3.バケットを作成する
GCPのコンソールでストレージのStrageを選択し、バケットを作成します。APIを有効化するか問われたら有効化します。
一時的に使用する領域になります。入力内容は以下の通り。
フィールド | 入力内容 |
---|---|
名前 | (適当なバケット名) |
デフォルトのストレージ クラス | Regional |
Regional のロケーション | us-central1 |
最後に作成を押します。
4.Dataflowを有効にする
GCPのコンソールでビッグデータのDataflowを選択し、テンプレートからジョブの作成を押します。APIを有効化するか問われたら有効化します。
5.ジョブを作成する
次に、ジョブを作成します。テンプレートからジョブを作成を押して以下の通り入力します。
フィールド | 入力内容 |
---|---|
ジョブ名 | (適当なジョブ名) |
Table name | (適当なテーブル名) |
Cloud Dataflow リージョン エンドポイント | us-central1 |
Cloud Dataflow テンプレート | PubSub to BigQuery |
パラメータ | |
Cloud Pub/Sub input topic | projects/(プロジェクトID)/topics/(Pub/SubのトピックID) |
BigQuery output table | (プロジェクトID):(データセットID).(テーブル名) |
一時的なロケーション | gs://(先ほど作成したバケット名)/temp |
最後にジョブの実行を押します。
6.メッセージを公開してBigQueryにデータが入っているか確認する
Pub/Subコンソールのトピックに移動し、メッセージの公開を押します。。
メッセージに以下の通り入れて公開を押します。
{"TEST_MESSAGE":"これはメッセージです。"}
BigQueryのコンソールに移動し、SELECT *なQueryを発行するとデータが入っていることが確認できます。
終わりに
Dataflowにテンプレートが用意されていたので簡単にPub/SubからBigQueryへデータを流し込むことができました。また、WEBコンソールだけで実装できるのは楽でいいですね。
数値型や日付型等への型変換をどこで実施するのかが気になるところです。
次回はBigQueryに入れたデータをDataStudioで見たいと思います。