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

Azure Stream Analytics stöder Azure SQL Database som indatakälla för referensdata. Du kan använda SQL Database som referensdata för ditt Stream Analytics-jobb i Azure-portalen och i Visual Studio med Stream Analytics-verktyg. Den här artikeln visar hur du gör båda metoderna.

Azure Portal

Använd följande steg för att lägga till Azure SQL Database som en referensindatakälla med hjälp av Azure-portalen:

Portalkrav

  1. Skapa ett Stream Analytics-jobb.

  2. Skapa ett lagringskonto som ska användas av Stream Analytics-jobbet.

    Viktigt!

    Azure Stream Analytics behåller ögonblicksbilder i det här lagringskontot. När du konfigurerar kvarhållningsprincipen är det viktigt att se till att den valda tidsintervallet effektivt omfattar önskad återställningstid för ditt Stream Analytics-jobb.

  3. Skapa din Azure SQL Database med en datauppsättning som ska användas som referensdata av Stream Analytics-jobbet.

Definiera SQL Database-referensdataindata

  1. I Stream Analytics-jobbet väljer du Indata under Jobbtopologi. Klicka på Lägg till referensindata och välj 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. Fyll i Stream Analytics-indatakonfigurationerna. Välj databasnamn, servernamn, användarnamn och lösenord. Om du vill att referensdataindata ska uppdateras regelbundet väljer du "På" för att ange uppdateringsfrekvensen i DD:HH:MM. Om du har stora datamängder med en kort uppdateringsfrekvens. Med Delta-frågan kan du spåra ändringar i dina referensdata genom att retreivera alla rader i SQL Database som infogades eller togs bort inom en starttid, @deltaStartTimeoch en sluttid @deltaEndTime.

Se deltafrågan.

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. Testa ögonblicksbildsfrågan i SQL-frågeredigeraren. Mer information finns i Använda Azure-portalens SQL-frågeredigerare för att ansluta och fråga efter data

Ange lagringskonto i Jobbkonfiguration

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

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

Starta jobbet

När du har konfigurerat andra indata, utdata och frågor kan du starta Stream Analytics-jobbet.

Verktyg för Visual Studio

Använd följande steg för att lägga till Azure SQL Database som en referensindatakälla med hjälp av Visual Studio:

Krav för Visual Studio

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

    • 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 i det här lagringskontot. När du konfigurerar kvarhållningsprincipen är det viktigt att se till att den valda tidsintervallet effektivt omfattar önskad återställningstid 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 .

Exempeltabellen som används i följande exempel skapades från följande instruktion:

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. Högerklicka på Azure, välj Anslut till Microsoft Azure-prenumeration och logga in med ditt Azure-konto.

Skapa ett Stream Analytics-projekt

  1. Välj Fil > nytt projekt.

  2. I listan över mallar till vänster väljer du Stream Analytics och sedan Azure Stream Analytics-programmet.

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

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

Definiera SQL Database-referensdataindata

  1. Skapa en ny indata.

    On Add New Item, Input is selected.

  2. Dubbelklicka på Input.json i Solution Explorer.

  3. Fyll i Stream Analytics-indatakonfigurationen. Välj databasnamn, servernamn, uppdateringstyp och uppdateringshastighet. Ange uppdateringsfrekvensen i formatet DD:HH:MM.

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

    Om du väljer "Kör bara en gång" eller "Kör regelbundet" genereras en SQL CodeBehind-fil med namnet [Indataalias].snapshot.sql i projektet under filnoden Input.json .

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

    Om du väljer Uppdatera regelbundet med Delta genereras två SQL CodeBehind-filer: [Indataalias].snapshot.sql och [Indataalias].delta.sql.

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

  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-verktyg kan du testa frågan genom att klicka på Kör. Ett guidefönster visas som hjälper dig att ansluta till SQL Database och frågeresultatet visas i fönstret längst ned.

Ange lagringskonto

Öppna JobConfig.json för att ange lagringskontot för lagring av SQL-referensögonblicksbilder.

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

Testa lokalt och distribuera till Azure

Innan du distribuerar jobbet till Azure kan du testa frågelogik lokalt mot live-indata. Mer information om den här funktionen finns i Testa livedata lokalt med hjälp av Azure Stream Analytics-verktyg för Visual Studio (förhandsversion). När du är klar med testningen klickar du på Skicka till Azure. Referera till snabbstarten Skapa en Stream Analytics med hjälp av Azure Stream Analytics-verktygen för Visual Studio för att lära dig hur du startar jobbet.

Deltafråga

När du använder deltafrågan rekommenderas temporala tabeller 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-körningen att hämta referensdatauppsättningen från SQL Database-temporaltabellen som är giltig vid systemtiden. Om du inte anger den här parametern riskerar du att få en felaktig basreferensdatauppsättning på grund av klocksnedvridningar. Ett exempel på en fullständig ögonblicksbildsfråga visas nedan:

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

    Den här frågan hämtar alla rader i SQL Database som infogades eller togs bort inom en starttid, @deltaStartTime och en sluttid @deltaEndTime. Delta-frågan måste returnera samma kolumner som ögonblicksbildsfrågan samt kolumnåtgärden. Den här kolumnen 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 vattenstämpel från SQL Server-sidan för att säkerställa att alla uppdateringar under deltaperioden registreras korrekt. Om du använder deltafråga utan vattenstämpel kan det leda till felaktig referensdatauppsättning.

    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-körningen tillämpar sedan resultatet av deltafrågan på den tidigare ögonblicksbilden för att hålla referensdata uppdaterade. Ett exempel på deltafråga visas nedan:

       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
    

    Observera att Stream Analytics-körningen regelbundet kan köra ögonblicksbildsfrågan utöver deltafrågan för att lagra kontrollpunkter.

    Viktigt!

    När du använder referensdatadeltafrågor ska du inte göra identiska uppdateringar av den tidsmässiga referensdatatabellen flera gånger. Detta kan leda till felaktiga resultat. Här är ett exempel som kan leda till 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 säkerställer att inga duplicerade uppdateringar utförs.

Testa frågan

Det är viktigt att kontrollera att frågan returnerar den förväntade datauppsättningen som Stream Analytics-jobbet ska använda som referensdata. Om du vill testa frågan går du till Indata under avsnittet Jobbtopologi på portalen. Du kan sedan välja Exempeldata på dina SQL Database-referensindata. När exemplet har blivit tillgängligt kan du ladda ned filen och kontrollera om data som returneras är som förväntat. Om du vill optimera din utveckling och testa iterationer rekommenderar vi att du använder Stream Analytics-verktygen för Visual Studio. Du kan också välja vilket annat verktyg du vill för att först se till att frågan returnerar rätt resultat från din Azure SQL Database och sedan använder den 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 sql-referensdataindata.

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

  2. Välj SQL Server-ikonen och klicka på Lägg till Anslut ion.

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

  3. Fyll i anslutningsinformationen.

    The two boxes for database and server information are highlighted.

  4. Högerklicka i referens-SQL och välj Kör fråga.

    Execute Query is highlighted in the context menu.

  5. Välj din anslutning.

    The dialog box says

  6. Granska och verifiera frågeresultatet.

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

Vanliga frågor och svar om

Kommer jag att debiteras ytterligare kostnader med sql-referensdataindata i Azure Stream Analytics?

Det finns ingen extra kostnad per strömningsenhet i Stream Analytics-jobbet. Stream Analytics-jobbet måste dock ha ett associerat Azure-lagringskonto. Stream Analytics-jobbet frågar SQL DB (under jobbstart och uppdateringsintervall) för att hämta referensdatauppsättningen och lagrar ögonblicksbilden i lagringskontot. Om du lagrar dessa ögonblicksbilder debiteras ytterligare avgifter som beskrivs på prissidan för Azure Storage-kontot.

Hur gör jag för att vet att ögonblicksbilden av referensdata efterfrågas från SQL DB och används i Azure Stream Analytics-jobbet?

Det finns två mått filtrerade efter logiskt namn (under Metrics Azure Portal) som du kan använda för att övervaka hälsotillståndet för SQL Database-referensdataindata.

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

Kombinationen av båda dessa mått kan användas för att härleda om jobbet kör frågor mot SQL Database för att hämta referensdatauppsättningen och sedan läsa in den i minnet.

Behöver jag en särskild typ av Azure SQL Database?

Azure Stream Analytics fungerar med alla typer av Azure SQL Database. Det är dock viktigt att förstå att uppdateringshastigheten som angetts för dina referensdataindata kan påverka frågebelastningen. Om du vill använda deltafrågealternativet rekommenderar vi att du använder temporala tabeller i Azure SQL Database.

Varför lagrar Azure Stream Analytics ögonblicksbilder i Azure Storage-kontot?

Stream Analytics garanterar händelsebearbetning exakt en gång och leverans av händelser minst en gång. I de fall då 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 uppspelning krävs det att dessa ögonblicksbilder lagras i ett Azure Storage-konto. Mer information om kontrollpunktsuppspelning finns i Kontrollpunkts- och reprisbegrepp i Azure Stream Analytics-jobb.

Nästa steg