Share via


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

  1. Een Stream Analytics-taak maken.

  2. 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.

  3. Maak uw Azure SQL Database met een gegevensset die moet worden gebruikt als referentiegegevens door de Stream Analytics-taak.

Sql Database-referentiegegevensinvoer definiëren

  1. Selecteer Invoer onder Taaktopologie in uw Stream Analytics-taak. Klik op Verwijzingsinvoer toevoegen en kies SQL Database.

    Inputs is selected in the left navigation pane. On Inputs, + Add reference input is selected, revealing a drop-down list that shows the values Blob storage and SQL Database.

  2. 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.

Zie deltaquery.

When SQL Database is selected, the SQL Database New input page appears. There is a configuration form in the left pane, and a Snapshot query in the right pane.

  1. 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.

Storage account settings is selected in the left pane. There is an Add storage account button in the right pane.

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

  1. Installeer de Stream Analytics-hulpprogramma's voor Visual Studio. De volgende versies van Visual Studio worden ondersteund:

    • Visual Studio 2015
    • Visual Studio 2019
  2. Maak kennis met de Stream Analytics-hulpprogramma's voor Visual Studio-quickstart .

  3. 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

  1. Selecteer in Visual Studio in het menu Beeld de optie Server Explorer.

  2. 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

  1. Selecteer Bestand > nieuw project.

  2. Selecteer Stream Analyticsin de sjablonenlijst aan de linkerkant en selecteer vervolgens Azure Stream Analytics Application.

  3. Voer de projectnaam, locatie en oplossingsnaam in en selecteer OK.

    The Stream Analytics template is selected, Azure Stream Analytics Application is selected, and the Name, Location, and Solution names boxes are highlighted.

Sql Database-referentiegegevensinvoer definiëren

  1. Maak een nieuwe invoer.

    On Add New Item, Input is selected.

  2. Dubbelklik op Input.json in Solution Explorer.

  3. Vul de Stream Analytics-invoerconfiguratie in. Kies de databasenaam, servernaam, vernieuwingstype en vernieuwingsfrequentie. Geef de vernieuwingsfrequentie op in de indeling DD:HH:MM.

    In Stream Analytics Input Configuration, values are entered or selected from drop-down lists.

    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 .

    The SQL CodeBehind file Chemicals.snapshot.sql is highlighted.

    Als u 'Periodiek vernieuwen met Delta' kiest, worden er twee SQL CodeBehind-bestanden gegenereerd: [Input Alias].snapshot.sql en [Input Alias].delta.sql.

    The SQL CodeBehind files Chemicals.delta.sql and Chemicals.snapshot.sql are highlighted.

  4. Open het SQL-bestand in de editor en schrijf de SQL-query.

  5. 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.

Stream Analytics Job Configure Configuration is shown with default values. The Global Storage Settings are highlighted.

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.

  1. 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
    
  2. 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
    
  3. 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).

  1. Configureer uw SQL-referentiegegevensinvoer.

    A Visual Studio Code editor (tab) shows ReferenceSQLDatabase.json.

  2. Selecteer het SQL Server-pictogram en klik op Verbinding maken ion toevoegen.

    + Add Connection appears in the left pane and is highlighted.

  3. Vul de verbindingsgegevens in.

    The two boxes for database and server information are highlighted.

  4. Klik met de rechtermuisknop in referentie-SQL en selecteer Query uitvoeren.

    Execute Query is highlighted in the context menu.

  5. Kies uw verbinding.

    The dialog box says

  6. Controleer en controleer het queryresultaat.

    The query search results are in a VS Code editor tab.

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