Définir une requête pour sélectionner, filtrer et agréger des données

Effectué

Après avoir défini les entrées et sorties de votre tâche Azure Stream Analytics, vous pouvez définir une requête pour traiter les données entrantes d’une entrée et écrire les résultats dans une sortie.

Sélection des champs d’entrée

L’approche la plus simple pour ingérer des données de streaming dans Azure Synapse Analytics consiste à capturer les valeurs de champ requises pour chaque événement à l’aide d’une requête SELECT...INTO, comme illustré ici :

SELECT
    EventEnqueuedUtcTime AS ReadingTime,
    SensorID,
    ReadingValue
INTO
    [synapse-output]
FROM
    [streaming-input] TIMESTAMP BY EventEnqueuedUtcTime

Conseil

Lorsque vous utilisez une sortie Azure Synapse Analytics pour écrire les résultats dans une table dans un pool SQL dédié, le schéma des résultats générés par la requête doit correspondre à la table dans laquelle les données doivent être chargées. Vous pouvez utiliser des clauses AS pour renommer des champs, et les convertir en types de données alternatifs (compatibles) si nécessaire.

Filtrage des données d’événement

Dans certains cas, vous pouvez filtrer les données de façon à inclure uniquement des événements spécifiques en ajoutant une clause WHERE. Par exemple, la requête suivante écrit des données uniquement pour les événements ayant une valeur de champ ReadingValue négative.

SELECT
    EventEnqueuedUtcTime AS ReadingTime,
    SensorID,
    ReadingValue
INTO
    [synapse-output]
FROM
    [streaming-input] TIMESTAMP BY EventEnqueuedUtcTime
WHERE ReadingValue < 0

Agrégation d’événements sur des fenêtres temporelles

Un modèle courant pour les requêtes de streaming consiste à agréger des données d’événement sur des intervalles temporels (basés sur le temps), également appelés fenêtres. Pour ce faire, vous pouvez utiliser une clause GROUP BY qui inclut une fonction Window définissant le type de fenêtre que vous souhaitez définir (par exemple bascule, récurrente ou glissante).

Conseil

Pour plus d’informations sur les fonctions de fenêtre, consultez Présentation des fonctions de fenêtrage de Stream Analytics dans la documentation d’Azure Stream Analytics.

L’exemple suivant regroupe des lectures de capteur de streaming dans des fenêtres bascules d’une minute (série, sans chevauchement), en enregistrant l’heure de début et de fin de chaque fenêtre et la lecture maximale pour chaque capteur. La clause HAVING filtre les résultats de façon à inclure uniquement les fenêtres où au moins un événement s’est produit.

SELECT
    DateAdd(second, -60, System.TimeStamp) AS StartTime,
    System.TimeStamp AS EndTime,
    SensorID,
    MAX(ReadingValue) AS MaxReading
INTO
    [synapse-output]
FROM
    [streaming-input] TIMESTAMP BY EventEnqueuedUtcTime
GROUP BY SensorID, TumblingWindow(second, 60)
HAVING COUNT(*) >= 1

Conseil

Pour plus d’informations sur les modèles de requête courants, consultez Modèles de requête courants dans Azure Stream Analytics dans la documentation d’Azure Stream Analytics.