## 前回まで
前回は、IoT platformとECSを構築し、ECSが送信したデータをIoT platformが受信できるところまでを確認した。
今回は、IoTplatformが受信したデータをTableStoreに格納するまでの流れを説明する。
前回の記事
AlibabaCloud IoTPlatformにおけるデータの流れを理解する① -デバイスからIoT Platformにデータを送信する-
環境構築順序の続き
続いて、TableStoreを構築する。
マネジメントコンソールの**[Table Store]→[インスタンスを作成]を選択する。
ポップアップが出るので、[インスタンス名]と[インスタンスの説明]を入力して[OK]を選択。[インスタンスタイプ]**は今回高性能インスタンスを選択した。
しばらく待つと作成したTableStoreが表示されるので、インスタンス名をクリック。
今回はVPCにバインドしないので、[テーブルの作成]を選択し、[テーブル名],**[プライマリキー]を入力して、[OK]**を選択。
これで、TableStoreの設定は完了。
##IoT Platform→TableStoreのデータ連携設定
ルールの作成(データの処理)
ここまで出来たら、いよいよIoTPlatform→TableStoreのデータ連携設定を行う。
マネジメントコンソールで**[IoTPlatform]→[ルールエンジン]→[ルールの作成]**を選択。
データ型はJSON型を選択。
次に、SQLの作成。
ここが難しい!(少なくとも自分は理解に時間がかかりました・・・。)
作成したるルール名を選択し、**[SQLの作成]**を選択。
データ取得方法のTipsは「AlibabaCloud IoTPlatformにおけるデータの流れを理解する③」で詳しく説明しようと思う。
ここでは、まずTableStoreにデータを転送することを目的としているので、必要最小限の設定のみ行っている。
詳細なSQLの記載方法は、公式サイト参照に詳しく書かれている。
-
フィールド
:受信したデータから、抽出したいフィールドを選択。今回は * として全部抽出した。 -
Topic
:トピックとは、プロダクト単位に定義されるデータ格納場所だと思ってもらえればいい。デバイスから受信したデータはトピックに格納される。ここで、クイックスタートからダウンロードできるモジュールを使ってデータを送信した場合、そのデータは**/sys/${productKey}/${deviceName}/thing/event/property/post
に格納される。なお、/sys/${productKey}/${deviceName}/thing/event/property/post
**は プロパティを報告するデバイス用のトピックである。IoT Platformのトピックについては、公式サイトを参照のこと。また、システム定義されたトピックについてはこちらにまとまっている。 -
条件
:ここには、抽出すべきデータの抽出条件を記載する。今回はとりあえずすべて抽出するので設定していない。
以上で説明したフィールド
、トピック
、条件
の関係は下図のイメージである。
ルールの作成(データ転送)
最後にデータ転送の設定だ。
**[操作の追加]**を選択し、ポップアップに下記を入力。
対処方法の選択
:Table Storeに保存
リージョン
:格納したいTableStoreのリージョン指定
データシート
格納したいTableStoreのデータシート名を指定
プライマリキー
:データシートまで記入すると、PKが保管されるのでPKに格納する値を設定する。
${}
で囲むことで変数として定義できる。囲まない場合は固定値になる。今回はまず転送できることを確認したいので、固定値を入力。
ここまで出来たら、ルールエンジンを開始する。
##データ連携の確認
**[マネジメントコンソール]から、[TableStore]→[インスタンス名]→[テーブル名]→[データエディタ]を選択。
これで、デバイスから送信されたデータがTableStoreに格納されているのが分かる。
なお、データ転送の設定でPKを1として設定したので、デバイスから送られたデータはPKが1のレコードを常に上書きし続けている。
また、[データ]**を選択すれば、データの内容が表示できる。
(少し長いがすべて記載。)
{
"primaryKeys":[
{
"columnName":"id",
"type":"INTEGER",
"value":"1"
}
],
"columns":[
{
"columnName":"deviceName",
"columnUnits":[
{
"value":"AR863hEI5qa63F8BpQKV",
"type":"STRING",
"timestamp":1566281030798
}
]
},
{
"columnName":"deviceType",
"columnUnits":[
{
"value":"None",
"type":"STRING",
"timestamp":1566281030798
}
]
},
{
"columnName":"gmtCreate",
"columnUnits":[
{
"value":"1566281030787",
"type":"STRING",
"timestamp":1566281030798
}
]
},
{
"columnName":"iotId",
"columnUnits":[
{
"value":"AR863hEI5qa63F8BpQKV000100",
"type":"STRING",
"timestamp":1566281030798
}
]
},
{
"columnName":"items",
"columnUnits":[
{
"value":"{"Status":{"time":1566281030789,"value":1},"Data":{"time":1566281030789,"value":"Hello, world!"}}",
"type":"STRING",
"timestamp":1566281030798
}
]
},
{
"columnName":"productKey",
"columnUnits":[
{
"value":"a1qZJMZC4UT",
"type":"STRING",
"timestamp":1566281030798
}
]
},
{
"columnName":"requestId",
"columnUnits":[
{
"value":"58",
"type":"STRING",
"timestamp":1566281030798
}
]
}
]
}
次回に向けて
今回は、デバイスからIoT Platformを経由してTableStoreにデータを格納するところまでを説明した。
次回はこの環境を使って、データの加工方法やデータの項目追加方法、SQLでのデータ抽出方法などに関するTipを、データの流れを意識しながら説明する。