Je rencontre des problèmes avec Stream Analytics Windowing. L'entrée de mon Job Stream Analytics est un flux d'événements contenant des mesures de température provenant de capteurs/entités appartenant à un signal. Chaque signal a environ 600 entités. Un exemple d'événement ressemblerait à ceci. Stream Analytics lit les valeurs de seuil pour chaque entité à partir d'un blob de données de référence qui ressemble à quelque chose comme ceci.Azure Stream Analytics Windowing
[{
"SignalId": "1",
"Entities": [{
"Id": 1,
"Threshold": 60
}, {
"Id": 2,
"Threshold": 108
}, {
"Id": 3,
"Threshold": 106
}]
}, {
"SignalId": "2",
"Entities": [{
"Id": 1,
"Threshold": 65
}, {
"Id": 2,
"Threshold": 120
}, {
"Id": 3,
"Threshold": 107
}]
}]
J'ai écrit un flux de requête Google Analytics pour filtrer l'événement et insérer une « alarme » dans une base de données SQL Azure si les valeurs de température sont supérieures à leurs seuils respectifs.
SELECT
e.SignalId AS SignalId,
e.EntityId AS EntityId,
e.Temperature AS AttrValue,
entities.ArrayValue.Threshold AS Threshold,
SYSTEM.TIMESTAMP AS EventTimestamp
INTO
output
FROM
eventhub e
JOIN
referenceblob b
ON
e.SignalId = b.SignalId
CROSS APPLY
GetElements(b.Entities) entities
WHERE
e.EntityId = entities.ArrayValue.Id
AND
e.Temperature > entities.ArrayValue.Threshold
Ce dont j'ai besoin maintenant est de mettre une fenêtre coulissante (je suppose) sur ce point. Je veux seulement créer une "Alarme" si la valeur de température pour une entité franchit son seuil respectif pendant une période de 1 heure. La ligne insérée doit contenir des données relatives au dernier événement de la fenêtre.
Je suis nouveau à Stream Analytics et T-SQL et, pour être honnête, je ne comprenais pas exactement comment fonctionnent les fonctions de fenêtrage. Voici mes questions ...
Si je reçois mauvais événements (où la température est supérieure au seuil) en continu pendant 30 minutes, puis obtenir un bon événement, est-il possible d'écrire une requête telle qu'une nouvelle fenêtre commence à partir du prochain mauvais événement?
Est-il possible de sélectionner des données pour le dernier événement dans la fenêtre? J'ai essayé d'utiliser LAST() et LAG() mais cela m'a donné une erreur de compilation disant "Impossible d'utiliser GROUP BY sans une fonction Aggregate". Le problème est que je n'ai pas besoin d'une fonction Aggregate uniquement les valeurs des derniers événements.
J'ai été bloqué sur ce problème pendant des jours et toute aide serait grandement appréciée.
De plus, ceci est ma première question alors s'il vous plaît pardonnez mon noobishness