Referentiegegevens gebruiken voor zoekactie in Stream Analytics

Referentiegegevens (ook wel een opzoektabel genoemd) is een eindige gegevensset die statisch is of langzaam verandert van aard, die wordt gebruikt om een zoekactie uit te voeren of om uw gegevensstromen te verbeteren. In een IoT-scenario kunt u bijvoorbeeld metagegevens over sensoren (die niet vaak veranderen) opslaan in referentiegegevens en deze koppelen met realtime IoT-gegevensstromen. Azure Stream Analytics laadt referentiegegevens in het geheugen om stroomverwerking met lage latentie te bereiken. Als u gebruik wilt maken van referentiegegevens in Azure Stream Analytics taak, gebruikt u in het algemeen een verwijzingsgegevens join in uw query.

Voorbeeld

U kunt een realtime stroom gebeurtenissen genereren die worden gegenereerd wanneer auto's een tolweg passeren. De tolweg kan het licentiebord in realtime vastleggen en worden toegevoegd aan een statische gegevensset met registratiegegevens om de verlopen licenties te identificeren.

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 biedt ondersteuning voor Azure Blob Storage en Azure SQL Database als de opslaglaag voor referentiegegevens. U kunt ook referentiegegevens transformeren en/of kopiëren naar Blob Storage vanuit Azure Data Factory om een groot aantal cloud- en on-premisesgegevensopslag te gebruiken.

Azure Blob Storage

Referentiegegevens worden gemodelleerd als een reeks blobs (gedefinieerd in de invoerconfiguratie) in oplopende volgorde van de datum/tijd die is opgegeven in de blobnaam. Het biedt alleen ondersteuning voor het toevoegen aan het einde van de reeks met behulp van een datum/tijd die groter is dan de datum/tijd die is opgegeven door de laatste blob in de reeks. Zie Referentiegegevens uit een Blob-Storage gebruiken voor een Azure Stream Analytics-taak voor meer informatie.

Blobverwijzingsgegevens configureren

Als u uw referentiegegevens wilt configureren, moet u eerst een invoer van het type Referentiegegevens maken. In de onderstaande tabel wordt elke eigenschap uitgelegd die u moet verstrekken tijdens het maken van de referentiegegevensinvoer met de beschrijving:

Eigenschapsnaam Beschrijving
Invoeralias Een gebruiksvriendelijke naam die wordt gebruikt in de taakquery om naar deze invoer te verwijzen.
Opslagaccount De naam van het opslagaccount waarin uw blobs zich bevinden. Als deze zich in hetzelfde abonnement als uw Stream Analytics taak, kunt u deze selecteren in de vervolgkeuzekeuze.
Storage Accountsleutel De geheime sleutel die is gekoppeld aan het opslagaccount. Dit wordt automatisch ingevuld als het opslagaccount zich in hetzelfde abonnement als uw Stream Analytics taak.
Opslagcontainer Containers bieden een logische groepering voor blobs die zijn opgeslagen in de Microsoft Azure Blob service. Wanneer u een blob uploadt naar Blob service, moet u een container voor die blob opgeven.
Padpatroon Dit is een vereiste eigenschap die wordt gebruikt om uw blobs binnen de opgegeven container te vinden. Binnen het pad kunt u ervoor kiezen om een of meer exemplaren van de volgende twee variabelen op te geven:
{date}, {time}
Voorbeeld 1: products/{date}/{time}/product-list.csv
Voorbeeld 2: products/{date}/product-list.csv
Voorbeeld 3: product-list.csv

Als de blob niet in het opgegeven pad bestaat, wacht de Stream Analytics taak voor onbepaalde tijd tot de blob beschikbaar is.
Datumnotatie [optioneel] Als u {date} hebt gebruikt in het padpatroon dat u hebt opgegeven, kunt u de datumnotatie selecteren waarin uw blobs zijn geordend in de vervolgkeuzeopmaak van ondersteunde indelingen.
Voorbeeld: YYYY/MM/DD, MM/DD/YYYY, enzovoort.
Tijdnotatie [optioneel] Als u {time} hebt gebruikt in het padpatroon dat u hebt opgegeven, kunt u de tijdnotatie selecteren waarin uw blobs zijn geordend in de vervolgkeuze van ondersteunde indelingen.
Voorbeeld: HH, HH/mm of HH-mm.
Serialisatie-indeling voor gebeurtenissen Om ervoor te zorgen dat uw query's werken zoals u verwacht, moet Stream Analytics weten welke serialisatie-indeling u gebruikt voor binnenkomende gegevensstromen. Voor Referentiegegevens zijn de ondersteunde indelingen CSV en JSON.
Encoding UTF-8 is op dit moment de enige ondersteunde coderingsindeling.

Statische referentiegegevens

Als uw referentiegegevens naar verwachting niet worden gewijzigd, wordt ondersteuning voor statische referentiegegevens ingeschakeld door een statisch pad op te geven in de invoerconfiguratie. Azure Stream Analytics de blob van het opgegeven pad op. {date} en {time} vervangingstokens zijn niet vereist. Omdat referentiegegevens onveranderbaar zijn in Stream Analytics, wordt het niet aanbevolen om een statische referentiegegevensblob te overschrijven.

Referentiegegevens genereren volgens een schema

Als uw referentiegegevens een langzaam veranderende gegevensset zijn, wordt ondersteuning voor het vernieuwen van referentiegegevens ingeschakeld door een padpatroon op te geven in de invoerconfiguratie met behulp van de vervangingstokens {date} en {time}. Stream Analytics haalt de bijgewerkte referentiegegevensdefinities op op basis van dit padpatroon. Een patroon van met de datumnotatie sample/{date}/{time}/products.csv YYYY-MM-DD en de tijdnotatie 'HH-mm' geeft Stream Analytics de opdracht om de bijgewerkte blob op sample/2015-04-16/17-30/products.csv 16 april 2015 UTC-tijdzone op te halen.

Azure Stream Analytics scant automatisch op vernieuwde referentiegegevensblobs met een interval van één minuut. Als een blob met tijdstempel 10:30:00 met een kleine vertraging wordt geüpload (bijvoorbeeld 10:30:30), ziet u een kleine vertraging in de Stream Analytics-taak die naar deze blob verwijst. Om dergelijke scenario's te voorkomen, is het raadzaam om de blob eerder te uploaden dan de effectieve doeltijd (10:30:00 in dit voorbeeld) zodat de Stream Analytics-taak voldoende tijd heeft om deze te ontdekken en in het geheugen te laden en bewerkingen uit te voeren.

Notitie

Momenteel Stream Analytics taken alleen zoeken naar het vernieuwen van de blob wanneer de tijd van de machine toe is aan de tijd die is gecodeerd in de blobnaam. De taak zal bijvoorbeeld zo snel mogelijk zoeken, maar niet eerder dan sample/2015-04-16/17-30/products.csv 17:30 uur op 16 april 2015 UTC-tijdzone. Er wordt nooit naar een blob met een gecodeerde tijd eerder dan de laatste die is ontdekt, opgeslagen.

Als de taak bijvoorbeeld de blob vindt, worden bestanden met een gecodeerde datum die eerder dan sample/2015-04-16/17-30/products.csv 17:30 uur 16 april 2015 is gemaakt, genegeerd. Als er dus een te laat binnenkomende blob wordt gemaakt in dezelfde container, wordt deze niet door de taak sample/2015-04-16/17-25/products.csv gebruikt.

En als alleen wordt geproduceerd om 22:03 uur 16 april 2015, maar er geen blob met een eerdere datum aanwezig is in de container, gebruikt de taak dit bestand vanaf sample/2015-04-16/17-30/products.csv 16 april 2015 om 22:03 uur en worden de vorige referentiegegevens tot die tijd gebruikt.

Een uitzondering hierop is wanneer de taak gegevens opnieuw moet verwerken in de tijd of wanneer de taak voor het eerst wordt gestart. Tijdens het begin zoekt de taak naar de meest recente blob die is geproduceerd vóór de opgegeven begintijd van de taak. Dit wordt gedaan om ervoor te zorgen dat er een niet-lege referentiegegevensset is wanneer de taak wordt gestart. Als er geen kan worden gevonden, geeft de taak de volgende diagnostische gegevens weer: Initializing input without a valid reference data blob for UTC time <start time> .

Azure Data Factory kan worden gebruikt om de taak voor het maken van de bijgewerkte blobs te orkestreren die vereist zijn Stream Analytics om referentiegegevensdefinities bij te werken. Een Data Factory is een cloudgebaseerde gegevensintegratieservice waarmee de verplaatsing en transformatie van gegevens wordt beheerd en geautomatiseerd. Data Factory ondersteunt het maken van verbinding met een groot aantal cloud- en on-premises gegevensopslag en het eenvoudig verplaatsen van gegevens volgens een door u opgegeven schema. Raadpleeg dit voorbeeld voor meer informatie en stapsgewijse richtlijnen voor het instellen van een Data Factory GitHub-pijplijn voor het genereren van referentiegegevens voor Stream Analytics die volgens een vooraf gedefinieerd schema wordenvernieuwd.

Tips over het vernieuwen van blobverwijzingsgegevens

  1. Overschrijf referentiegegevensblobs niet omdat ze onveranderbaar zijn.
  2. De aanbevolen manier om referentiegegevens te vernieuwen is:
    • {date}/{time} gebruiken in het padpatroon
    • Voeg een nieuwe blob toe met behulp van hetzelfde container- en padpatroon dat is gedefinieerd in de taakinvoer
    • Gebruik een datum/tijd die groter is dan de datum/tijd die is opgegeven door de laatste blob in de reeks.
  3. Referentiegegevensblobs worden niet geordend op de tijd 'Laatst gewijzigd' van de blob, maar alleen op de tijd en datum die zijn opgegeven in de blobnaam met behulp van de vervangingen {date} en {time}.
  4. Om te voorkomen dat u een groot aantal blobs in een lijst moet zien, kunt u overwegen om zeer oude blobs te verwijderen waarvoor de verwerking niet meer wordt uitgevoerd. Houd er rekening mee dat ASA in sommige scenario's een kleine hoeveelheid opnieuw moet verwerken, zoals bij het opnieuw opstarten.

Azure SQL Database

Azure SQL Database referentiegegevens worden opgehaald door uw Stream Analytics taak en worden opgeslagen als een momentopname in het geheugen voor verwerking. De momentopname van uw referentiegegevens wordt ook opgeslagen in een container in een opslagaccount dat u opgeeft in de configuratie-instellingen. De container wordt automatisch gemaakt wanneer de taak wordt gestart. Als de taak is gestopt of een mislukte status krijgt, worden de automatisch gemaakte containers verwijderd wanneer de taak opnieuw wordt gestart.

Als uw referentiegegevens een langzaam veranderende gegevensset zijn, moet u de momentopname die in uw taak wordt gebruikt, periodiek vernieuwen. Stream Analytics kunt u een vernieuwingsfrequentie instellen wanneer u de invoerverbinding Azure SQL Database configureren. De Stream Analytics runtime query's op uw Azure SQL Database op het interval dat is opgegeven door de vernieuwingssnelheid. De snelste vernieuwingsfrequentie die wordt ondersteund, is één keer per minuut. Voor elke vernieuwing slaat Stream Analytics een nieuwe momentopname op in het opgegeven opslagaccount.

Stream Analytics biedt twee opties voor het uitvoeren van query's op Azure SQL Database. Een momentopnamequery is verplicht en moet in elke taak worden opgenomen. Stream Analytics voert de momentopnamequery periodiek uit op basis van uw vernieuwingsinterval en gebruikt het resultaat van de query (de momentopname) als de referentiegegevensset. De momentopnamequery moet in de meeste scenario's passen, maar als u prestatieproblemen hebt met grote gegevenssets en snelle vernieuwingssnelheden, kunt u de optie Delta-query gebruiken. Query's die meer dan 60 seconden duren om een referentiegegevensset te retourneren, resulteren in een time-out.

Met de optie deltaquery voert Stream Analytics momentopnamequery in eerste instantie uit om een basislijnreferentiegegevensset op te halen. Daarna wordt Stream Analytics deltaquery periodiek uitgevoerd op basis van uw vernieuwingsinterval om incrementele wijzigingen op te halen. Deze incrementele wijzigingen worden voortdurend toegepast op de referentiegegevensset om deze bijgewerkt te houden. Het gebruik van Een Delta-query kan helpen de opslagkosten en netwerk-I/O-bewerkingen te verlagen.

Naslag SQL Database configureren

Als u uw SQL Database wilt configureren, moet u eerst referentiegegevensinvoer maken. In de onderstaande tabel wordt elke eigenschap uitgelegd die u moet verstrekken tijdens het maken van de referentiegegevensinvoer met de beschrijving. Zie Referentiegegevens van een SQL Database gebruiken voor een Azure Stream Analytics-taak voor meer informatie.

U kunt Azure SQL Managed Instance gebruiken als referentiegegevensinvoer. U moet een openbaar eindpunt configureren in SQL Managed Instance en vervolgens handmatig de volgende instellingen configureren in Azure Stream Analytics. Virtuele Azure-machine SQL Server gekoppelde database wordt ook ondersteund door de onderstaande instellingen handmatig te configureren.

Eigenschapsnaam Beschrijving
Invoeralias Een gebruiksvriendelijke naam die wordt gebruikt in de taakquery om naar deze invoer te verwijzen.
Abonnement Kies uw abonnement
Database De Azure SQL Database die uw referentiegegevens bevat. Voor SQL Managed Instance moet u poort 3342 opgeven. Bijvoorbeeld sampleserver.public.database.windows.net,3342
Gebruikersnaam De gebruikersnaam die is gekoppeld aan uw Azure SQL Database.
Wachtwoord Het wachtwoord dat is gekoppeld aan uw Azure SQL Database.
Periodiek vernieuwen Met deze optie kunt u een vernieuwingsfrequentie kiezen. Als u Aan kiest, kunt u de vernieuwingsfrequentie opgeven in DD:UU:MM.
Momentopnamequery Dit is de standaardqueryoptie die de referentiegegevens opvraagt uit uw SQL Database.
Delta-query Voor geavanceerde scenario's met grote gegevenssets en een korte vernieuwingssnelheid kunt u een Delta-query toevoegen.

Groottebeperking

Het wordt aanbevolen om referentiesets van minder dan 300 MB te gebruiken voor de beste prestaties. Referentiesets van 5 GB of lager worden ondersteund in taken met 6 SUS of meer. Het gebruik van zeer grote referentiegegevens kan van invloed zijn op de end-to-end-latentie van uw taak. Naarmate de complexiteit van query's toeneemt met stateful verwerking, zoals windowed aggregaten, tijdelijke joins en tijdelijke analysefuncties, wordt verwacht dat de maximaal ondersteunde grootte van referentiegegevens afneemt. Als Azure Stream Analytics de referentiegegevens niet kan laden en complexe bewerkingen kan uitvoeren, heeft de taak onvoldoende geheugen en mislukt deze. In dergelijke gevallen bereikt de metrische gegevens voor het gebruik van su-gebruik 100%.

Aantal streaming-eenheden Aanbevolen grootte
1 50 MB of lager
3 150 MB of lager
6 en meer 5 GB of lager.

Ondersteuning voor compressie is niet beschikbaar voor referentiegegevens. Voor referentiesets die groter zijn dan 300 MB, is het raadzaam om Azure SQL Database te gebruiken als de bron met de optie voor deltaquery's voor optimale prestaties. Als in dergelijke scenario's geen Delta-query wordt gebruikt, ziet u steeds wanneer de referentie-gegevensset wordt vernieuwd pieken in de metrische gegevens over watermerkvertraging.

Meerdere referentie-gegevenssets samenvoegen in een taak

U kunt slechts één stroominvoer met één referentiegegevensinvoer in één stap van uw query toevoegen. U kunt echter meerdere referentie-gegevenssets toevoegen door uw query op te delen in meerdere stappen. Hieronder kunt u een voorbeeld bekijken.

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 taken

Alleen lokale referentiegegevens worden ondersteund voor Stream Analytics edge-taken. Wanneer een taak wordt geïmplementeerd op IoT Edge apparaat, worden referentiegegevens uit het door de gebruiker gedefinieerde bestandspad geladen. Een referentiegegevensbestand gereed hebben op het apparaat. Plaats voor Windows container het referentiegegevensbestand op het lokale station en deel het lokale station met de Docker-container. Maak voor een Linux-container een Docker-volume en vul het gegevensbestand naar het volume.

Referentiegegevens op IoT Edge update wordt geactiveerd door een implementatie. Zodra de module is geactiveerd, Stream Analytics de bijgewerkte gegevens kiezen zonder de taak te stoppen.

Er zijn twee manieren om de referentiegegevens bij te werken:

  • Werk het pad naar referentiegegevens in Stream Analytics taak bij vanuit Azure Portal.

  • Werk de IoT Edge bij.

Volgende stappen