Referenciaadatok használata SQL Database-ből azure Stream Analytics-feladathoz

A referenciaadatok egy statikus vagy lassan változó adathalmaz, amelyet összekapcsolsz a streaming adataiddal, hogy gazdagítsd azokat, például termékadatok hozzáadása egy értékesítési eseményfolyamhoz. Az Azure Stream Analytics támogatja az Azure SQL Database-t referencia adatforrásként, így ezeket az adatokat megtalálhatod és kombinálhatod a valós idejű bemeneteddel.

Ez a cikk bemutatja, hogyan konfigurálhatod az Azure SQL Database-t referenciaadat-bemenetként egy Stream Analytics feladathoz, mind az Azure portált, mind a Visual Studio-t Stream Analytics eszközökkel használva.

SQL Database referenciaadatokat adj hozzá az Azure portál használatával

Használja az alábbi lépéseket, hogy hozzáadja az Azure SQL Database-t referencia bemeneti forrásként az Azure portál használatával:

A portál előfeltételei

  1. Stream Analytics-feladat létrehozása.

  2. Hozz létre egy tárolófiókot a Stream Analytics feladathoz.

    Fontos

    Az Azure Stream Analytics ebben a tárfiókban őrzi meg a pillanatképeket. Amikor beállítod a megtartási szabályzatot, győződj meg róla, hogy a kiválasztott időintervall tartalmazza azt a helyreállítási időtartamot, amelyet a Stream Analytics feladatodhoz szeretnél.

  3. Hozd létre az Azure SQL Database-edet egy olyan adathalmazból, amelyet a Stream Analytics munka referencia adatként használ.

SQL Database-referenciaadat-bemenet definiálása

  1. A Stream Analytics-feladatban válassza a Bemenetek lehetőséget a Feladattopológia területen. Válaszd a Hivatkozási bemenet hozzáadását, majd az SQL Database opciót.

    Képernyőkép a Stream Analytics Inputs panelről, ahol a hivatkozási bemenet hozzáadása opciót választva, legördülő lista látható a Blob storage és SQL Database értékekkel.

  2. Töltsd ki a Stream Analytics bemeneti konfigurációját. Válassza ki az adatbázis nevét, szervernevét és a bejelentkezési igazolványokat. A referenciaadatok bemenetének időszakos frissítéséhez válaszd az On-t , és megadd a frissítési frekvenciát a DD:HH:MM formátumban. Nagy adathalmazok esetén, rövid frissítési frekvenciával, a delta query nyomon követi a hivatkozási adatok változásait azáltal, hogy lekéri az SQL Database-ben megjelent összes sort, amelyet egy kezdő @deltaStartTimeidő és egy végidő @deltaEndTimeközött helyeztek be vagy töröltek, .

    További információért lásd: delta query.

    Az SQL Database új bemeneti oldalának képernyőképe konfigurációs űrlappal a bal oldalon, a jobb oldali ablakban pedig egy snapshot lekérdezéssel.

  3. Tesztelje a pillanatkép-lekérdezést az SQL-lekérdezésszerkesztőben. További információért lásd: Használd az Azure portál SQL lekérdezésszerkesztőjét az adatok összekapcsolásához és lekérdezéséhez.

A munka konfigurációban megadja a tárolófiókot

Menj a Tárolási fiók beállításokhoz a Konfigurálás alatt, majd válaszd a Tárhelyfiók hozzáadását.

Képernyőkép a Tárhely fiók beállításairól a jobb oldali ablakban található Tárhelyfiók hozzáadása gombbal

A feladat indítása

  1. Miután beállítottad a többi bemenetet, kimenetet és lekérdezést, indítsd el a Stream Analytics feladatot.

SQL Database referenciaadatokat adj hozzá a Visual Studio használatával

Használja az alábbi lépéseket, hogy Azure SQL Database-et referencia bemeneti forrásként add hozzá a Visual Studio használatával:

A Visual Studio előfeltételei

  1. Telepítse a Stream Analytics-eszközöket a Visual Studióhoz. A Stream Analytics eszközök a következő Visual Studio verziókat támogatják:

    • Visual Studio 2015
    • Visual Studio 2019
  2. Ismerkedjen meg a Visual Studiohoz készült Stream Analytics-eszközök rövid útmutatójával.

  3. Hozzon létre egy tárfiókot.

    Fontos

    Az Azure Stream Analytics ebben a tárfiókban tárolja a pillanatképeket. Amikor beállítod a megtartási szabályzatot, győződj meg róla, hogy a kiválasztott időintervall tartalmazza azt a helyreállítási időtartamot, amelyet a Stream Analytics feladatodhoz szeretnél.

SQL Database-tábla létrehozása

Az SQL Server Management Studio használatával hozzon létre egy táblát a referenciaadatok tárolásához. Részletekért lásd : Az első Azure SQL Database tervezése SSMS használatával.

Az alábbi állítás hozza létre a példatáblázatot:

create table chemicals(Id Bigint,Name Nvarchar(max),FullName Nvarchar(max));

Válassza ki az előfizetését

  1. A Visual Studio View (Nézet) menüjében válassza a Server Explorer (Kiszolgálókezelő) lehetőséget.

  2. Válassz és tartsd le (vagy jobb kattintással) az Azure-t, válaszd a Microsoft Azure előfizetéshez való csatlakozást, majd jelentkezz be az Azure fiókoddal.

Stream Analytics-projekt létrehozása

  1. Válassza a Fájl>Új projekt.

  2. A sablonlistában válaszd ki a Stream Analytics-et, majd az Azure Stream Analytics Application-t.

  3. Írd be a projekt nevét, helyszínét és megoldás nevét, majd válaszd az OK-t.

    Képernyőkép a New Project párbeszédről a Stream Analytics sablonnal és az Azure Stream Analytics Application kiválasztásával, valamint a Név, Hely és Megoldás név mezők kiemelve.

SQL Database-referenciaadat-bemenet definiálása

  1. Hozzon létre egy új bemenetet.

    Képernyőkép az „Új elem hozzáadása” párbeszédpanelről, a „Bemenet” lehetőség kiválasztásával.

  2. Nyisd kiInput.jsonMegoldáskezelő múlva.

  3. Töltse ki a Stream Analytics bemeneti konfigurációját. Adja meg az adatbázis nevét, szervernevet, frissítési típust és frissítési frekvenciát. Adja meg a frissítési gyakoriságot a formátumban DD:HH:MM.

    Képernyőkép a Stream Analytics bemeneti konfigurációjáról, amelyhez az értékeket legördülő listákból írják be vagy választják ki.

    Ha csak egyszer vagy időszakosan futtatod az Execute-t, Visual Studio egy SQL CodeBehind fájlt generál [Input Alias] címmel.snapshot.sql a projektben aInput.json fájlcsomópont alatt.

    A Megoldáskezelő képernyőképe, amelyen a Chemicals.snapshot.sql nevű SQL CodeBehind-fájl van kiemelve.

    Ha a Refresh Periodically opciót választod a Delta segítségével, Visual Studio két SQL CodeBehind fájlt generál: [Input Alias].snapshot.sql és [Input Alias].delta.sql.

    Képernyőkép Megoldáskezelő SQL CodeBehind fájlokkal Chemicals.delta.sql és Chemicals.snapshot.sql kiemelve.

  4. Nyissa meg az SQL-fájlt a szerkesztőben, és írja meg az SQL-lekérdezést.

  5. Ha a Visual Studio 2019-et használja, és telepítette az SQL Server Data Tools eszközt, a lekérdezést az Execute lehetőség kiválasztásával tesztelheti. Egy varázsló nyílik meg, hogy segítsen az SQL Database-hez való csatlakozásban, és a lekérdezés eredménye megjelenik az alján lévő ablakban.

Tárfiók megadása

Nyisd meg aJobConfig.json-ot , hogy megadd a tárolófiókot az SQL referencia pillanatképek tárolására.

Képernyőkép a Stream Analytics munkakonfigurációjáról, amely látható alapértelmezett értékekkel és kiemelve a Globális Tárolási Beállításokkal.

Helyi tesztelés és üzembe helyezés az Azure-ban

Mielőtt a feladatot Azure-ra telepítenéd, helyben tesztelheted a lekérdezési logikát élő bemeneti adatokkal. A funkcióval kapcsolatos további információkért lásd: Élő adatok helyi tesztelése a Visual Studióhoz készült Azure Stream Analytics-eszközökkel (előzetes verzió). Amikor befejezted a tesztelést, válaszd a Submit to Azure opciót. A feladat elindításának módjáról a Stream Analytics-feladat létrehozása az Azure Stream Analytics Visual Studio-eszközeivel rövid útmutatóban olvashat.

Delta-lekérdezés

Amikor a delta lekérdezést használod, használj időbeli táblákat az Azure SQL Database-ben.

  1. Hozzon létre egy temporális táblát az Azure SQL Database-ben.

       CREATE TABLE DeviceTemporal
       (
          [DeviceId] int NOT NULL PRIMARY KEY CLUSTERED
          , [GroupDeviceId] nvarchar(100) NOT NULL
          , [Description] nvarchar(100) NOT NULL
          , [ValidFrom] datetime2 (0) GENERATED ALWAYS AS ROW START
          , [ValidTo] datetime2 (0) GENERATED ALWAYS AS ROW END
          , PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)
       )
       WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.DeviceHistory));  -- DeviceHistory table will be used in Delta query
    
  2. A pillanatkép-lekérdezés megírása.

    Használja a @snapshotTime paramétert, hogy utasítást adjon a Stream Analytics futásidőnek, hogy a rendszer idején érvényes SQL adatbázis időbeli táblájából szerezze meg a referencia adathalmazt. Ha nem adod meg ezt a paramétert, akkor pontatlan alapreferencia adathalmazt kapsz az órajeltorzítások miatt. Az alábbi példa egy teljes pillanatkép lekérdezést mutat:

       SELECT DeviceId, GroupDeviceId, [Description]
       FROM dbo.DeviceTemporal
       FOR SYSTEM_TIME AS OF @snapshotTime
    
  3. A delta-lekérdezés létrehozása.

    Ez a lekérdezés visszanyeri az SQL Database-ben az összes sort, amelyet egy kezdőidőben, @deltaStartTime-ben és végidőben @deltaEndTime beillesztettek vagy töröltek. A delta lekérdezésnek ugyanazokat az oszlopokat kell visszaadnia, mint a pillanatkép-lekérdezésnek, valamint az oszlopműveletnek. Ez az oszlop határozza meg, hogy a sor bekerül-e vagy töröljük-e @deltaStartTime és @deltaEndTime között. Az eredményként kapott sorok 1-ként vannak megjelölve, ha a rekordok be lettek szúrva, vagy 2, ha törölték őket. A lekérdezésnek az SQL Server oldaláról származó watermark értéket is hozzá kell adnia, hogy a deltaidőszak összes frissítése megfelelően figyelembe legyen véve. Delta lekérdezés használata vízjel nélkül hibás referencia-adathalmazhoz vezethet.

    A frissített rekordok esetében a temporális tábla egy beszúrási és törlési művelet rögzítésével végzi a könyvelést. A Stream Analytics futás ezután a delta lekérdezés eredményeit alkalmazza az előző pillanatképre, hogy naprakész maradjon a referencia adatok. Az alábbi példa egy delta lekérdezést mutat:

       SELECT DeviceId, GroupDeviceId, Description, ValidFrom as _watermark_, 1 as _operation_
       FROM dbo.DeviceTemporal
       WHERE ValidFrom BETWEEN @deltaStartTime AND @deltaEndTime   -- records inserted
       UNION
       SELECT DeviceId, GroupDeviceId, Description, ValidTo as _watermark_, 2 as _operation_
       FROM dbo.DeviceHistory   -- table we created in step 1
       WHERE ValidTo BETWEEN @deltaStartTime AND @deltaEndTime     -- record deleted
    

    A Stream Analytics futtatóideje időszakosan futtathatja a snapshot lekérdezést a delta lekérdezés mellett az ellenőrzőpontok tárolására.

    Fontos

    Amikor referencia data delta lekérdezéseket használsz, ne frissítsd ugyanazt az időbeli referencia adattáblát többször. Ez rossz eredményeket eredményezhet. Íme egy példa, amely miatt a referenciaadatok hibás eredményeket adhatnak:

     UPDATE myTable SET VALUE=2 WHERE ID = 1;
     UPDATE myTable SET VALUE=2 WHERE ID = 1;
    

    Helyes példa:

     UPDATE myTable SET VALUE = 2 WHERE ID = 1 and not exists (select * from myTable where ID = 1 and value = 2);
    

    Ez az állapot biztosítja, hogy ne történjenek duplikált frissítések.

A lekérdezés tesztelése

Ellenőrizd, hogy a lekérdezésed visszaadja azt az elvárt adathalmazt, amelyet a Stream Analytics feladat használ referencia adatként. A lekérdezésed teszteléséhez menj a portál Job topológiaszekciója alatt lévő Inputs menübe. Ezután válaszd ki a Sample data (Mintaadatok ) opciót az SQL Database referencia bemenetedben. Miután a minta elérhetővé válik, letöltheted a fájlt, és ellenőrizheted, hogy a visszaküldött adatok a vártnak megfelelőek-e. A fejlesztési és tesztelési iterációk optimalizálásához használd a Visual Studio Stream Analytics eszközeit. Bármilyen más eszközt is használhatsz, hogy először biztosítsd a lekérdezés a megfelelő eredményt az Azure SQL Database-edből, majd ezt a lekérdezést a Stream Analytics munkádban is felhasználd.

A lekérdezés tesztelése a Visual Studio Code-tal

Telepítse az Azure Stream Analytics Toolst és az SQL Servert (mssql) a Visual Studio Code-ra, és állítsa be az ASA-projektet. További információ : Rövid útmutató: Azure Stream Analytics-feladat létrehozása a Visual Studio Code-ban és az SQL Server (mssql) bővítmény oktatóanyaga.

  1. Konfigurálja az SQL referenciaadat-bemenetét.

    Egy Visual Studio Code szerkesztő fül képernyőképe, amely a ReferenceSQLDatabase.json fájlt mutatja.

  2. Válaszd ki az SQL Server ikont, és válaszd a Csatlakozás hozzáadását.

    Képernyőkép a bal oldali ablakról, ahol a Kapcsolat hozzáadása opció ki van jelölve.

  3. Adja meg a kapcsolati adatokat.

    Képernyőkép a kapcsolati űrlapról, az adatbázis és szerver információs dobozai kiemelve.

  4. A referencia-SQL-ben kattintson és tartsa lenyomva (vagy kattintson a jobb gombbal), majd válassza a Lekérdezés végrehajtása lehetőséget.

    Képernyőkép a kontextus menüről, ahol a Lekérdezés végrehajtása opció ki van jelölve.

  5. Válassza ki a csatlakozási módot.

    Egy képernyőkép egy párbeszédablakról, amely azt írja, hogy létrehozz egy kapcsolati profilt az alábbi listából, az egyetlen lista bejegyzés kiemelve.

  6. Tekintse át és ellenőrizze a lekérdezés eredményét.

    A lekérdezés keresésének képernyőképe a Visual Studio Code szerkesztő fülön található.

GYIK

Extra költségeket okozok, ha SQL referencia adat bemenetet használok az Azure Stream Analytics-ben?

A Stream Analytics munkában nincs extra költség egy streaming egységenként . A Stream Analytics-feladatnak azonban rendelkeznie kell egy társított Azure Storage-fiókkal. A Stream Analytics feladat az SQL adatbázisban (a munka kezdeti és frissítési időszakában) lekérdezi, hogy lekérje a referencia adathalmazt, és ezt a pillanatképet a tárolófiókban tárolja. Ezeknek a pillanatképeknek a tárolása további költségeket jár az Azure tárolószámla árképzési oldalán.

Honnan tudhatom, hogy egy referenciaadat-snapshotot az SQL Database-ből kérnek-e, és használják-e az Azure Stream Analytics feladatban?

Az Azure Portal Metrikák területén, a Logical Name alapján szűrve, két metrika segítségével nyomon követheti az SQL Database referenciadat-bemenetének állapotát.

  • InputEvents: Ez a metrika az SQL Database referencia adathalmazából betöltött rekordok számát méri.
  • InputEventBytes: Ez a metrika a Stream Analytics-feladat memóriájába betöltött referenciaadat-pillanatkép méretét méri.

Mindkét mérőszám együtt azt mutatja, hogy a munka lekérdezi-e az SQL Database-t, hogy lekérje a referencia adathalmazt, majd betölti azt a memóriába.

Szükségem van egy speciális Azure SQL Database típusra?

Az Azure Stream Analytics bármilyen típusú Azure SQL Database-val működik. Azonban a referenciaadat bemenetéhez beállított frissítési frekvenciát befolyásolhatja a lekérdezés terhelését. A delta lekérdezés opció használatához az Azure SQL Database temporal táblázatait használjuk.

Miért tárolja az Azure Stream Analytics snapshotokat egy Azure Storage fiókban?

A Stream Analytics garantálja az események pontosan egyszeri feldolgozását és az események legalább egyszeri kézbesítését. Ha átmeneti problémák befolyásolják a munkádat, kis visszajátszás szükséges az állapot visszaállításához. A lejátszás engedélyezéséhez ezeket a pillanatképeket egy Azure Storage fiókban kell tárolni. Az ellenőrzőpontok újrajátszásával kapcsolatos további információkért lásd a következőt: Ellenőrzőpont- és újrajátszási alapfogalmak az Azure Stream Analytics-feladatokban.