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
Skapa ett Stream Analytics-jobb.
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.
Skapa din Azure SQL Database med en datauppsättning som ska användas som referensdata av Stream Analytics-jobbet.
Definiera SQL Database-referensdataindata
I Stream Analytics-jobbet väljer du Indata under Jobbtopologi. Klicka på Lägg till referensindata och välj SQL Database.
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.
- 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.
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
Installera Stream Analytics-verktygen för Visual Studio. Följande versioner av Visual Studio stöds:
- Visual Studio 2015
- Visual Studio 2019
Bekanta dig med Stream Analytics-verktygen för Visual Studio-snabbstarten .
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
Gå till menyn Visa och välj Server Explorer i Visual Studio.
Högerklicka på Azure, välj Anslut till Microsoft Azure-prenumeration och logga in med ditt Azure-konto.
Skapa ett Stream Analytics-projekt
Välj Fil > nytt projekt.
I listan över mallar till vänster väljer du Stream Analytics och sedan Azure Stream Analytics-programmet.
Ange projektets namn, plats och lösningsnamn och välj OK.
Definiera SQL Database-referensdataindata
Skapa en ny indata.
Dubbelklicka på Input.json i Solution Explorer.
Fyll i Stream Analytics-indatakonfigurationen. Välj databasnamn, servernamn, uppdateringstyp och uppdateringshastighet. Ange uppdateringsfrekvensen i formatet
DD:HH:MM
.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 .
Om du väljer Uppdatera regelbundet med Delta genereras två SQL CodeBehind-filer: [Indataalias].snapshot.sql och [Indataalias].delta.sql.
Öppna SQL-filen i redigeraren och skriv SQL-frågan.
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.
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 .
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
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
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).
Konfigurera sql-referensdataindata.
Välj SQL Server-ikonen och klicka på Lägg till Anslut ion.
Fyll i anslutningsinformationen.
Högerklicka i referens-SQL och välj Kör fråga.
Välj din anslutning.
Granska och verifiera frågeresultatet.
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
- Förstå utdata från Azure Stream Analytics
- Azure Stream Analytics-utdata till Azure SQL Database
- Öka dataflödesprestanda till Azure SQL Database från Azure Stream Analytics
- Använda hanterade identiteter för att komma åt Azure SQL Database eller Azure Synapse Analytics från ett Azure Stream Analytics-jobb
- Uppdatera eller sammanfoga poster i Azure SQL Database med Azure Functions
- Snabbstart: Skapa ett Stream Analytics-jobb med hjälp av Azure-portalen