Megosztás a következőn keresztül:


IoT-megoldás létrehozása a Stream Analytics használatával

Bevezetés

Ebben a megoldásban megtudhatja, hogyan használhatja az Azure Stream Analyticset valós idejű elemzések lekérésére az adataiból. A fejlesztők egyszerűen kombinálhatják az adatstreameket, például a kattintásstreameket, a naplókat és az eszköz által létrehozott eseményeket, előzményrekordokkal vagy referenciaadatokkal az üzleti megállapítások kinyeréséhez. A Microsoft Azure-ban üzemeltetett teljes körűen felügyelt, valós idejű streamszámítási szolgáltatásként az Azure Stream Analytics beépített rugalmasságot, alacsony késést és méretezhetőséget biztosít a percek alatt történő üzembe helyezéshez.

A megoldás elvégzése után a következőket tudja elvégezni:

  • Ismerkedjen meg az Azure Stream Analytics portállal.
  • Streamelési feladat konfigurálása és üzembe helyezése.
  • Fogalmazza meg a valós problémákat, és oldja meg őket a Stream Analytics lekérdezési nyelvével.
  • Streamelési megoldások fejlesztése az ügyfelek számára a Stream Analytics magabiztos használatával.
  • A problémák elhárításához használja a monitorozási és naplózási felületet.

Előfeltételek

A megoldás elvégzéséhez a következő előfeltételek szükségesek:

Forgatókönyv bemutatása: "Hello, Toll!"

Az útdíjfizetési állomás gyakori jelenség. Számos gyorsforgalmi úton, hídon és alagúton találkozhat velük a világ minden pontján. Minden útdíjfizetési állomás több fizetős standdal rendelkezik. A kézi standok, akkor megáll fizetni az útdíjat, hogy egy résztvevő. Az automatizált standokon az egyes standok tetején található érzékelő egy RFID-kártyát vizsgál, amely a jármű szélvédőjéhez van rögzítve, miközben ön áthalad a fizetős standon. Az útdíjfizetési állomásokon keresztül könnyen megjeleníthető a járművek áthaladása egy eseményfolyamként, amelyen érdekes műveletek végezhetők.

A fizetős standokon lévő autók képe

Bejövő adatok

Ez a megoldás két adatfolyammal működik. A fizetőállomások bejáratánál és kijáratánál elhelyezett érzékelők hozzák létre az első adatfolyamot. A második adatfolyam egy statikus keresési adatkészlet, amely járműregisztrációs adatokat is tartalmazó.

Adatstreamek bevitele

A belépési adatstream információkat tartalmaz az autókról, amikor útdíjfizetési állomásokra lépnek. A kilépési adateseményeket a rendszer élőben streameli egy eseményközpontba a mintaalkalmazásban található webalkalmazásból.

| TollID | EntryTime | LicensePlate | State | Make | Model | VehicleType | VehicleWeight | Toll | Tag |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 |2014-09-10 12:01:00.000 |JNB 7001 |NY |Honda |CRV |1 |0 |7 | |
| 1 |2014-09-10 12:02:00.000 |YXZ 1001 |NY |Toyota |Camry |1 |0 |4 |123456789 |
| 3 |2014-09-10 12:02:00.000 |ABC 1004 |CT |Ford |Taurus |1 |0 |5 |456789123 |
| 2 |2014-09-10 12:03:00.000 |XYZ 1003 |CT |Toyota |Corolla |1 |0 |4 | |
| 1 |2014-09-10 12:03:00.000 |BNJ 1007 |NY |Honda |CRV |1 |0 |5 |789123456 |
| 2 |2014-09-10 12:05:00.000 |CDE 1007 |NJ |Toyota |4x4 |1 |0 |6 |321987654 |

Íme az oszlopok rövid leírása:

Oszlop Leírás
Útdíjazonosító Az útdíjfizetési stand azonosítója, amely egyedileg azonosítja az útdíjfizetési standot
EntryTime A jármű útdíjfizetési standra való belépésének dátuma és időpontja (UTC)
LicensePlate A jármű rendszámtáblája
Állapot Állapot Egyesült Államok
Gyártó Az autó gyártója
Modellezés Az autó modellszáma
VehicleType Személygépjárművek esetén 1 vagy 2 haszongépjármű esetén
WeightType Jármű tömege tonnában; 0 személygépjárművek esetén
Autópályadíj Az útdíj értéke USD-ben
Címke Az e-tag az autó, amely automatizálja a fizetést; üres, ahol a fizetés manuálisan történt

Kilépés az adatfolyamból

A kilépési adatfolyam információkat tartalmaz az útdíjfizetési állomást elhagyó autókról. A kilépési adateseményeket a rendszer élőben streameli egy eseményközpontba a mintaalkalmazásban található webalkalmazásból.

Útdíjazonosító Kilépési idő LicensePlate
1 2014-09-10T12:03:00.00000000Z JNB 7001
1 2014-09-10T12:03:00.00000000Z YXZ 1001
3 2014-09-10T12:04:00Z ABC 1004
2 2014-09-10T12:07:00.00000000Z XYZ 1003
1 2014-09-10T12:08:00Z BNJ 1007
2 2014-09-10T12:07:00.00000000Z CDE 1007

Íme az oszlopok rövid leírása:

Oszlop Leírás
Útdíjazonosító Az útdíjfizetési stand azonosítója, amely egyedileg azonosítja az útdíjfizetési standot
Kilépési idő A jármű útdíjfizetési standról való kilépésének dátuma és időpontja (UTC)
LicensePlate A jármű rendszámtáblája

Haszongépjármű-regisztrációs adatok

A megoldás egy haszongépjármű-regisztrációs adatbázis statikus pillanatképét használja. Ezek az adatok JSON-fájlként lesznek mentve az Azure Blob Storage-ba, amely a mintában szerepel.

LicensePlate Regisztrációs azonosító Lejárt
SVT 6023 285429838 1
XLZ 3463 362715656 0
BAC 1005 876133137 1
RIV 8632 992711956 0
SNY 7188 592133890 0
ELH 9896 678427724 1

Íme egy rövid leírás az oszlopokról:

Oszlop Leírás
LicensePlate A jármű rendszáma
Regisztrációs azonosító A jármű regisztrációs azonosítója
Lejárt A jármű regisztrációs állapota: 0, ha a járműregisztráció aktív, 1, ha a regisztráció lejárt

Az Azure Stream Analytics környezetének beállítása

A megoldás elvégzéséhez Microsoft Azure-előfizetésre van szüksége. Ha nem rendelkezik Azure-fiókkal, ingyenes próbaverziót kérhet.

Mindenképpen kövesse a cikk végén található "Az Azure-fiók törlése" című szakasz lépéseit, hogy a lehető legjobban kihasználhassa az Azure-kreditet.

A minta üzembe helyezése

Számos olyan erőforrás létezik, amely néhány kattintással egyszerűen üzembe helyezhető egy erőforráscsoportban. A megoldásdefiníció a GitHub-adattárban található: https://github.com/Azure/azure-stream-analytics/tree/master/Samples/TollApp.

A TollApp-sablon üzembe helyezése a Azure Portal

  1. A TollApp-környezet Azure-ban való üzembe helyezéséhez használja ezt a hivatkozást a TollApp Azure-sablon üzembe helyezéséhez.

  2. Ha a rendszer kéri, jelentkezzen be a Azure Portal.

  3. Válassza ki azt az előfizetést, amelyben a különböző erőforrásokat számlázzák.

  4. Adjon meg egy új erőforráscsoportot egyedi névvel( például MyTollBooth).

  5. Válasszon egy Azure-beli helyet.

  6. Adjon meg egy intervallumot másodpercben. Ezt az értéket használja a minta webalkalmazás, hogy milyen gyakran küldjön adatokat egy eseményközpontba.

  7. Ellenőrizze , hogy elfogadja-e a feltételeket.

  8. Válassza a Rögzítés az irányítópulton lehetőséget, hogy később könnyen megtalálhassa az erőforrásokat.

  9. A mintasablon üzembe helyezéséhez válassza a Vásárlás lehetőséget.

  10. Néhány pillanat múlva megjelenik egy értesítés, amely megerősíti, hogy az üzembe helyezés sikeres volt.

Tekintse át az Azure Stream Analytics TollApp-erőforrásait

  1. Jelentkezzen be az Azure Portalra.

  2. Keresse meg az előző szakaszban megnevezett erőforráscsoportot.

  3. Ellenőrizze, hogy a következő erőforrások szerepelnek-e az erőforráscsoportban:

    • Egy Azure Cosmos DB-fiók
    • Egy Azure Stream Analytics-feladat
    • Egy Azure Storage-fiók
    • Egy Azure-eseményközpont
    • Két Web Apps

A TollApp-mintafeladat vizsgálata

  1. Az előző szakasz erőforráscsoportjától kezdve válassza ki a Stream Analytics streamelési feladatát a névvel tollapp kezdve (a név véletlenszerű karaktereket tartalmaz az egyediség érdekében).

  2. A feladat Áttekintés lapján figyelje meg a Lekérdezés mezőt a lekérdezés szintaxisának megtekintéséhez.

    SELECT TollId, System.Timestamp AS WindowEnd, COUNT(*) AS Count
    INTO CosmosDB
    FROM EntryStream TIMESTAMP BY EntryTime
    GROUP BY TUMBLINGWINDOW(minute, 3), TollId
    

    A lekérdezés szándékának parafrázisához tegyük fel, hogy meg kell számolnia a fizetős standra belépő járművek számát. Mivel egy autópályadíj-fülkében folyamatos a bemenő járművek áramlata, ezek a belépési események hasonlóak a soha meg nem álló patakhoz. A stream számszerűsítéséhez meg kell határoznia egy "időtartamot" a méréshez. Pontosítsuk tovább a kérdést: "Hány jármű lép be egy fizetős standra három percenként?" Ezt gyakran ugrószámnak nevezik.

    Mint látható, az Azure Stream Analytics egy SQL-hez hasonló lekérdezési nyelvet használ, és hozzáad néhány bővítményt a lekérdezés időhöz kapcsolódó jellemzőinek megadásához. További részletekért olvassa el a lekérdezésben használt Időkezelés és Ablakozás szerkezetek című témakört.

  3. Vizsgálja meg a TollApp mintafeladat bemeneteit. Az aktuális lekérdezésben csak az EntryStream bemenetet használja a rendszer.

    • Az EntryStream bemenet egy eseményközpont-kapcsolat, amely az autó autópályán történő útdíjfizetéskor megadott minden egyes adatsorát sorba állítja. A minta részét képező webalkalmazás létrehozza az eseményeket, és az adatok várólistára kerülnek ebben az eseményközpontban. Vegye figyelembe, hogy ezt a bemenetet a streamelési lekérdezés FROM záradéka kérdezi le.
    • Az ExitStream bemenete egy eseményközpont-kapcsolat, amely az autó autópályán történő útdíjfizetési útvonalának minden egyes kilépésekor megjelenő adatokat várólistára állítja. Ezt a streamelési bemenetet a lekérdezés szintaxisának későbbi változatai használják.
    • A regisztrációs bemenet egy Azure Blob Storage-kapcsolat, amely egy statikus registration.json fájlra mutat, amelyet szükség szerint keresésekhez használnak. Ez a referenciaadat-bevitel a lekérdezés szintaxisának későbbi változataiban használatos.
  4. Vizsgálja meg a TollApp-mintafeladat kimeneteit.

    • Az Azure Cosmos DB kimenete egy Azure Cosmos DB-adatbázistároló, amely fogadja a kimeneti fogadó eseményeit. Vegye figyelembe, hogy ezt a kimenetet használja a streamelési lekérdezés INTO záradéka.

A TollApp streamelési feladatának elindítása

A streamelési feladat elindításához kövesse az alábbi lépéseket:

  1. A feladat Áttekintés lapján válassza a Start lehetőséget.

  2. A Start job (Feladat indítása ) panelen válassza az Now (Most) lehetőséget.

  3. Néhány pillanat múlva, a feladat futtatása után a streamelési feladat Áttekintés lapján tekintse meg a Figyelés grafikont. A gráfnak több ezer bemeneti eseményt és több tíz kimeneti eseményt kell megjelenítenie.

Az Azure Cosmos DB kimeneti adatainak áttekintése

  1. Keresse meg a TollApp-erőforrásokat tartalmazó erőforráscsoportot.

  2. Válassza ki az Azure Cosmos DB-fiókot a tollapp<random-cosmos> névmintával.

  3. Válassza ki a Data Explorer címsort a Data Explorer lap megnyitásához.

  4. Bontsa ki a tollAppDatabase>tollAppCollectionDocuments elemet>.

  5. Az azonosítók listájában több dokumentum is megjelenik, miután a kimenet elérhetővé válik.

  6. Jelölje ki az egyes azonosítók közül a JSON-dokumentum áttekintéséhez. Figyelje meg az egyes tollid, windowend time, és az count of cars ablakból származó adatokat.

  7. További három perc elteltével további négy dokumentum áll rendelkezésre, egy dokumentumonként tollid.

Az egyes autók teljes időtartamának jelentése

Az autónak az útdíjon való áthaladáshoz szükséges átlagos idő segít felmérni a folyamat hatékonyságát és az ügyfélélményt.

A teljes idő megkereséséhez csatlakozzon az EntryTime streamhez az ExitTime streamtel. Csatlakoztassa a két bemeneti streamet az egyenlő egyező TollId és LicencePlate oszlopokhoz. A JOIN operátor megköveteli, hogy olyan időbeli mozgásteret adjon meg, amely leírja az összekapcsolt események közötti elfogadható időkülönbséget. A DATEDIFF függvénnyel megadhatja, hogy az események legfeljebb 15 perc múlva legyenek egymástól. A DATEDIFF függvényt is alkalmazza a kilépési és belépési időkre, hogy kiszámítsa az autónak az útdíjállomáson töltött tényleges idejét. Figyelje meg a DATEDIFF használatának különbségét, ha a JOIN feltétel helyett SELECT utasításban használják.

SELECT EntryStream.TollId, EntryStream.EntryTime, ExitStream.ExitTime, EntryStream.LicensePlate, DATEDIFF (minute, EntryStream.EntryTime, ExitStream.ExitTime) AS DurationInMinutes
INTO CosmosDB
FROM EntryStream TIMESTAMP BY EntryTime
JOIN ExitStream TIMESTAMP BY ExitTime
ON (EntryStream.TollId= ExitStream.TollId AND EntryStream.LicensePlate = ExitStream.LicensePlate)
AND DATEDIFF (minute, EntryStream, ExitStream ) BETWEEN 0 AND 15

A TollApp streamelési feladat lekérdezési szintaxisának frissítése:

  1. A feladat Áttekintés lapján válassza a Leállítás lehetőséget.

  2. Várjon néhány percet a feladat leállításáról szóló értesítésre.

  3. A FELADATTOPOLÓGIA fejléc alatt válassza a Lekérdezés lehetőséget<>

  4. Illessze be a módosított streamelési SQL-lekérdezést.

  5. A lekérdezés mentéséhez válassza a Mentés lehetőséget. A módosítások mentéséhez erősítse meg az Igen elemet.

  6. A feladat Áttekintés lapján válassza a Start lehetőséget.

  7. A Start job (Feladat indítása ) panelen válassza az Now (Most) lehetőséget.

A kimenet teljes időtartamának áttekintése

Ismételje meg az előző szakaszban leírt lépéseket az Azure Cosmos DB streamelési feladatból származó kimeneti adatainak áttekintéséhez. Tekintse át a legújabb JSON-dokumentumokat.

Ez a dokumentum például egy példaautót mutat be egy adott rendszámtáblával, a entrytime és exit timea , és a DATEDIFF számított durationinminutes mezővel, amely két percként jeleníti meg a fizetős stand időtartamát:

{
    "tollid": 4,
    "entrytime": "2018-04-05T06:51:39.0491173Z",
    "exittime": "2018-04-05T06:53:09.0491173Z",
    "licenseplate": "JVR 9425",
    "durationinminutes": 2,
    "id": "ff52eb25-d580-7566-2879-1f52bba6601e",
    "_rid": "+8E4AI1DZgBjAAAAAAAAAA==",
    "_self": "dbs/+8E4AA==/colls/+8E4AI1DZgA=/docs/+8E4AI1DZgBjAAAAAAAAAA==/",
    "_etag": "\"ad02f6b8-0000-0000-0000-5ac5c8330000\"",
    "_attachments": "attachments/",
    "_ts": 1522911283
}

Lejárt regisztrációval rendelkező járművek bejelentése

Az Azure Stream Analytics a referenciaadatok statikus pillanatképeit használhatja a temporális adatfolyamokhoz való csatlakozáshoz. Ennek a képességnek a bemutatásához használja az alábbi mintakérdést. A regisztrációs bemenet egy statikus blob json-fájl, amely felsorolja a licenccímkék lejáratát. A rendszámtábla csatlakoztatásával a referenciaadatok összehasonlítva lesznek az útdíjon áthaladó összes járművel.

Ha egy haszongépjármű regisztrálva van a díjköteles társaságnál, akkor anélkül haladhat át az útdíjszedőn, hogy ellenőrzés céljából leállítanák. A regisztrációs keresési táblával azonosíthatja az összes lejárt regisztrációval rendelkező haszongépjárműveket.

SELECT EntryStream.EntryTime, EntryStream.LicensePlate, EntryStream.TollId, Registration.RegistrationId
INTO CosmosDB
FROM EntryStream TIMESTAMP BY EntryTime
JOIN Registration
ON EntryStream.LicensePlate = Registration.LicensePlate
WHERE Registration.Expired = '1'
  1. Ismételje meg az előző szakaszban leírt lépéseket a TollApp streamelési feladat lekérdezési szintaxisának frissítéséhez.

  2. Ismételje meg az előző szakaszban leírt lépéseket az Azure Cosmos DB streamelési feladatból származó kimeneti adatainak áttekintéséhez.

Példa a kimenetre:

    {
        "entrytime": "2018-04-05T08:01:28.0252168Z",
        "licenseplate": "GMT 3221",
        "tollid": 1,
        "registrationid": "763220582",
        "id": "47db0535-9716-4eb2-db58-de7886966cbf",
        "_rid": "y+F8AJ9QWACSAQAAAAAAAA==",
        "_self": "dbs/y+F8AA==/colls/y+F8AJ9QWAA=/docs/y+F8AJ9QWACSAQAAAAAAAA==/",
        "_etag": "\"88007d8d-0000-0000-0000-5ac5d7e20000\"",
        "_attachments": "attachments/",
        "_ts": 1522915298
    }

A feladat vertikális felskálázása

Az Azure Stream Analytics úgy lett kialakítva, hogy rugalmasan skálázható legyen, így nagy mennyiségű adatot képes kezelni. Az Azure Stream Analytics-lekérdezés egy PARTITION BY záradékkal tudathatja a rendszerrel, hogy ez a lépés felskálázható. A PartitionId egy speciális oszlop, amelyet a rendszer a bemenet (eseményközpont) partícióazonosítójának megfelelően ad hozzá.

A lekérdezés partíciókra való felskálázásához szerkessze a lekérdezés szintaxisát a következő kódra:

SELECT TollId, System.Timestamp AS WindowEnd, COUNT(*)AS Count
INTO CosmosDB
FROM EntryStream
TIMESTAMP BY EntryTime
PARTITION BY PartitionId
GROUP BY TUMBLINGWINDOW(minute,3), TollId, PartitionId

A streamelési feladat vertikális felskálázása több streamelési egységre:

  1. Állítsa le az aktuális feladatot.

  2. Frissítse a lekérdezés szintaxisát a <> Lekérdezés lapon, és mentse a módosításokat.

  3. A streamelési feladat KONFIGURÁLÁS fejlécében válassza a Skálázás lehetőséget.

  4. Csúsztassa a Streamelési egységek csúszkát 1-ről 6-ra. A streamelési egységek határozzák meg a feladat által megkapható számítási teljesítmény mennyiségét. Kattintson a Mentés gombra.

  5. Indítsa el a streamelési feladatot a további skálázás bemutatásához. Az Azure Stream Analytics több számítási erőforrás között osztja el a munkát, és jobb átviteli sebességet ér el, particionálja a munkát az erőforrások között a PARTITION BY záradékban megadott oszlop használatával.

A feladat figyelése

A MONITOR terület a futó feladat statisztikáit tartalmazza. Első alkalommal kell konfigurálni a tárfiókot ugyanabban a régióban (a névhasználati díj a dokumentum többi részéhez hasonlóan).

Azure Stream Analytics-feladatok monitorozása

A tevékenységnaplókat a feladat irányítópultjának Beállítások területén is elérheti.

A TollApp-erőforrások törlése

  1. Állítsa le a Stream Analytics-feladatot a Azure Portal.

  2. Keresse meg azt az erőforráscsoportot, amely nyolc, a TollApp-sablonhoz kapcsolódó erőforrást tartalmaz.

  3. Válassza az Erőforráscsoport törlése elemet. Írja be az erőforráscsoport nevét a törlés megerősítéséhez.

Összegzés

Ezzel a megoldással megismerkedhet az Azure Stream Analytics szolgáltatással. Bemutatta, hogyan konfigurálhat bemeneteket és kimeneteket a Stream Analytics-feladathoz. A Toll Data forgatókönyv használatával a megoldás ismertette a mozgásban lévő adatok területén felmerülő gyakori problémák típusait, és hogy hogyan oldhatók meg egyszerű SQL-szerű lekérdezésekkel az Azure Stream Analyticsben. A megoldás leírta az SQL-bővítmények szerkezetét a temporális adatok kezeléséhez. Bemutatta, hogyan csatlakoztathat adatfolyamokat, hogyan bővítheti az adatfolyamot statikus referenciaadatokkal, és hogyan skálázhat fel egy lekérdezést a nagyobb átviteli sebesség elérése érdekében.

Bár ez a megoldás jó bevezetést nyújt, semmilyen módon nem fejeződik be. További lekérdezési mintákat az SAQL nyelv használatával talál a Gyakori Stream Analytics-használati minták lekérdezési példái című témakörben.