Reference Data JOIN (Azure Stream Analytics)

In een normaal scenario gebruiken we een gebeurtenisverwerkingsengine om streaminggegevens met een zeer lage latentie te berekenen. In veel gevallen moeten gebruikers persistente historische gegevens of een langzaam veranderende gegevensset (ook wel referentiegegevens genoemd) correleren met de realtime gebeurtenisstroom om slimmere beslissingen over het systeem te nemen. Voeg bijvoorbeeld mijn gebeurtenisstroom toe aan een statische gegevensset die IP-adressen aan locaties toe wijst. Dit is de enige JOIN die wordt ondersteund in Stream Analytics waarbij een tijdelijke gebondenheid niet nodig is. Referentiegegevens kunnen ook worden gebruikt om apparaatspecifieke drempelwaarden te hebben.

Voorbeeld

Als een bedrijfsvoertuig is geregistreerd bij de Toll Company, kunnen ze het tolhuisje passeren zonder te worden gestopt voor inspectie. We gebruiken een opzoektabel voor de registratie van bedrijfsvoertuigen om alle bedrijfsvoertuigen met verlopen registratie 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'

Bijzonderheden van referentiegegevens JOIN

  • Als u Reference Data JOIN gebruikt, moet er een invoerbron voor referentiegegevens worden gedefinieerd.
  • Referentiegegevens JOIN wordt ondersteund voor inner JOIN (standaard) en left outer JOIN, met referentiegegevens aan de rechterkant van de JOIN-operator.
  • Gegevenstypen zijn een belangrijk aspect bij de evaluatie van het joinpredicaat (ON component). Vergelijkbare waarden voor verschillende gegevenstypen (1.0 en "1") komen mogelijk niet overeen. Het wordt aanbevolen om sleutels expliciet te converteren naar een algemeen type.
  • Referentiegegevens kunnen statisch zijn (slechts eenmaal geladen) of dynamisch (regelmatig vernieuwd). Zelfs in het dynamische geval maken referentiegegevens echter geen voortgang in de tijd, dus de stream aan de linkerkant moet nieuwe gebeurtenissen ophalen om uitvoer te produceren. Zie ook hoe de tijd verloopt in Azure Stream Analytics voor meer informatie.

Prestatieoverwegingen

Om prestatievermindering te voorkomen, moeten referentiedeelnamepredicaten (ON component) worden gedefinieerd via eenvoudige sleutelekwaliteiten (ON s.myKey = r.myKey). Het gebruik van complexe expressies, of ongelijkheden, resulteert intern in cross joins, gevolgd door filters (volledige scan versus opzoeken), wat een grote invloed kan hebben op de algehele latentie.

Verplaats deze complexe expressies indien mogelijk naar de WHERE component van de querystap of voeg dezelfde referentiegegevens meerdere keren samen met eenvoudigere voorwaarden.

Zie ook