Använda referensdata från en SQL Database för ett Azure Stream Analytics-jobb

Referensdata är en statisk eller långsamt föränderlig datamängd som du kopplar ihop med din strömmande data för att berika den, till exempel genom att lägga till produktdetaljer i en ström av försäljningshändelser. Azure Stream Analytics stöder Azure SQL Database som en källa för referensdata, så du kan slå upp och kombinera denna data med din realtidsinmatning.

Den här artikeln visar hur du konfigurerar en Azure SQL Database som referensdatainmatning för ett Stream Analytics-jobb, genom att använda både Azure-portalen och Visual Studio med Stream Analytics-verktyg.

Lägg till SQL Database-referensdata genom att använda Azure-portalen

Använd följande steg för att lägga till Azure SQL Database som referensindata genom att använda Azure-portalen:

Portalkrav

  1. Skapa ett Stream Analytics-jobb.

  2. Skapa ett lagringskonto som Stream Analytics-jobbet kan använda.

    Viktigt!

    Azure Stream Analytics behåller ögonblicksbilder inom detta lagringskonto. När du konfigurerar retentionspolicyn, se till att den valda tidsperioden inkluderar den återställningstid du vill ha för ditt Stream Analytics-jobb.

  3. Skapa din Azure SQL Database med en datamängd som Stream Analytics-jobbet använder som referensdata.

Definiera indata för SQL Database-referensdata

  1. I ditt Stream Analytics-jobb väljer du Indata under Jobbtopologi. Välj Lägg till referensindata, och välj sedan SQL Database.

    Skärmdump av panelen Stream Analytics Inputs med Add reference input valt, som visar en rullgardinslista med värdena Blob Storage och SQL Database.

  2. Fyll i Stream Analytics inmatningskonfiguration. Välj databasens namn, servernamn och inloggningsuppgifter för databasen. För att uppdatera din referensdata regelbundet, välj och ange uppdateringsfrekvensen i DD:HH:MM. För stora datamängder med kort uppdateringsfrekvens spårar delta-fråga förändringar i din referensdata genom att hämta alla rader i SQL-databasen som infogades eller raderades mellan en starttid, @deltaStartTime, och en sluttid, @deltaEndTime.

    För mer information, se delta-fråga.

    Skärmdump av SQL Databases nya inmatningssida med ett konfigurationsformulär i vänstra panelen och en snapshot-fråga i höger panel.

  3. Testa ögonblicksbildsfrågan i SQL-frågeredigeraren. För mer information, se Använd Azure-portalens SQL-frågeredigerare för att koppla ihop och söka data.

Ange lagringskontot i jobbkonfigurationen

Gå till Lagringskontoinställningar under Konfigurera och välj sedan Lägg till lagringskonto.

Skärmdump av inställningspanelen för lagringskonto med knappen Lägg till lagringskonto i den högra rutan.

Starta jobbet

  1. Efter att du konfigurerat de andra indata, utdata och förfrågan, starta Stream Analytics-jobbet.

Lägg till SQL Database-referensdata genom att använda Visual Studio

Använd följande steg för att lägga till Azure SQL Database som referensinmatningskälla genom att använda Visual Studio:

Krav för Visual Studio

  1. Installera Stream Analytics-verktygen för Visual Studio. Stream Analytics-verktygen stödjer följande versioner av Visual Studio:

    • Visual Studio 2015
    • Visual Studio 2019
  2. Bekanta dig med Stream Analytics-verktygen för Visual Studio-snabbstarten .

  3. Skapa ett lagringskonto.

    Viktigt!

    Azure Stream Analytics behåller ögonblicksbilder inom detta lagringskonto. När du konfigurerar retentionspolicyn, se till att den valda tidsperioden inkluderar den återställningstid du vill ha för ditt Stream Analytics-jobb.

Skapa en SQL Database-tabell

Använd SQL Server Management Studio för att skapa en tabell för att lagra dina referensdata. Mer information finns i Utforma din första Azure SQL Database med SSMS .

Följande sats skapar exempeltabellen:

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

Välj din prenumeration

  1. Gå till menyn Visa och välj Server Explorer i Visual Studio.

  2. Välj och håll in (eller högerklicka) Azure, välj Connect to Microsoft Azure Subscription och logga in med ditt Azure-konto.

Skapa ett Stream Analytics-projekt

  1. Välj Fil>Nytt projekt.

  2. I malllistan, välj Stream Analytics och välj sedan Azure Stream Analytics Application.

  3. Ange projektets namn, plats och lösningsnamn och välj sedan OK.

    Skärmdump av dialogen New Project med Stream Analytics-mallen och Azure Stream Analytics-applikationen valda, samt rutorna Namn, Plats och Lösning markerade.

Definiera referensdataindata för SQL Database

  1. Skapa en ny inmatning.

    Skärmdump av dialogen Lägg till nytt föremål med Input valt.

  2. Öppna Input.json i Prieskumník riešení.

  3. Fyll i konfigurationen för indata i Stream Analytics. Ange databasens namn, servernamn, uppdateringstyp och uppdateringsfrekvens. Ange uppdateringsfrekvensen i formatet DD:HH:MM.

    Skärmdump av Stream Analytics Input Configuration med värden inmatade eller valda från rullgardinslistor.

    Om du väljer Kör bara en gång eller Kör periodiskt, genererar Visual Studio en SQL CodeBehind-fil som heter [Input Alias].snapshot.sql i projektet under denInput.json filnoden.

    Skärmdump av Prieskumník riešení med SQL CodeBehind-filen Chemicals.snapshot.sql markerad.

    Om du väljer Uppdatera periodiskt med Delta genererar Visual Studio två SQL CodeBehind-filer: [Input Alias].snapshot.sql och [Input Alias].delta.sql.

    Skärmdump av Prieskumník riešení med SQL CodeBehind-filerna Chemicals.delta.sql och Chemicals.snapshot.sql markerade.

  4. Öppna SQL-filen i redigeraren och skriv SQL-frågan.

  5. Om du använder Visual Studio 2019 och har installerat SQL Server Data Tools kan du testa frågan genom att välja Execute. En guide öppnas för att hjälpa dig att ansluta till SQL Database, och frågeresultatet visas i fönstret längst ner.

Ange lagringskonto

Öppna JobConfig.json för att ange lagringskontot för att lagra SQL-referenssnapshots.

Skärmdump av Stream Analytics-jobbkonfigurationen visas med standardvärden och de globala lagringsinställningarna markerade.

Testa lokalt och distribuera till Azure

Innan du distribuerar jobbet till Azure kan du testa frågelogiken lokalt mot live-indata. För mer information om denna funktion, se Testa livedata lokalt med Azure Stream Analytics-verktyg för Visual Studio (Preview). När du är klar med testningen, välj Skicka till Azure. För att lära dig hur du startar jobbet, se Create a Stream Analytics-jobbet genom att använda Azure Stream Analytics-verktygen för Visual Studio quickstart.

Deltafråga

När du använder delta-frågan, använd temporal tables i Azure SQL Database.

  1. Skapa en temporal tabell i 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. Redigera ögonblicksbildsfrågan.

    Använd parametern @snapshotTime för att instruera Stream Analytics-runtimen att hämta referensdatamängden från SQL Database-tidstabellen som är giltig vid systemtillfället. Om du inte tillhandahåller denna parameter riskerar du att få en felaktig basreferensdatamängd på grund av klocksnedvridningar. Följande exempel visar en fullständig snapshot-fråga:

       SELECT DeviceId, GroupDeviceId, [Description]
       FROM dbo.DeviceTemporal
       FOR SYSTEM_TIME AS OF @snapshotTime
    
  3. Skriv deltafrågan.

    Denna fråga hämtar alla rader i SQL Database som infogades eller raderades inom en starttid, @deltaStartTime, och en sluttid, @deltaEndTime. Delta-frågan måste returnera samma kolumner som ögonblicksbildsfrågan samt kolumnåtgärden. Denna kolumn definierar om raden infogas eller tas bort mellan @deltaStartTime och @deltaEndTime. De resulterande raderna flaggas som 1 om posterna infogades eller 2 om de togs bort. Frågan måste också lägga till watermark på SQL Server-sidan för att säkerställa att alla uppdateringar i deltaperioden fångas upp korrekt. Att använda en delta-fråga utan vattenstämpel kan resultera i en felaktig referensdatamängd.

    För poster som har uppdaterats gör den tidsmässiga tabellen bokföring genom att samla in en infognings- och borttagningsåtgärd. Stream Analytics-runtimen tillämpar sedan resultaten från delta-frågan på föregående ögonblicksbild för att hålla referensdata uppdaterad. Följande exempel visar en deltafråga:

       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
    

    Stream Analytics-runtimen kan periodvis köra snapshot-frågan utöver delta-frågan för att lagra checkpoints.

    Viktigt!

    När du använder referensdata-deltafrågor, gör inte identiska uppdateringar i den temporala referensdatatabellen flera gånger. Detta kan ge felaktiga resultat. Här är ett exempel som kan göra att referensdata ger felaktiga resultat:

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

    Rätt exempel:

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

    Detta villkor säkerställer att inga dubbletter uppdateringar sker.

Testa din fråga

Verifiera att din sökning returnerar den förväntade datamängd som Stream Analytics-jobbet använder som referensdata. För att testa din fråga, gå till Inputs under avsnittet Jobbtopologi i portalen. Välj sedan Exempeldata på din SQL-databasreferensinmatning. När provet blir tillgängligt kan du ladda ner filen och kontrollera om den returnerade datan är som förväntat. För att optimera din utveckling och testiterationer, använd Stream Analytics-verktygen för Visual Studio. Du kan också använda vilket annat verktyg du föredrar för att först säkerställa att frågan ger rätt resultat från din Azure SQL Database, och sedan använda den frågan i ditt Stream Analytics-jobb.

Testa din fråga med Visual Studio Code

Installera Azure Stream Analytics Tools och SQL Server (mssql) i Visual Studio Code och konfigurera DITT ASA-projekt. Mer information finns i Snabbstart: Skapa ett Azure Stream Analytics-jobb i Visual Studio Code och självstudiekursen för SQL Server-tillägget (mssql).

  1. Konfigurera dina SQL-referensindata.

    Skärmdump av en flik för Visual Studio Code editor som visar ReferenceSQLDatabase.json-filen.

  2. Välj SQL Server-ikonen och välj Lägg till anslutning.

    Skärmdump av vänstra panelen med alternativet Lägg till anslutning markerat.

  3. Fyll i anslutningsinformationen.

    Skärmdump av anslutningsformuläret med databas- och serverinformationsrutor markerade.

  4. Välj och håll ned (eller högerklicka) i referens-SQL och välj Execute Query.

    Skärmdump av kontextmenyn med alternativet Utför Fråga markerat.

  5. Välj din anslutning.

    Skärmdump av en dialogruta som säger Skapa en anslutningsprofil från listan nedan, med en listapost markerad.

  6. Granska och verifiera frågeresultatet.

    Skärmdump av sökresultaten i en flik för Visual Studio Code-redigeraren.

Vanliga frågor och svar

Får jag extra kostnader genom att använda SQL-referensdatainmatning i Azure Stream Analytics?

Det finns ingen extra kostnad per streamingenhet i Stream Analytics-jobbet. Stream Analytics-jobbet måste dock ha ett associerat Azure-lagringskonto. Stream Analytics-jobbet gör frågor mot SQL-databasen (vid jobbstart och vid varje uppdateringsintervall) för att hämta referensdatauppsättningen och lagrar ögonblicksbilden i lagringskontot. Att lagra dessa snapshots medför extra kostnader som anges på prissidan för Azure-lagringskontot.

Hur vet jag om en referensdatasnapshot efterfrågas från SQL Database och används i Azure Stream Analytics-jobbet?

Två mätvärden, filtrerade efter Logiskt namn (under Metrics i Azure-portalen), låter dig övervaka hälsan på SQL-databasens referensdata.

  • InputEvents: Denna metrik mäter antalet poster som laddas från SQL Database-referensdatasetet.
  • InputEventBytes: Det här måttet mäter storleken på referensdataögonblicksbilden som läses in i minnet för Stream Analytics-jobbet.

Tillsammans indikerar båda måtten om jobbet frågar SQL Database för att hämta referensdatasetet och sedan laddar det till minnet.

Behöver jag en speciell typ av Azure SQL Database?

Azure Stream Analytics fungerar med alla typer av Azure SQL Database. Dock kan uppdateringsfrekvensen du ställer in för din referensdatainmatning påverka din sökningsbelastning. För att använda delta-frågan, använd temporala tabeller i Azure SQL Database.

Varför lagrar Azure Stream Analytics snapshots i ett Azure Storage-konto?

Stream Analytics garanterar att varje händelse bearbetas exakt en gång och att händelser levereras minst en gång. Om tillfälliga problem påverkar ditt jobb krävs en liten mängd omspelning för att återställa tillståndet. För att aktivera replay måste dessa snapshots lagras i ett Azure Storage-konto. Mer information om kontrollpunktsuppspelning finns i Begrepp för kontrollpunkter och uppspelning i Azure Stream Analytics-jobb.