Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans cet article, vous allez découvrir comment créer une logique de traitement de flux pour collecter des données à partir d’appareils IoT (Internet des objets). Vous allez recourir à un cas d’utilisation réel de l’IoT pour découvrir comment générer votre solution rapidement et à moindre coût.
Prérequis
- Créez un abonnement Azure gratuit.
- Téléchargez des exemples de fichiers de requête et de données à partir de GitHub.
Scénario
Entreprise du secteur de l’automatisation industrielle, Contoso a automatisé son processus de fabrication. Les machines de cette usine possèdent des capteurs capables de générer des flux de données en temps réel. Dans ce scénario, un responsable d’atelier de production souhaite obtenir des informations en temps réel à partir des données des capteurs pour rechercher des modèles et effectuer des actions sur ceux-ci. Vous pouvez utiliser le langage de requête Stream Analytics (SAQL, Stream Analytics Query Language) sur les données des capteurs pour rechercher des modèles intéressants à partir du flux de données entrant.
Dans cet exemple, les données sont générées à partir d’un appareil Texas Instruments SensorTag. La charge utile des données est au format JSON, comme le montre l’exemple d’extrait de code suivant :
{
"time": "2016-01-26T20:47:53.0000000",
"dspl": "sensorE",
"temp": 123,
"hmdt": 34
}
Dans un scénario réel, des centaines de capteurs de ce type pourraient générer des événements sous forme de flux. Dans l’idéal, un appareil de passerelle exécuterait du code pour transmettre ces événements à Azure Event Hubs ou Azure IoT Hubs. Votre travail Stream Analytics ingérerait ces événements depuis Event Hubs ou IoT Hubs et exécuterait des requêtes d’analytique en temps réel sur les flux. Vous pourriez ensuite envoyer les résultats à l’une des sorties prises en charge.
Pour plus de convivialité, ce guide de mise en route fournit un exemple de fichier de données capturé à partir de balises de capteur réelles. Vous pouvez exécuter des requêtes sur les exemples de données et afficher les résultats. Dans les tutoriels suivants, vous allez découvrir comment connecter votre travail aux entrées et sorties et le déployer sur le service Azure.
Création d’un travail Stream Analytics
Accédez au portail Azure.
Dans le menu de navigation de gauche, sélectionnez Tous les services, Analytics, placez le curseur sur Travaux Stream Analytics, puis sélectionnez Créer.
Sur la page Nouveau travail Stream Analytics, procédez comme suit :
Pour Abonnement, sélectionnez votre abonnement Azure.
Pour Groupe de ressources, sélectionnez un groupe de ressources existant ou créez-en un.
Pour Nom, entrez un nom unique pour le travail Stream Analytics.
Sélectionnez la région dans laquelle vous souhaitez déployer le travail Stream Analytics. Utilisez le même emplacement pour votre groupe de ressources et toutes les ressources pour augmenter la vitesse de traitement et réduire les coûts.
Sélectionnez Revoir + créer.
Dans la page Vérifier + créer, passez en revue les paramètres, puis sélectionnez Créer.
À l’issue du déploiement, sélectionnez Accéder à la ressource pour vous rendre à la page Travail Stream Analytics de votre travail Stream Analytics.
Création d’une requête Azure Stream Analytics
Une fois le travail créé, écrivez une requête. Vous pouvez tester des requêtes sur des exemples de données sans connecter une entrée ou une sortie à votre tâche.
Téléchargez HelloWorldASA-InputStream.json à partir de GitHub.
Dans la page Travail Azure Stream Analytics du portail Azure, dans le menu de gauche, sélectionnez Requête sous Topologie de la tâche.
Dans la fenêtre de requête, entrez la requête suivante.
SELECT * INTO youroutputalias FROM yourinputalias
Dans le volet du bas, sélectionnez successivement Charger l’exemple d’entrée, le fichier
HelloWorldASA-InputStream.json
que vous avez téléchargé, puis OK.Notez qu’un aperçu des données est automatiquement renseigné dans la table Aperçu de l’entrée.
Requête : Archiver vos données brutes
La forme de requête la plus simple est une requête directe qui archive toutes les données d’entrée dans sa sortie désignée. Cette requête est la requête par défaut renseignée dans une nouvelle tâche Azure Stream Analytics.
Sélectionnez Tester la requête sur la barre d’outils.
Examinez les résultats sous l’onglet Résultats des tests dans le volet du bas.
Requête : Filtrer les données en fonction d’une condition
Mettons à jour la requête pour filtrer les résultats selon une condition. Par exemple, la requête suivante affiche les événements qui proviennent de sensorA
.
Mettez à jour la requête à partir de l’exemple suivant :
SELECT time, dspl AS SensorName, temp AS Temperature, hmdt AS Humidity INTO youroutputalias FROM yourinputalias WHERE dspl='sensorA'
Sélectionnez Tester la requête pour voir les résultats de la requête.
Requête : Alerte déclenchant un flux de travail métier
Nous allons maintenant affiner notre requête. Pour chaque type de capteur, nous souhaitons surveiller la température moyenne par fenêtre de 30 secondes et afficher les résultats uniquement si la température moyenne se situe au-dessus de 100 degrés.
Mettez à jour la requête comme ceci :
SELECT System.Timestamp AS OutputTime, dspl AS SensorName, Avg(temp) AS AvgTemperature INTO youroutputalias FROM yourinputalias TIMESTAMP BY time GROUP BY TumblingWindow(second,30),dspl HAVING Avg(temp)>100
Sélectionnez Tester la requête pour voir les résultats de la requête.
Les résultats doivent contenir uniquement 245 lignes et répertorier les noms des capteurs pour lesquels la température moyenne est supérieure à 100 degrés. Dans cette requête, nous avons regroupé le flux d’événements en fonction du champ dspl, qui correspond au nom du capteur, et par valeur Intervalle de temps de 30 secondes. Les requêtes temporelles doivent indiquer le mode de calcul du temps. À l’aide de la clause TIMESTAMP BY, vous avez spécifié la colonne OUTPUTTIME pour associer les valeurs de temps avec l’ensemble des calculs temporels. Pour obtenir des informations détaillées, consultez Gestion du temps et Fonctions de fenêtrage.
Requête : Détection de l’absence d’événements
Comment écrire une requête pour rechercher une absence d’événements d’entrée ? Déterminons à quel moment un capteur a envoyé des données pour la dernière fois et qu’il n’a pas envoyé d’événements dans les 5 secondes qui suivaient.
Mettez à jour la requête comme ceci :
SELECT t1.time, t1.dspl AS SensorName INTO youroutputalias FROM yourinputalias t1 TIMESTAMP BY time LEFT OUTER JOIN yourinputalias t2 TIMESTAMP BY time ON t1.dspl=t2.dspl AND DATEDIFF(second,t1,t2) BETWEEN 1 and 5 WHERE t2.dspl IS NULL
Sélectionnez Tester la requête pour voir les résultats de la requête.
Ici, nous utilisons une jointure LEFT OUTER sur le même flux de données (jointure réflexive). Pour une jointure INNER, un résultat n’est renvoyé que si une correspondance est trouvée. Par contre, pour une jointure LEFT OUTER, si un événement du côté gauche de la jointure n’a pas de correspondance, une ligne contenant la valeur NULL pour toutes les colonnes de la ligne de droite est renvoyée. Cette technique est utile pour rechercher une absence d’événements. Pour plus d'informations, consultez JOIN.
Conclusion
L’objectif de cet article est de montrer comment écrire différentes requêtes en langage de requête Stream Analytics et afficher les résultats dans le navigateur. Cependant, cet article vise simplement à vous aider à démarrer. Stream Analytics prend en charge diverses entrées et sorties et peut même utiliser des fonctions dans Azure Machine Learning pour en faire un outil robuste pour l’analyse de flux de données. Pour en savoir plus sur la méthode à suivre pour écrire des requêtes, voir Exemples de requête pour les modes d’utilisation courants dans Stream Analytics.