0

さまざまな種類の集約を必要とする多くのセンサーを備えたデバイスがあり、私の質問は 2 つの部分に分かれています。デバイスは、Azure IoT Hub を介して通信し、Azure Stream Analytics から SQL DB および Power BI に移動します。

1) データを送信する最良の方法は何ですか? 各センサー (センサー 1、センサー 2 など) の列と、DateTime または DeviceId、DateTime、SensorNumber、および SensorValue の列? センサー名、トリガー値などの詳細情報は、参照テーブルを介して追加されます。これらのアプローチの長所と短所は何ですか?

2) ASA で必要な集計には、MAX と AVERAGE があります。これは、参照テーブルを通じてデバイスの各チャネルにリンクされているセンサー タイプに応じて変化します。たとえば、センサー タイプ「Switch」には MAX 集計が必要ですが、センサー タイプ「Temp」には AVERAGE 集計が必要です。ref テーブルを介してリンクされた別の SensorType フィールドに応じて、集計タイプを 1 つの入力 (IoTHub) から 1 つの出力 (SQL) に変更できますか?

どんな助けでも大歓迎です。

4

1 に答える 1

0
  1. すべてのセンサーから常に値を取得できるとは限らないため、SensorId、SensorValue を使用することをお勧めします。また、新しい sensorId を取得しても、ペイロードは変更されません。
  2. 参照データでそれを行うことは可能です。ただし、それが単なる別の集計である場合は、平均と最大の両方を常に計算し、SQL 側または Power BI 側のセンサー タイプに基づいて適切なものを選択することもできます。

単なる集計の種類よりも複雑な場合は、参照データの方が適しています。参照データを使用してそれを行う方法は次のとおりです

create table iotInput
(
    SensorId nvarchar(max),
    SensorValue bigint,
    Measurementtime datetime
)

create table refData
(
    SensorId nvarchar(max),
    IsMaxAggregate bigint
)

select
    System.Timestamp [Aggregationtime],
    iotInput.SensorId,
    refData.IsMaxAggregate,
    case when refData.IsMaxAggregate = 1 
        then max(iotInput.SensorValue) 
     else 
        avg(iotInput.SensorValue) end [Aggregate]
from
    iotInput timestamp by [MeasurementTime]
join
    refData
on
    iotInput.SensorId = refData.SensorId
group by
    iotInput.SensorId,
    refData.IsMaxAggregate,
    tumblingwindow(second,5)
于 2016-06-18T20:03:21.550 に答える