iothubデータをSQLデータベースにプッシュするストリーム分析クエリを作成しようとしています。ストリーム解析クエリでデバイスデータからEnqueuedTime device_idを取得する
MY IOTHUBデータは、以下のとおりです。
{
"Device_Id":"P371602011",
"kWL1":11.683551775144204,
"EventProcessedUtcTime":"2017-12-28T07:21:14.3829760Z",
"PartitionId":0,
"EventEnqueuedUtcTime":"2017-12-28T07:21:04.6660000Z",
"IoTHub":
{
"MessageId":null,
"CorrelationId":null,
"ConnectionDeviceId":"iotclient",
"ConnectionDeviceGenerationId":"636500361000571958",
"EnqueuedTime":"2017-12-28T07:21:04.0540000Z",
"StreamId":null
}
}
ここで、Device_Id、kWL1、およびEnqueuedTimeをSQLデータベースに書き込もうとしています。 My Streamの分析クエリは次のようになります。私はストリーム分析ジョブを実行すると
SELECT
Device_Id AS PowerScout,
IoTHub.EnqueuedTime AS [ReadingTime],
kWL1 AS [kW L1]
INTO
[DataBase]
FROM
[IoTHub]
、私はDEVICE_IDとkWL1値を参照してくださいすることができますが、EnqueuedTimeはNULLとして表示されます。 IOTHubデータからEnqueuedTimeを取得する方法。
{
"DeviceData": [
{
"Device_Id": "5",
"AMPSL1": 1.2515641182178531E-38
}
],
"EventEnqueuedUtcTime": "2018-01-08T05:03:08.0840000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "VHW1",
"ConnectionDeviceGenerationId": "636509839893748612",
"EnqueuedTime": "2018-01-08T05:03:06.7460000Z",
"StreamId": null
}
}
上記の形式でDevice_IdとAMPSL1を取得するにはどうすればよいですか。ご提供INFOMATIONからアドバンス
{ "DeviceData":[{ "DEVICE_ID": "5"、 "AMPSL1":1.2515641182178531E-38 }]、 "EventEnqueuedUtcTime":「2018-01-08T05: 03:08.0840000Z " "IoTHub":{ "のMessageId":ヌル、 "CorrelationIdを":ヌル、 "ConnectionDeviceId": "VHW1"、 "ConnectionDeviceGenerationId": "636509839893748612"、 "EnqueuedTime":" 2018-01-08T05:03:06.7460000Z "、 " StreamId ":null } } 上記のフォーマットでDevice_Id&AMPSL1を取得するにはどうすればよいですか? –
@krishnabhについては、このブログ([ストリームアナリティクスクエリのJson配列の処理]を参照してください(https://blogs.msdn.microsoft.com/streamanalytics/2016/02/23/handling-json-array-in-stream- analytics-query /))。私はそれがあなたに役立つと思います。あなたは、このクエリコマンドを試すことができます。 AS DeviceDataCollection WITH ( 入力 0)DeviceData として GetArrayElement(DeviceDataを、SELECT) SELECT はDeviceData.Device_Id、DeviceDataCollection –
こんにちはマイケル、 FROM DeviceData.AMPSL1 私はDevice_Id&AMPSL1を取得することができますが、IoTHub.EnqueuedTime AS [TimeStamp]のような他の値が同じクエリで不足しています。 DeviceDataCollection AS( SELECT GetArrayElement(DeviceData、0)DeviceData、 Iothub.EnqueuedTime として入力 FROM) SELECT DeviceData.Device_Id WITH、:私はDEVICE_ID&AMPSL1とEnqueuedTime –