Zpracování datových proudů IoT v reálném čase pomocí Azure Stream Analytics
V tomto článku se dozvíte, jak vytvořit logiku zpracování datových proudů pro shromažďování dat ze zařízení Internetu věcí (IoT). Pomocí skutečného případu použití Internetu věcí (IoT) předvedete, jak rychle a hospodárně sestavit řešení.
Požadavky
- Vytvořte bezplatné předplatné Azure.
- Stáhněte si ukázkové soubory dotazů a datových souborů z GitHubu.
Scenario
Contoso, společnost v oblasti průmyslové automatizace, automatizovala svůj výrobní proces. Stroje v továrně společnosti mají snímače, které dokáží vysílat datové proudy v reálném čase. V tomto scénáři chce manažer provozovny v reálném čase získávat informace na základě dat ze senzorů, hledat jejich pomocí různé vzorce a na jejich základě provádět potřebné akce. Pomocí jazyka SAQL (Stream Analytics Query Language) můžete nad daty snímačů najít zajímavé vzory z příchozího datového proudu.
V tomto příkladu se data vygenerují ze zařízení se značkou snímače Texas Instruments. Datová část dat je ve formátu JSON, jak je znázorněno v následujícím ukázkovém fragmentu kódu:
{
"time": "2016-01-26T20:47:53.0000000",
"dspl": "sensorE",
"temp": 123,
"hmdt": 34
}
V podobném scénáři z reálného prostředí by se jednalo o stovky podobných snímačů generujících události jako datový proud. V ideálním případě by bylo také nainstalováno nějaké zařízení sloužící jako brána k odesílání událostí do služby Azure Event Hubs nebo Azure IoT Hubs. Vaše úloha Stream Analytics by tyto události ingestovala ze služby Event Hubs nebo IoT Hubs a spouštěla na streamy analytické dotazy v reálném čase. Poté můžete výsledky odeslat do jednoho z podporovaných výstupů.
Pro snadnější použití tato příručka Začínáme poskytuje soubor ukázkových dat, která byla zaznamenána skutečnými zařízeními SensorTag. Na těchto ukázkových datech můžete spouštět dotazy a zobrazit výsledky. V dalších kurzech se naučíte připojit úlohu ke vstupům a výstupům a nasadit je do služby Azure.
Vytvoření úlohy Stream Analytics
Přejděte na Azure Portal.
V levé navigační nabídce vyberte Všechny služby, vyberte Analytics, najeďte myší na úlohy Stream Analytics a pak vyberte Vytvořit.
Na stránce Nová úloha Stream Analytics postupujte takto:
V části Předplatné vyberte své předplatné Azure.
V části Skupina prostředků vyberte existující skupinu prostředků nebo vytvořte skupinu prostředků.
Do pole Název zadejte jedinečný název úlohy Stream Analytics.
Vyberte oblast , ve které chcete nasadit úlohu Stream Analytics. Použijte stejné umístění pro skupinu prostředků a všechny prostředky, abyste zvýšili rychlost zpracování a snížili náklady.
Vyberte Zkontrolovat a vytvořit.
Na stránce Zkontrolovat a vytvořit zkontrolujte nastavení a vyberte Vytvořit.
Po úspěšném nasazení vyberte Přejít k prostředku a přejděte na stránku úlohy Stream Analytics pro vaši úlohu Stream Analytics.
Vytvoření dotazu služby Stream Analytics
Po vytvoření úlohy napište dotaz. Dotazy můžete testovat s ukázkovými daty bez připojení vstupu nebo výstupu k úloze.
Stáhněte si soubor HelloWorldASA-InputStream.json z GitHubu.
Na stránce úlohy Azure Stream Analytics v Azure Portal v nabídce vlevo v části Topologie úlohy vyberte Dotaz.
Vyberte Nahrát ukázkový vstup, vyberte
HelloWorldASA-InputStream.json
soubor, který jste stáhli, a vyberte OK.Všimněte si, že v tabulce Náhled vstupu se automaticky vyplní náhled dat.
Dotaz: Archivace nezpracovaných dat
Nejjednodušším typem dotazu je průchozí dotaz, který archivuje veškerá vstupní data do definovaného výstupního umístění. Tento dotaz je výchozí dotaz vyplněný v nové úloze Azure Stream Analytics.
V okně Dotaz zadejte následující dotaz a pak na panelu nástrojů vyberte Testovat dotaz .
SELECT * INTO youroutputalias FROM yourinputalias
Prohlédněte si výsledky na kartě Výsledky testu v dolním podokně.
Dotaz: Filtrování dat na základě podmínky
Pojďme aktualizovat dotaz tak, aby filtruje výsledky na základě podmínky. Například následující dotaz zobrazuje události, které pocházejí z sensorA
.
Aktualizujte dotaz pomocí následující ukázky:
SELECT time, dspl AS SensorName, temp AS Temperature, hmdt AS Humidity INTO youroutputalias FROM yourinputalias WHERE dspl='sensorA'
Pokud chcete zobrazit výsledky dotazu, vyberte Testovat dotaz.
Dotaz: Upozornění spouštějící pracovní postup společnosti
Vytvoříme podrobnější dotaz. Pro každý typ snímače chceme monitorovat průměrnou teplotu v 30sekundovém intervalu a výsledky zobrazit pouze v případě, že teplota překročí 100 stupňů.
Aktualizujte dotaz na:
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
Pokud chcete zobrazit výsledky dotazu, vyberte Testovat dotaz.
Měli byste vidět výsledky, které obsahují pouze 245 řádků a názvy senzorů, u kterých je průměrná teplota větší než 100. Tento dotaz seskupí toky událostí podle hodnoty dspl, což je název snímače, a pomocí 30sekundového přeskakujícího okna. Dočasné dotazy musí uvádět, jak chcete postupovat. Pomocí klauzule TIMESTAMP BY jste zadali sloupec OUTPUTTIME pro přidružení časů ke všem dočasným výpočtům. Podrobné informace najdete v článku Správa času a funkce pro vytváření oken.
Dotaz: Zjištění neexistence událostí
Jak napsat dotaz, abychom dokázali najít chybějící vstupní události? Pojďme zjistit, kdy naposledy senzor odeslal data a pak neposílal události po dobu dalších 5 sekund.
Aktualizujte dotaz na:
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
Pokud chcete zobrazit výsledky dotazu, vyberte Testovat dotaz.
V dotazu se používá příkaz LEFT OUTER JOIN na stejný datový proud (spojení sama na sebe). Při použití příkazu INNER JOIN se vrátí výsledek, pouze když je nalezena shoda. Příkaz LEFT OUTER JOIN však v případě, že pro událost z levé strany spojení není nalezena shoda, vrátí řádek s hodnotami NULL pro všechny sloupce pravé strany. Tato technika je užitečná k nalezení chybějících událostí. Další informace najdete v tématu JOIN.
Závěr
Účelem tohoto článku je ukázat, jak psát různé dotazy v jazyce Stream Analytics Query Language a zobrazit výsledky v prohlížeči. Tento článek vám ale pomůže začít. Stream Analytics podporuje různé vstupy a výstupy a může dokonce používat funkce ve službě Azure Machine Learning, aby se z ní udělal robustní nástroj pro analýzu datových proudů. Další informace o tom, jak psát dotazy, najdete v článku o běžných vzorech dotazů.