IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

6. diel - Microsoft AZURE - Stream Analytics Query Language

V minulej lekcii sme sa venovali Stream analytics v Azure a úložiskám, dnešný diel by sa dal zhrnúť do jednoduchého výrazu:

SELECT
"through Stream Query"
INTOTable Storage“
FROM
"IoT Hub"

My sa ho dnes pokúsime implementovať. Doteraz sa nám podarilo definovať vstupy a výstupy a teraz sa pozrieme na sekciu QUERY. V nej vykonávame výber a prácu s dátami za pomocou Stream Analytics Query Language. Jedná sa upravené T-SQL a jeho opis, presnejšie dokumentácie, je k dispozícii na adrese https://msdn.microsoft.com/...n834998.aspx. Dajú sa v ňom písať SELECT výrazy, ktoré nám umožnia vyberať dáta prúdiaca v reálnom čase podľa potrieb podobne ako v klasickom SQL. Tým, ktorí s SQL výrazmi pracujú dennodenne, bude zápisnica veľmi blízky a nebudú s ním mať podľa môjho názoru väčšie problémy.

Sila tohto Stream analytics riešenie je hlavne v jeho schopnosti spracovávať veľké množstvo dát na vstupe a posielať ich prefiltrovaná na požadovaný výstup v reálnom čase.

Na rozdiel od klasického SQL ako ho poznáte, kedy robíte výbery nad dátami v databáze, nám tu dáta neustále tečú nové a nové. Stream analytics Query pre výbery používa takzvaná okna - Windows. Jedná sa o časový interval, v ktorom sa nám nad dátami urobí požadovaný SELECT. Možno voliť medzi Tumbling, Hopping a Sliding window. Je to moc pekne popísané v dokumentácii, takže to preletíme len zbežne. Odkaz je https://docs.microsoft.com/...dow-function.

  • Tumbling window je okno, ktoré vám bude vzorkovať dáta v pravidelnom intervale, napríklad 10 sekúnd. Hodnoty sa vám teda vo vzorkách nebudú opakovať.
Stream Analytics – Tumbling window - Microsoft Azure a IoT
  • Hopping window je okno, ktoré vám bude vzorkovať v nejakom časovom intervale, ale časové okná sa vám budú o stanovený interval prekrývať. Časť hodnôt sa vám bude teda vo vzorkách opakovať, avšak o presne stanovený časový interval.
Stream Analytics – Hopping window - Microsoft Azure a IoT
  • Sliding window je okno, ktoré akoby kĺže po dátovom toku, a vždy, keď sa objaví dáta, pošle vám požadovaný interval predchádzajúcich dát. Ak chcete teda vzorku dát s veľkosťou 10 sekúnd a každú sekundu vám prídu dáta, vyberie sa vždy 10tich sekundové okno, ktoré sa vám bude po sekunde meniť a po dátach posúvať. 10 sekundový vzorka vám ale príde len pri výskyte dát.
Stream Analytics – Sliding window - Microsoft Azure a IoT

S takto vybranými dátami potom môžete robiť čo je libo alebo čo nám jazyk dovolí. Napríklad počítať maxima, minima, priemery a ukladať ich do požadovaných výstupov. Tá celá legrace je len o tom, že pracujete s dátami v reálnom čase a nie s dátami napríklad v databáze.

Necháme teórie a urobíme niečo, z čoho bude úžitok. :-)

Stream Analytics - Query ukladanie dát do Table storage

Vstúpme teda do sekcie QUERY. Objaví sa nám editor Query výrazov.

Stream Analytics – QUERY - Microsoft Azure a IoT

Navrhovaný kód vám bude veľa povedomý, a takmer supluje naše požiadavky. Bohužiaľ ale nebude fungovať dobre, preto ho budeme musieť drobne upraviť.

SELECT
    *
INTO
    [YourOutputAlias]
FROM
    [YourInputAlias]

Dôvodom, prečo ho musíme upraviť, je, že v ňom nie sú definované hodnoty potrebné pre výstupnú tabuľku Table Storage.

Takže si ich upravíme a doplníme naše vybrané hodnoty o potrebné dáta pre tabuľku. Upravte teda výraz nasledovne:

SELECT
*,
    system.TimeStamp AS EventTime
INTO
    [TableData]
FROM
    [InputIT]

Pýtate sa asi prečo a čo, že sme to urobili?

Table Storage

Pridali sme k všetkým dátam zo správy na vstupe reprezentovanými znakom * hodnotu časovej pečiatky EventTime. System.TimeStamp je teda interná metóda, ktorá vracia čas príchodu paketu na rozhraní input StreamAnalytics, pozri https://msdn.microsoft.com/...t598501.aspx

My ho budeme v našej výstupnej tabuľke používať ako unikátny identifikátor riadku v tabuľke, tzv. Row key, pozri nastavenie voľby Row Key v definícii našej tabuľky na výstupe. Nie nadarmo sa teda volajú rovnako "EventTime" :-)

Ďalej potrebujeme hodnotu Deviceid, ktorý je obsiahnutý v našich dátach z dosky ako identifikátor zariadenia. Spomeňte si, zadávali sme ho v Device Exploreri? Deviceid sa teda vyberie hviezdičkou z našich dát na rozhraní input. Budeme ho používať pre našu tabuľku ako voľbu Partition Key. Jedná sa o stringové hodnotu, ktorá slúži na jednoznačnú identifikáciu oddielu, kam sa v Table storage budú ukladať naše dáta.

Je to povedané dosť nepresne, pretože sa nestane nič zložitejšieho, než že do dát pridáme stĺpec s menom nášho zariadenia, ktorý už tam rovnako je. Tu sa ale použije na identifikáciu riadku. Asi sa čudujete, prečo to robíme. Nu, inu, keďže je to potrebné pre správnu funkciu Table storage. Hodnoty Partition Key a Row Key je pár kľúčov, ktoré slúžia ako unikátny identifikátor našich dát. Rozumejte, jedná sa o jednoznačne identifikujúci kľúče pre náš konkrétny záznam v tabuľke. Tento pár kľúčov je v table storage používaný podobne je index v SQL databáze.

Table storage možno použiť ako jednoduchú databázu pre naše projekty napríklad v C #. K pochopeniu oboch kľúčov by mala pomôcť definície objektovej triedy, ktorú možno používať vo vašich projektoch.

public class IoTDataEntity : TableEntity
{
    public IoTDataEntity(string partitionID , string timeStamp)
    {
        this.PartitionKey = partitionID;
        this.RowKey = timeStamp;
    }

    public IotDataEntity() { }

    public string Humidity { get; set; }

    public string Temperature { get; set; }
}

Pre hlbšie pochopenie váš odkaz na samoštúdium v dokumentácii https://docs.microsoft.com/...o-use-tables.

Ďalšia časť kódu, stream query, snáď nepotrebuje hlbšie vysvetlenie. Povedzme si teda snáď záverom, že všetky dáta zo vstupu vezmeme a doplníme ich o jednoznačný identifikátor, časovú pečiatku. Meno nášho zariadenia z nášho streamu (Device Id) a časovú pečiatku TimeStamp (EventTime) plus výsledný súbor dát, tzv. "CONTENT", pošleme do výstupu. Tam sa nám o ne s láskou sebe vlastnou postarajú malá skrčená stvorenia žijúci kdesi v Azure a uloží ich do Table storage.

Náš výraz teda uložíme a spustíme si Stream Analytics tlačidlom Štart na hlavnej obrazovke. Po chvíľke vyplnené pojedaním maškŕt sa služba spustí a my môžeme pozorovať oživnutí grafu Monitoring.

Dáta sa nám začnú ukladať do našej tabuľky. Bolo by skvelé sa na ne pozrieť, nie? Na to sa pozrieme nabudúce.


 

Predchádzajúci článok
Microsoft AZURE - Práca s dátami a príprava prostredia
Všetky články v sekcii
Microsoft Azure a IoT
Preskočiť článok
(neodporúčame)
Microsoft AZURE - Table Storage zobrazenie dát a úvod do BI
Článok pre vás napísal Michal Gros
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se jako Partner Solution Architekt ve společnosti NetSecure věnuje cloud technologii MS AZURE, spravuje systémy na os LINUX WINDOWS. Programuje v c, c++ a C# .net, Html
Aktivity