การรวมกลุ่มที่แตกต่างกันตามประเภทเซนเซอร์สำหรับ ASA

ฉันมีอุปกรณ์ที่มีเซ็นเซอร์จำนวนมากซึ่งต้องการการรวมกลุ่มที่แตกต่างกัน และคำถามของฉันแบ่งออกเป็นสองส่วน อุปกรณ์สื่อสารผ่าน Azure IoT Hub ซึ่งจะไปที่ Azure Stream Analytics บน SQL DB และ Power BI

1) วิธีที่ดีที่สุดในการส่งข้อมูลคืออะไร? คอลัมน์สำหรับเซ็นเซอร์แต่ละตัว (เซ็นเซอร์ 1, เซ็นเซอร์ 2,.) และ DateTime หรือคอลัมน์สำหรับ DeviceId, DateTime, SensorNumber และ SensorValue ข้อมูลเพิ่มเติม เช่น ชื่อเซ็นเซอร์ ค่าทริกเกอร์ ฯลฯ จะถูกเพิ่มผ่านตารางอ้างอิง แนวทางเหล่านี้มีข้อดีหรือข้อเสียอะไรบ้าง?

2) การรวมบางรายการที่จำเป็นใน ASA คือ MAX และรายการอื่นๆ เป็น AVERAGE ซึ่งเปลี่ยนแปลงขึ้นอยู่กับประเภทเซ็นเซอร์ที่เชื่อมโยงกับแต่ละช่องของอุปกรณ์ผ่านตารางอ้างอิง ตัวอย่างเช่น เซ็นเซอร์ประเภท "สวิตช์" ต้องมีการรวม MAX ในขณะที่เซ็นเซอร์ประเภท "Temp" ต้องมีการรวม AVERAGE คุณสามารถเปลี่ยนประเภทการรวมกลุ่มจากอินพุตเดียว (IoTHub) และเอาต์พุตเดียว (SQL) โดยขึ้นอยู่กับฟิลด์ SensorType อื่นที่เชื่อมโยงผ่านตารางอ้างอิงได้หรือไม่

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม




คำตอบ (1)


  1. ควรใช้ SensorId, SensorValue เนื่องจากคุณอาจไม่มีค่าจากเซ็นเซอร์ทั้งหมดตลอดเวลา นอกจากนี้ เพย์โหลดจะไม่เปลี่ยนแปลงเมื่อคุณมีรหัสเซ็นเซอร์ใหม่
  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)
person Vignesh Chandramohan    schedule 18.06.2016
comment
ขอบคุณสำหรับวิเญชนั้น ฉันคิดว่านั่นจะเป็นการตั้งค่าที่เหมาะสมที่สุด แต่ต้องการความคิดเห็นอื่นเกี่ยวกับเรื่องนี้ ฉันเคยได้ยินมาว่ามีการใช้ทั้งสองวิธี แต่เมื่อฉันมีอุปกรณ์ที่แตกต่างกันและมีเซ็นเซอร์จำนวนต่างกันก็สมเหตุสมผล ขอขอบคุณที่แจ้งให้เราทราบวิธีเปลี่ยนการรวมตามค่าตารางอ้างอิง ทำได้ดี! - person BrentA; 19.06.2016