Använda referensdata för uppslag i Stream Analytics

Referensdata (kallas även för en uppslagstabell) är en begränsad datauppsättning som är statisk eller långsamt föränderlig till sin natur, som används för att utföra en sökning eller för att utöka dina dataströmmar. I ett IoT-scenario kan du till exempel lagra metadata om sensorer (som inte ändras ofta) i referensdata och koppla dem till IoT-dataströmmar i realtid. Azure Stream Analytics läser in referensdata i minnet för att uppnå dataströmbearbetning med låg latens. Om du vill använda referensdata i Azure Stream Analytics jobb använder du vanligtvis en referensdatakoppling i din fråga.

Exempel

Du kan ha en realtidsström med händelser som genereras när bilar passerar ett avgiftsbelagda bås. Avgiftsbelagda bås kan samla in registreringsnumret i realtid och ansluta med en statisk datamängd som har registreringsinformation för att identifiera registreringsskyltar som har gått ut.

SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId  
FROM Input1 I1 TIMESTAMP BY EntryTime  
JOIN Registration R  
ON I1.LicensePlate = R.LicensePlate  
WHERE R.Expired = '1'

Stream Analytics azure blobblagring och Azure SQL Database som lagringslager för referensdata. Du kan också transformera och/eller kopiera referensdata till Blob Storage från Azure Data Factory att använda val annat antal molnbaserade och lokala datalager.

Azure Blob Storage

Referensdata modelleras som en sekvens med blobar (definieras i indatakonfigurationen) i stigande ordning efter det datum/tid som anges i blobnamnet. Den stöder endast tillägg i slutet av sekvensen genom att använda ett datum/tid som är större än det som anges av den sista bloben i sekvensen. Mer information finns i Använda referensdata från en Blob Storage för ett Azure Stream Analytics jobb.

Konfigurera blobreferensdata

För att konfigurera dina referensdata måste du först skapa indata av typen Referensdata. I tabellen nedan förklaras varje egenskap som du måste ange när du skapar referensdataindata med dess beskrivning:

Egenskapens namn Beskrivning
Indataalias Ett eget namn som ska användas i jobbfrågan för att referera till dessa indata.
Lagringskonto Namnet på lagringskontot där dina blobar finns. Om den finns i samma prenumeration som Stream Analytics jobb kan du välja den i listrutan.
Storage Kontonyckel Den hemliga nyckeln som är associerad med lagringskontot. Detta fylls i automatiskt om lagringskontot finns i samma prenumeration som Stream Analytics jobb.
Storage Behållare Containrar tillhandahåller en logisk gruppering för blobar som lagras i Microsoft Azure Blob Service. När du laddar upp en blob till Blob Service måste du ange en container för bloben.
Sökvägsmönster Det här är en obligatorisk egenskap som används för att hitta dina blobar i den angivna containern. I sökvägen kan du välja att ange en eller flera instanser av följande två variabler:
{date}, {time}
Exempel 1: products/{date}/{time}/product-list.csv
Exempel 2: products/{date}/product-list.csv
Exempel 3: product-list.csv

Om bloben inte finns i den angivna sökvägen Stream Analytics jobbet på obestämd tid tills bloben blir tillgänglig.
Datumformat [valfritt] Om du har använt {date} i sökvägsmönstret som du angav kan du välja det datumformat som dina blobar ordnas i från listrutan med format som stöds.
Exempel: YYYY/MM/DD, MM/DD/YYYY osv.
Tidsformat [valfritt] Om du har använt {time} i sökvägsmönstret som du angav kan du välja det tidsformat som dina blobar ordnas i listrutan med format som stöds.
Exempel: HH, HH/mm eller HH-mm.
Format för händelseserialisering För att se till att dina frågor fungerar som förväntat Stream Analytics du veta vilket serialiseringsformat du använder för inkommande dataströmmar. För referensdata är de format som stöds CSV och JSON.
Kodning UTF-8 är det enda kodningsformat som stöds just nu.

Statiska referensdata

Om dina referensdata inte förväntas ändras aktiveras stöd för statiska referensdata genom att en statisk sökväg anges i indatakonfigurationen. Azure Stream Analytics hämtar bloben från den angivna sökvägen. {date} och {time} ersättningstoken krävs inte. Eftersom referensdata inte kan ändras i Stream Analytics rekommenderas inte att skriva över en statisk referensdatablob.

Generera referensdata enligt ett schema

Om dina referensdata är en långsamt föränderlig datauppsättning aktiveras stöd för uppdatering av referensdata genom att ange ett sökvägsmönster i indatakonfigurationen med hjälp av ersättningstoken {date} och {time}. Stream Analytics hämtar de uppdaterade referensdatadefinitionerna baserat på det här sökvägsmönstret. Ett mönster med datumformatet sample/{date}/{time}/products.csv "ÅJAYY-MM-DD" och tidsformatet "HH-mm" instruerar till exempel Stream Analytics att hämta den uppdaterade bloben sample/2015-04-16/17-30/products.csv kl. 17:30 den 16 april 2015 UTC-tidszonen.

Azure Stream Analytics söker automatiskt efter uppdaterade referensdatablobar med ett minuts intervall. Om en blob med tidsstämpel 10:30:00 laddas upp med en liten fördröjning (till exempel 10:30:30) ser du en liten fördröjning i Stream Analytics-jobb som refererar till den här bloben. För att undvika sådana scenarier rekommenderar vi att du laddar upp bloben tidigare än den effektiva måltiden (10:30:00 i det här exemplet) så att Stream Analytics-jobbet har tillräckligt med tid för att identifiera och läsa in den i minnet och utföra åtgärder.

Anteckning

För Stream Analytics jobb endast efter blobuppdateringen när datortiden avancerar till den tid som kodats i blobnamnet. Jobbet söker till exempel efter så snart som möjligt, men tidigast sample/2015-04-16/17-30/products.csv 17:30 den 16 april 2015 UTC-tidszonen. Den letar aldrig efter en blob med en kodad tid tidigare än den senaste som har identifierats.

När jobbet till exempel hittar bloben ignoreras filer med ett kodat datum tidigare än sample/2015-04-16/17-30/products.csv 17:30 16 april 2015, så om en blob som kommer för sent skapas i samma container kommer jobbet inte att använda sample/2015-04-16/17-25/products.csv den.

På samma sätt gäller att om endast skapas 10:03 16 april 2015 men ingen blob med ett tidigare datum finns i containern, använder jobbet den här filen från och med sample/2015-04-16/17-30/products.csv 10:03 16 april 2015 och använder tidigare referensdata tills dess.

Ett undantag till detta är när jobbet måste bearbeta data bakåt i tiden eller när jobbet startas första gången. Vid starttiden letar jobbet efter den senaste bloben som producerats innan jobbets starttid anges. Detta görs för att säkerställa att det finns en icke-tom referensdatauppsättning när jobbet startar. Om det inte går att hitta något visar jobbet följande diagnostik: Initializing input without a valid reference data blob for UTC time <start time> .

Azure Data Factory kan användas för att samordna uppgiften att skapa de uppdaterade blobar som krävs av Stream Analytics för att uppdatera referensdatadefinitioner. Data Factory är en molnbaserad dataintegreringstjänst som samordnar och automatiserar förflyttning och transformering av data. Data Factory stöder anslutning till ett stort antal molnbaserade och lokala datalager och flyttar data enkelt enligt ett regelbundet schema som du anger. Mer information och stegvis vägledning om hur du genererar en Data Factory-pipeline för att generera referensdata för Stream Analytics som uppdateras enligt ett fördefinierat schema finns i det här GitHub-exemplet.

Tips på att uppdatera blobreferensdata

  1. Skriva inte över referensdatablobar eftersom de inte kan ändras.
  2. Det rekommenderade sättet att uppdatera referensdata är att:
    • Använd {date}/{time} i sökvägsmönstret
    • Lägg till en ny blob med samma container- och sökvägsmönster som definierats i jobbindata
    • Använd ett datum/tid som är större än det som anges av den sista bloben i sekvensen.
  3. Referensdatablobar sorteras inte efter blobens tid för senaste ändring, utan endast efter den tid och det datum som anges i blobnamnet med hjälp av ersättningarna {date} och {time}.
  4. För att undvika att behöva lista ett stort antal blobar bör du överväga att ta bort mycket gamla blobar som bearbetningen inte längre görs för. Observera att ASA kan behöva ombearbeta en liten mängd i vissa scenarier, till exempel en omstart.

Azure SQL Database

Azure SQL Database-referensdata hämtas av ditt Stream Analytics och lagras som en ögonblicksbild i minnet för bearbetning. Ögonblicksbilden av dina referensdata lagras också i en container i ett lagringskonto som du anger i konfigurationsinställningarna. Containern skapas automatiskt när jobbet startas. Om jobbet stoppas eller förs in i ett misslyckat tillstånd tas de automatiskt skapade containrarna bort när jobbet startas om.

Om dina referensdata är en långsamt föränderlig datauppsättning måste du regelbundet uppdatera ögonblicksbilden som används i jobbet. Stream Analytics kan du ange en uppdateringshastighet när du konfigurerar din Azure SQL Database indataanslutning. Den Stream Analytics körningen kör frågor mot Azure SQL Database med det intervall som anges av uppdateringshastigheten. Den snabbaste uppdateringstakten som stöds är en gång per minut. För varje uppdatering Stream Analytics en ny ögonblicksbild i det angivna lagringskontot.

Stream Analytics finns två alternativ för att fråga Azure SQL Database. En ögonblicksbildsfråga är obligatorisk och måste ingå i varje jobb. Stream Analytics kör ögonblicksbildfrågan regelbundet baserat på uppdateringsintervallet och använder resultatet av frågan (ögonblicksbilden) som referensdatauppsättning. Ögonblicksbildfrågan bör passa de flesta scenarier, men om du får prestandaproblem med stora datamängder och snabba uppdateringshastigheter kan du använda deltafrågealternativet. Frågor som tar mer än 60 sekunder att returnera referensdatauppsättningen resulterar i en tidsgräns.

Med deltafrågealternativet kör Stream Analytics ögonblicksbildfrågan från början för att hämta en referensdatauppsättning för baslinjen. Därefter kör Stream Analytics deltafrågan regelbundet baserat på uppdateringsintervallet för att hämta inkrementella ändringar. Dessa inkrementella ändringar tillämpas kontinuerligt på referensdatauppsättningen för att hålla den uppdaterad. Med deltafråga kan du minska lagringskostnaden och nätverkets I/O-åtgärder.

Konfigurera SQL Database referens

För att konfigurera SQL Database-referensdata måste du först skapa referensdataindata. I tabellen nedan förklaras varje egenskap som du måste ange när du skapar referensdataindata med dess beskrivning. Mer information finns i Använda referensdata från en SQL Database för ett Azure Stream Analytics jobb.

Du kan använda Azure SQL Managed Instance som referensdatainmatning. Du måste konfigurera en offentlig slutpunkt i SQL Managed Instance och sedan manuellt konfigurera följande inställningar i Azure Stream Analytics. Virtuella Azure-datorer som SQL Server med en ansluten databas stöds också genom att manuellt konfigurera inställningarna nedan.

Egenskapens namn Beskrivning
Inmatat alias Ett eget namn som ska användas i jobbfrågan för att referera till dessa indata.
Prenumeration Välj din prenumeration
Databas Den Azure SQL Database som innehåller dina referensdata. För SQL Managed Instance måste du ange port 3342. Till exempel sampleserver.public.database.windows.net,3342
Användarnamn Användarnamnet som är associerat med Azure SQL Database.
Lösenord Lösenordet som är associerat med Azure SQL Database.
Uppdatera regelbundet Med det här alternativet kan du välja en uppdateringshastighet. Om du väljer "På" kan du ange uppdateringsfrekvensen i DD:HH:MM.
Ögonblicksbildfråga Det här är standardalternativet för frågor som hämtar referensdata från din SQL Database.
Deltafråga För avancerade scenarier med stora datamängder och en kort uppdateringshastighet väljer du att lägga till en deltafråga.

Storleksbegränsning

Vi rekommenderar att du använder referensdatauppsättningar som är mindre än 300 MB för bästa prestanda. Referensdatauppsättningar på 5 GB eller lägre stöds i jobb med 6 ENHETER eller mer. Om du använder mycket stora referensdata kan det påverka svarstiden för jobbet från slutet till slut. När frågans komplexitet ökar till att omfatta tillståndsfull bearbetning, till exempel fönsteraggregeringar, temporala kopplingar och temporala analysfunktioner, förväntas den maximala storleken på referensdata minska. Om Azure Stream Analytics inte kan läsa in referensdata och utföra komplexa åtgärder får jobbet slut på minne och misslyckas. I sådana fall når måttet SU % utnyttjande 100 %.

Antal direktuppspelningsenheter Rekommenderad storlek
1 50 MB eller lägre
3 150 MB eller lägre
6 och mer 5 GB eller lägre.

Stöd för komprimering är inte tillgängligt för referensdata. För referensdatauppsättningar som är större än 300 MB rekommenderar vi att du Azure SQL Database som källa med deltafrågealternativ för optimala prestanda. Om deltafrågan inte används i sådana scenarier visas toppar i måttet för vattenstämpelfördröjning varje gång referensdatauppsättningen uppdateras.

Koppla flera referensdatauppsättningar i ett jobb

Du kan bara koppla en strömindata med en referensdatainmatning i ett enda steg i frågan. Du kan dock koppla flera referensdatauppsättningar genom att dela upp frågan i flera steg. Ett exempel på detta visas nedan.

With Step1 as (
    --JOIN input stream with reference data to get 'Desc'
    SELECT streamInput.*, refData1.Desc as Desc
    FROM    streamInput
    JOIN    refData1 ON refData1.key = streamInput.key 
)
--Now Join Step1 with second reference data
SELECT *
INTO    output 
FROM    Step1
JOIN    refData2 ON refData2.Desc = Step1.Desc 

IoT Edge jobb

Endast lokala referensdata stöds för Stream Analytics gränsjobb. När ett jobb distribueras till IoT Edge läses referensdata in från den användardefinierade filsökvägen. Ha en referensdatafil klar på enheten. För en Windows-container lägger du referensdatafilen på den lokala enheten och delar den lokala enheten med Docker-containern. För en Linux-container skapar du en Docker-volym och fyller i datafilen till volymen.

Referensdata vid IoT Edge utlöses av en distribution. När den har utlösts Stream Analytics modulen uppdaterade data utan att stoppa jobbet som körs.

Det finns två sätt att uppdatera referensdata:

  • Uppdatera referensdatasökvägen i ditt Stream Analytics jobb från Azure Portal.

  • Uppdatera IoT Edge distributionen.

Nästa steg