Есть ли способ рассчитать продолжительность в потоковой аналитике в случае изменения входного параметра? - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь рассчитать длительность сигнала (DI_1) от регистратора данных, который подключен к Azure IoT Hub и потоковой аналитике.

Входные данные выглядят следующим образом:

DateTime              Digital Input
22.04.2019 14:17:00        0
22.04.2019 14:16:00        1
22.04.2019 14:15:00        0
22.04.2019 14:14:00        0
22.04.2019 14:13:00        0
22.04.2019 14:12:00        0
22.04.2019 14:11:00        1
22.04.2019 14:10:00        1
22.04.2019 14:09:00        1
22.04.2019 14:08:00        1
22.04.2019 14:07:00        1
22.04.2019 14:06:00        0
22.04.2019 14:05:00        0
22.04.2019 14:04:00        0
22.04.2019 14:03:00        0
22.04.2019 14:02:00        1
22.04.2019 14:01:00        1
22.04.2019 14:00:00        0

И результат должен выглядеть следующим образом:

DateTime               Duration
22.04.2019 14:16:00    00:01:00
22.04.2019 14:07:00    00:05:00
22.04.2019 14:01:00    00:02:00

Есть ли у кого-нибудь идеи, как реализовать это в Azure Stream Analytics?

на данный момент выход ASA представляет собой набор данных со временем и цифровым входом(1 или 0) при изменении цифрового входа.

DateTime              Digital Input
22.04.2019 14:17:00        0
22.04.2019 14:16:00        1
22.04.2019 14:15:00        0
22.04.2019 14:14:00        1
22.04.2019 14:13:00        0
22.04.2019 14:12:00        1

реализовано со следующим кодом:

SELECT 
  PE, UID, system.timestamp AS Time,
  GetArrayElement(GetArrayElement(Record,0), 3) AS DI_0
INTO
   [PowerBI]
FROM
   [IoTHub]
WHERE
LAG(GetArrayElement(GetArrayElement(Record,0), 3), 1) 
OVER (LIMIT DURATION(minute, 10)) <> GetArrayElement(GetArrayElement(Record,0), 3)

Здесь я должен рассчитать разницу во времени в PowerBI.Теперь я хочу рассчитать его напрямую в Azure Stream Analytics, чтобы избежать вычислений в PowerBI.

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 23 апреля 2019

Я только что решил:

SELECT
   UID,
   GetArrayElement(GetArrayElement(Record,0),3) AS DI_0,
   system.timestamp AS Start
FROM
   [IotHub]
WHERE
   LAG(GetArrayElement(GetArrayElement(Record,0), 3),1)
   OVER (LIMIT DURATION(minute, 10)) <> 
   GetArrayElement(GetArrayElement(Record,0), 3))

SELECT   
   DATEDIFF (second, LAG(system.timestamp,1)
   OVER (LIMIT DURATION(minute, 10)), system.timestamp) AS zeitdiff,
   UID, Start, DI_0
INTO
   [toPowerBI]
FROM
   Startzeit 
WHERE
   UID = 'WISE-4012_00D0C9E43D10'

enter image description here

...