0

여러 종류의 집계가 필요한 센서가있는 기기가 있는데 두 가지가 있습니다. 장치는 Azure IoT 허브를 통해 통신하고 Azure Stream Analytics는 SQL DB 및 Power BI로 이동합니다.ASA 용 센서 유형별 집계

1) 데이터를 전송하는 가장 좋은 방법은 무엇입니까? DeviceId, DateTime, SensorNumber 및 SensorValue에 대한 각 센서 (sensor1, sensor2 ,.) 및 DateTime 또는 Column의 열? 센서 이름, 트리거 값 등과 같은 추가 정보는 참조 테이블을 통해 추가됩니다. 이러한 접근법의 장단점은 무엇입니까?

2) ASA에 필요한 일부 집계는 MAX이며 다른 것은 참조 테이블을 통해 장치의 각 채널에 연결된 센서 유형에 따라 달라지는 평균입니다. 예를 들어 센서 유형 "스위치"에는 MAX 집계가 필요하고 센서 유형 "온도"에는 AVERAGE 집계가 필요합니다. ref 테이블을 통해 링크 된 다른 SensorType 필드에 따라 하나의 입력 (IoTHub)과 하나의 출력 (SQL)으로 집계 유형을 변경할 수 있습니까?

도움을 주시면 감사하겠습니다.

답변

0
  1. 모든 센서의 값이 항상 없기 때문에 SensorId, SensorValue를 사용하는 것이 좋습니다. 또한 새로운 sensorId가있을 때 페이로드가 변경되지 않습니다.
  2. 참조 데이터로 수행 할 수 있습니다. 그러나 다른 집계의 경우 평균 및 최대 값을 항상 계산할 수 있으며 SQL 쪽 또는 전원 양면의 센서 유형을 기반으로 적절한 값을 선택할 수 있습니다.

단순한 집계 유형보다 복잡한 경우 참조 데이터가 더 좋습니다. 참조 데이터로 수행 할 수있는 방법은 다음과 같습니다.

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) 
+0

Vignesh에 감사드립니다. 가장 적절한 설정이라고 생각했지만 다른 의견을 원했습니다. 나는 두 가지 접근 방법을 모두 사용하고 있다고 들었다. 그러나 센서의 수가 다른 여러 장치가있는 곳에서는 의미가있다. 참조 테이블 값을 기준으로 집계를 변경하는 방법을 알려 주셔서 감사합니다. 잘 작동합니다! – BrentA