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 generált 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, hogy percek alatt üzembe tudjon futni.

A megoldás befejezé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.
  • Valós problémák megfogalmazása és megoldása a Stream Analytics lekérdezési nyelvével.
  • Streamelési megoldások fejlesztése az ügyfelek számára a Stream Analytics megbízható használatával.
  • A problémák elhárításához használja a figyelé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:

Bevezetés a forgatókönyvbe: "Hello, Toll!"

Az útdíjfizetési állomás gyakori jelenség. A világ számos gyorsforgalmi útján, hídján és alagutakon találkozhat velük. Minden útdíjszedő állomás több fizetős standdal rendelkezik. A kézi standokon nem kell fizetnie az útdíjat egy résztvevőnek. 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. Könnyen ábrázolható a járművek áthaladása ezeken az útdíj-állomásokon eseményfolyamként, amelyen érdekes műveletek végezhetők.

Autó képe a fizetős standokon

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 az első streamet állítják elő. A második stream 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óról, amikor útdíjköteles állomásokra lépnek be. 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 |

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íj-standot
EntryTime A jármű útdíjbehajtási standra való belépésének dátuma és időpontja (UTC)
LicensePlate A jármű rendszáma
Állapot Állapot a Egyesült Államok
Gyártó Az autó gyártója
Modell Az autó modellszáma
VehicleType Személygépjárművek esetén 1 vagy haszongépjármű esetén 2
WeightType Jármű tömege tonnában; 0 személygépjárművek esetén
Toll Az útdíj értéke USD-ben
Címke A fizetést automatizáló autó e-címkéje; ü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ásról kilépő 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.

TollId ExitTime LicensePlate
0 2014-09-10T12:03:00.0000000Z JNB 7001
0 2014-09-10T12:03:00.0000000Z YXZ 1001
3 2014-09-10T12:04:00.0000000Z ABC 1004
2 2014-09-10T12:07:00.0000000Z XYZ 1003
0 2014-09-10T12:08:00.0000000Z BNJ 1007
2 2014-09-10T12:07:00.0000000Z CDE 1007

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íj-standot
ExitTime A jármű útdíjfizetési standról való kilépésének dátuma és időpontja (UTC)
LicensePlate A jármű rendszáma

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 a mintában szereplő Azure Blob Storage-ba.

LicensePlate RegistrationId Lejárt
SVT 6023 285429838 0
XLZ 3463 362715656 0
BAC 1005 876133137 0
RIV 8632 992711956 0
SNY 7188 592133890 0
ELH 9896 678427724 0

Az oszlopok rövid leírása:

Oszlop Leírás
LicensePlate A jármű rendszáma
RegistrationId A jármű regisztrációs azonosítója
Lejárt A jármű forgalmi á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 van, 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 az Azure Portalon

  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 az Azure Portalra.

  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 például egy új erőforráscsoportot egyedi névvel 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 használati 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. Válassza a Vásárlás lehetőséget a mintasablon üzembe helyezéséhez.

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

Az Azure Stream Analytics TollApp-erőforrásainak áttekintése

  1. Jelentkezzen be az Azure Portalra.

  2. Keresse meg az előző szakaszban elnevezett 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 webalkalmazás

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éghez).

  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 az autópálya-fizetős standon folyamatosan haladnak be a járművek, 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, hogy "Hány jármű lép be egy fizetős standra három percenként?" Ezt gyakran nevezik átfedésszámnak.

    Mint látható, az Azure Stream Analytics az 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őfelügyeleti és ablakkezelési szerkezeteket.

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

    • A EntryStream bemenet egy eseményközpont-kapcsolat, amely az autópályán való útdíjfizetés minden egyes be- és beléptetését ábrázoló adatokat várólistára állít. 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 bemenet egy eseményközpont-kapcsolat, amely az autópályán való útdíjfizetés minden egyes kilépési időpontjának adatait jeleníti meg. 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-bemenet 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 a streamelési lekérdezés INTO záradéka használja.

A TollApp streamelési feladatának indí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 Feladat indítása panelen válassza a 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ési gráfot. A grafikonon több ezer bemeneti eseménynek és több tíz kimeneti eseménynek kell megjelennie.

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> nevű minta használatával.

  3. Válassza ki az Adatkezelő címsorát az Adatkezelő lap megnyitásához.

  4. Bontsa ki a tollAppDatabase>tollAppCollection>dokumentumait.

  5. Az azonosítók listájában több dokumentum is megjelenik, amint 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 abból az count of cars ablakból.

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

Az egyes autónkénti teljes idő 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-adatfolyammal. Csatlakoztassa a két bemeneti streamet az egyenlő egyező TollId és LicensePlate 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ó által az útdíjállomáson töltött tényleges időt. Figyelje meg a DATEDIFF használatának különbségét, ha a SELECT utasításban használják a JOIN feltétel helyett.

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 FELADAT TOPOLÓGIA fejlécében 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 Igent .

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

  7. A Feladat indítása panelen válassza a Most lehetőséget.

A kimenet teljes idejének á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ámmal, az entrytime és exit time, és a DATEDIFF számított durationinminutes mezővel, amely két percként jeleníti meg az útdíj-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épeivel csatlakozhat az időbeli adatfolyamokhoz. 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áblához való csatlakozással a referenciaadatok összehasonlítva lesznek az útdíjon áthaladó összes járművel.

Ha egy haszongépjármű regisztrálva van az útdíjszolgáltatónál, akkor anélkül haladhat át az útdíjmentes standon, hogy ellenőrzés céljából leállt volna. 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 rugalmas skálázásra lett tervezve, hogy nagy mennyiségű adatot kezeljen. Az Azure Stream Analytics-lekérdezés egy PARTITION BY záradékkal jelezheti a rendszernek, hogy ez a lépés horizontálisan felskálázható. A PartitionId egy speciális oszlop, amelyet a rendszer hozzáad, hogy megfeleljen a bemenet (event hub) partícióazonosítójának.

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éce alatt válassza a Méretezé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ényt. Válassza a Mentés lehetőséget.

  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, és particionálást végez az erőforrások között a PARTITION BY záradékban kijelölt oszlop használatával.

A feladat figyelése

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

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 az Azure Portalon.

  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

Ez a megoldás bevezette az Azure Stream Analytics szolgáltatásba. Bemutatta, hogyan konfigurálhatók bemenetek és kimenetek a Stream Analytics-feladathoz. A toll Data forgatókönyv használatával a megoldás ismertette a mozgásban lévő adatok terén felmerülő gyakori problémákat, és azt, 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 időbeli adatokkal való használatához szükséges szerkezeteit. 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, egyáltalán nem fejeződött be. A Gyakori Stream Analytics-használati minták lekérdezési példáiban az SAQL nyelv használatával további lekérdezési mintákat talál.