Referentiegegevens uit een SQL Database gebruiken voor een Azure Stream Analytics-taak
Azure Stream Analytics ondersteunt Azure SQL Database als bron van invoer voor referentiegegevens. U kunt SQL Database gebruiken als referentiegegevens voor uw Stream Analytics-taak in Azure Portal en in Visual Studio met Stream Analytics-hulpprogramma's. In dit artikel wordt beschreven hoe u beide methoden kunt uitvoeren.
Azure Portal
Gebruik de volgende stappen om Azure SQL Database toe te voegen als referentie-invoerbron met behulp van Azure Portal:
Vereisten voor de portal
Een Stream Analytics-taak maken.
Maak een opslagaccount dat moet worden gebruikt door de Stream Analytics-taak.
Belangrijk
Azure Stream Analytics behoudt momentopnamen binnen dit opslagaccount. Bij het configureren van het bewaarbeleid is het noodzakelijk om ervoor te zorgen dat de gekozen periode de gewenste herstelduur voor uw Stream Analytics-taak effectief omvat.
Maak uw Azure SQL Database met een gegevensset die moet worden gebruikt als referentiegegevens door de Stream Analytics-taak.
Sql Database-referentiegegevensinvoer definiëren
Selecteer Invoer onder Taaktopologie in uw Stream Analytics-taak. Klik op Verwijzingsinvoer toevoegen en kies SQL Database.
Vul de Stream Analytics-invoerconfiguraties in. Kies de databasenaam, servernaam, gebruikersnaam en wachtwoord. Als u wilt dat uw verwijzingsgegevensinvoer periodiek wordt vernieuwd, kiest u 'Aan' om de vernieuwingsfrequentie in DD:UU:MM op te geven. Als u grote gegevenssets hebt met een korte vernieuwingsfrequentie. Met Delta-query kunt u wijzigingen in uw referentiegegevens bijhouden door alle rijen in SQL Database die zijn ingevoegd of verwijderd binnen een begintijd, @deltaStartTimeen een eindtijd @deltaEndTime, te herstellen.
- Test de momentopnamequery in de SQL-queryeditor. Zie De SQL-queryeditor van Azure Portal gebruiken om verbinding te maken en query's uit te voeren op gegevens voor meer informatie
Opslagaccount opgeven in taakconfiguratie
Navigeer naar de instellingen van het opslagaccount onder Configureren en selecteer Opslagaccount toevoegen.
Taak starten
Nadat u andere invoer, uitvoer en query hebt geconfigureerd, kunt u de Stream Analytics-taak starten.
Hulpprogramma's voor Visual Studio
Gebruik de volgende stappen om Azure SQL Database toe te voegen als referentie-invoerbron met behulp van Visual Studio:
Vereisten voor Visual Studio
Installeer de Stream Analytics-hulpprogramma's voor Visual Studio. De volgende versies van Visual Studio worden ondersteund:
- Visual Studio 2015
- Visual Studio 2019
Maak kennis met de Stream Analytics-hulpprogramma's voor Visual Studio-quickstart .
Een opslagaccount maken.
Belangrijk
Azure Stream Analytics behoudt momentopnamen binnen dit opslagaccount. Bij het configureren van het bewaarbeleid is het noodzakelijk om ervoor te zorgen dat de gekozen periode de gewenste herstelduur voor uw Stream Analytics-taak effectief omvat.
Een SQL Database-tabel maken
Gebruik SQL Server Management Studio om een tabel te maken om uw referentiegegevens op te slaan. Zie Uw eerste Azure SQL Database ontwerpen met behulp van SSMS voor meer informatie.
De voorbeeldtabel die in het volgende voorbeeld wordt gebruikt, is gemaakt op basis van de volgende instructie:
create table chemicals(Id Bigint,Name Nvarchar(max),FullName Nvarchar(max));
Kies uw abonnement
Selecteer in Visual Studio in het menu Beeld de optie Server Explorer.
Klik met de rechtermuisknop op Azure, selecteer Verbinding maken naar het Microsoft Azure-abonnement en meld u aan met uw Azure-account.
Een Stream Analytics-project maken
Selecteer Bestand > nieuw project.
Selecteer Stream Analyticsin de sjablonenlijst aan de linkerkant en selecteer vervolgens Azure Stream Analytics Application.
Voer de projectnaam, locatie en oplossingsnaam in en selecteer OK.
Sql Database-referentiegegevensinvoer definiëren
Maak een nieuwe invoer.
Dubbelklik op Input.json in Solution Explorer.
Vul de Stream Analytics-invoerconfiguratie in. Kies de databasenaam, servernaam, vernieuwingstype en vernieuwingsfrequentie. Geef de vernieuwingsfrequentie op in de indeling
DD:HH:MM
.Als u 'Slechts één keer uitvoeren' of 'Periodiek uitvoeren' kiest, wordt er één SQL CodeBehind-bestand met de naam [Input Alias].snapshot.sql gegenereerd in het project onder het knooppunt Input.json-bestand .
Als u 'Periodiek vernieuwen met Delta' kiest, worden er twee SQL CodeBehind-bestanden gegenereerd: [Input Alias].snapshot.sql en [Input Alias].delta.sql.
Open het SQL-bestand in de editor en schrijf de SQL-query.
Als u Visual Studio 2019 gebruikt en u SQL Server Data-hulpprogramma's hebt geïnstalleerd, kunt u de query testen door op Uitvoeren te klikken. Er verschijnt een wizardvenster om verbinding te maken met SQL Database en het queryresultaat wordt weergegeven in het venster onderaan.
Opslagaccount opgeven
Open JobConfig.json om het opslagaccount op te geven voor het opslaan van SQL-referentiemomentopnamen.
Lokaal testen en implementeren in Azure
Voordat u de taak in Azure implementeert, kunt u de querylogica lokaal testen op basis van live-invoergegevens. Zie Live-gegevens lokaal testen met behulp van Azure Stream Analytics-hulpprogramma's voor Visual Studio (preview) voor meer informatie over deze functie. Wanneer u klaar bent met testen, klikt u op Verzenden naar Azure. Raadpleeg de quickstart Een Stream Analytics maken met behulp van de Azure Stream Analytics-hulpprogramma's voor Visual Studio voor meer informatie over het starten van de taak.
Delta-query
Wanneer u de deltaquery gebruikt, worden tijdelijke tabellen in Azure SQL Database aanbevolen.
Maak een tijdelijke tabel in Azure SQL Database.
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
De momentopnamequery maken.
Gebruik de parameter @snapshotTime om de Stream Analytics-runtime te instrueren om de referentiegegevensset op te halen uit de tijdelijke SQL Database-tabel die geldig is op het systeemtijd. Als u deze parameter niet opgeeft, loopt u het risico een onjuiste basisreferentiegegevensset te verkrijgen vanwege scheeftrekken van de klok. Hieronder ziet u een voorbeeld van een volledige momentopnamequery:
SELECT DeviceId, GroupDeviceId, [Description] FROM dbo.DeviceTemporal FOR SYSTEM_TIME AS OF @snapshotTime
Ontwerp de deltaquery.
Met deze query worden alle rijen in SQL Database opgehaald die zijn ingevoegd of verwijderd binnen een begintijd, @deltaStartTime en een eindtijd @deltaEndTime. De deltaquery moet dezelfde kolommen retourneren als de momentopnamequery, evenals de kolombewerking. Deze kolom bepaalt of de rij wordt ingevoegd of verwijderd tussen @deltaStartTime en @deltaEndTime. De resulterende rijen worden gemarkeerd als 1 als de records zijn ingevoegd, of 2 als ze zijn verwijderd. De query moet ook watermerk toevoegen aan de zijde van SQL Server om ervoor te zorgen dat alle updates in de deltaperiode op de juiste wijze worden vastgelegd. Het gebruik van deltaquery zonder watermerk kan leiden tot een onjuiste referentiegegevensset.
Voor records die zijn bijgewerkt, houdt de tijdelijke tabel boekhouden door een invoeg- en verwijderingsbewerking vast te leggen. De Stream Analytics-runtime past vervolgens de resultaten van de deltaquery toe op de vorige momentopname om de referentiegegevens up-to-date te houden. Hieronder ziet u een voorbeeld van een deltaquery:
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
Houd er rekening mee dat Stream Analytics Runtime de momentopnamequery regelmatig kan uitvoeren naast de deltaquery om controlepunten op te slaan.
Belangrijk
Wanneer u deltaquery's voor referentiegegevens gebruikt, moet u niet meerdere keren identieke updates aanbrengen in de tijdelijke referentiegegevenstabel. Dit kan ertoe leiden dat er onjuiste resultaten worden geproduceerd. Hier volgt een voorbeeld waardoor verwijzingsgegevens onjuiste resultaten kunnen opleveren:
UPDATE myTable SET VALUE=2 WHERE ID = 1; UPDATE myTable SET VALUE=2 WHERE ID = 1;
Correct voorbeeld:
UPDATE myTable SET VALUE = 2 WHERE ID = 1 and not exists (select * from myTable where ID = 1 and value = 2);
Dit zorgt ervoor dat er geen dubbele updates worden uitgevoerd.
De query testen
Het is belangrijk om te controleren of uw query de verwachte gegevensset retourneert die door de Stream Analytics-taak wordt gebruikt als referentiegegevens. Als u uw query wilt testen, gaat u naar de sectie Invoer onder Taaktopologie in de portal. Vervolgens kunt u Voorbeeldgegevens selecteren in uw SQL Database-verwijzingsinvoer. Nadat het voorbeeld beschikbaar is, kunt u het bestand downloaden en controleren of de geretourneerde gegevens zijn zoals verwacht. Als u uw ontwikkel- en testiteraties wilt optimaliseren, is het raadzaam om de Stream Analytics-hulpprogramma's voor Visual Studio te gebruiken. U kunt ook elk ander hulpprogramma van uw voorkeur gebruiken om ervoor te zorgen dat de query de juiste resultaten retourneert van azure SQL Database en deze vervolgens gebruikt in uw Stream Analytics-taak.
Uw query testen met Visual Studio Code
Installeer Azure Stream Analytics Tools en SQL Server (mssql) in Visual Studio Code en stel uw ASA-project in. Zie quickstart: Een Azure Stream Analytics-taak maken in Visual Studio Code en de zelfstudie voor de SQL Server-extensie (mssql).
Configureer uw SQL-referentiegegevensinvoer.
Selecteer het SQL Server-pictogram en klik op Verbinding maken ion toevoegen.
Vul de verbindingsgegevens in.
Klik met de rechtermuisknop in referentie-SQL en selecteer Query uitvoeren.
Kies uw verbinding.
Controleer en controleer het queryresultaat.
Veelgestelde vragen
Worden er extra kosten in rekening gebracht met behulp van SQL-referentiegegevensinvoer in Azure Stream Analytics?
Er zijn geen extra kosten per streaming-eenheid in de Stream Analytics-taak. De Stream Analytics-taak moet echter een gekoppeld Azure-opslagaccount hebben. De Stream Analytics-taak voert een query uit op de SQL-database (tijdens het begin- en vernieuwingsinterval van de taak) om de referentiegegevensset op te halen en die momentopname op te slaan in het opslagaccount. Voor het opslaan van deze momentopnamen worden extra kosten in rekening gebracht die worden beschreven op de pagina met prijzen voor een Azure-opslagaccount.
Hoe kan ik weet u dat er een query wordt uitgevoerd op de momentopname van referentiegegevens uit SQL DB en wordt gebruikt in de Azure Stream Analytics-taak?
Er zijn twee metrische gegevens gefilterd op logische naam (onder Metrics Azure Portal) die u kunt gebruiken om de status van de SQL Database-verwijzingsgegevensinvoer te bewaken.
- InputEvents: Met deze metrische waarde wordt het aantal records berekend dat is geladen uit de SQL Database-referentiegegevensset.
- InputEventBytes: Met deze metrische waarde wordt de grootte van de momentopname van de referentiegegevens berekend die in het geheugen van de Stream Analytics-taak is geladen.
De combinatie van beide metrische gegevens kan worden gebruikt om af te stellen of de taak een query uitvoert op SQL Database om de referentiegegevensset op te halen en deze vervolgens in het geheugen te laden.
Heb ik een speciaal type Azure SQL Database nodig?
Azure Stream Analytics werkt met elk type Azure SQL Database. Het is echter belangrijk om te begrijpen dat de vernieuwingsfrequentie die is ingesteld voor uw referentiegegevensinvoer van invloed kan zijn op de belasting van uw query. Als u de deltaqueryoptie wilt gebruiken, wordt u aangeraden tijdelijke tabellen in Azure SQL Database te gebruiken.
Waarom worden momentopnamen van Azure Stream Analytics opgeslagen in een Azure Storage-account?
Stream Analytics garandeert Exactly-once-gebeurtenissenverwerking Least-once-levering van gebeurtenissen. In gevallen waarin tijdelijke problemen van invloed zijn op uw taak, is een kleine hoeveelheid herhaling nodig om de status te herstellen. Als u opnieuw afspelen wilt inschakelen, moet u deze momentopnamen opslaan in een Azure Storage-account. Zie Concepten voor controlepunten en herhalingen in Azure Stream Analytics-taken voor meer informatie over het opnieuw afspelen van controlepunten.
Volgende stappen
- Uitvoer van Azure Stream Analytics begrijpen
- Uitvoer van Azure Stream Analytics naar Azure SQL Database
- Doorvoerprestaties verhogen naar Azure SQL Database vanuit Azure Stream Analytics
- Beheerde identiteiten gebruiken voor toegang tot Azure SQL Database of Azure Synapse Analytics vanuit een Azure Stream Analytics-taak
- Records in Azure SQL Database bijwerken of samenvoegen met Azure Functions
- Quickstart: Een Stream Analytics-taak maken met behulp van Azure Portal