Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
Skapa ett Stream Analytics-jobb.
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.
Skapa din Azure SQL Database med en datamängd som Stream Analytics-jobbet använder som referensdata.
Definiera indata för SQL Database-referensdata
I ditt Stream Analytics-jobb väljer du Indata under Jobbtopologi. Välj Lägg till referensindata, och välj sedan SQL Database.
Fyll i Stream Analytics inmatningskonfiguration. Välj databasens namn, servernamn och inloggningsuppgifter för databasen. För att uppdatera din referensdata regelbundet, välj På 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.
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.
Starta jobbet
- 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
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
Bekanta dig med Stream Analytics-verktygen för Visual Studio-snabbstarten .
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
Gå till menyn Visa och välj Server Explorer i Visual Studio.
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
Välj Fil>Nytt projekt.
I malllistan, välj Stream Analytics och välj sedan Azure Stream Analytics Application.
Ange projektets namn, plats och lösningsnamn och välj sedan OK.
Definiera referensdataindata för SQL Database
Skapa en ny inmatning.
Öppna Input.json i Prieskumník riešení.
Fyll i konfigurationen för indata i Stream Analytics. Ange databasens namn, servernamn, uppdateringstyp och uppdateringsfrekvens. Ange uppdateringsfrekvensen i formatet
DD:HH:MM.
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.
Om du väljer Uppdatera periodiskt med Delta genererar Visual Studio två SQL CodeBehind-filer: [Input Alias].snapshot.sql och [Input Alias].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 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.
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.
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 queryRedigera ö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 @snapshotTimeSkriv 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 deletedStream 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).
Konfigurera dina SQL-referensindata.
Välj SQL Server-ikonen och välj Lägg till anslutning.
Fyll i anslutningsinformationen.
Välj och håll ned (eller högerklicka) i referens-SQL och välj Execute Query.
Välj din anslutning.
Granska och verifiera frågeresultatet.
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.
Relaterat innehåll
- Förstå utdata från Azure Stream Analytics
- Utdata från Azure Stream Analytics 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 Portal