Frågespråksreferens för Stream Analytics

Azure Stream Analytics erbjuder ett SQL-frågespråk för att utföra transformeringar och beräkningar över händelseströmmar.

Stream Analytics Query Language, en delmängd av T-SQL-syntax

Det här dokumentet beskriver syntax, användning och metodtips för Stream Analytics-frågespråket. Alla exempel som används i det här dokumentet förlitar sig på ett scenario med avgiftsbelagda bås enligt beskrivningen nedan.

Stream Analytics-frågespråk är en delmängd av T-SQL-standardsyntaxen för att utföra strömningsberäkningar.

Scenariot med avgiftsbelagda bås

En vägtullstation är ett vanligt fenomen – vi stöter på dem i många expressvägar, broar och tunnlar över hela världen. Varje avgiftsbelagd station har flera avgiftsbelagda bås, vilket kan vara manuellt – vilket innebär att du slutar betala vägtullen till en dirigering eller automatiserad – där en sensor som placeras ovanpå montern skannar ett RFID-kort fäst på vindrutan på ditt fordon när du passerar vägtullsbåsen. Det är lätt att visualisera passagen av fordon genom dessa avgiftsbelagda stationer som en händelseström över vilken intressanta operationer kan utföras.

Ankomsttid kontra programtid

I alla tidsbaserade system som Azure Stream Analytics är det viktigt att förstå tidens förlopp. Varje händelse som flödar genom systemet levereras med en tidsstämpel som kan nås via System.Timestamp(). Med andra ord visar varje händelse i vårt system en tidpunkt. Den här tidsstämpeln kan antingen vara en programtid som användaren kan ange i frågan eller så kan systemet tilldela baserat på ankomsttiden. Ankomsttiden har olika betydelser baserat på indatakällorna. För händelser från Azure Event Hub är ankomsttiden tidsstämpeln som anges av händelsehubben. för Blob Storage är det blobens senaste ändringstid. Tidsstämpeln är den tidpunkt som är relevant för att samla in eller analysera data. Om användaren vill använda en programtid kan de göra det med nyckelordet TIMESTAMP BY . I scenariot ovan är det fordonets inträde till vägtullsbåset. Det är viktigt att identifiera "tidsstämpeln" i den inkommande dataströmmen. Man bör se till att den tid som samlas in också bekräftar förekomsten av en händelse. Om man till exempel övervakar kassaräknare och vill räkna antalet fakturerade kunder bör händelsetidsstämpeln helst vara "betalning lyckades" i stället för "fakturagenererad" tid.

TIMESTAMP BY

I Azure Stream Analytics har alla händelser en väldefinierad tidsstämpel. Om användaren vill använda programtid kan de använda nyckelordet TIMESTAMP BY för att ange kolumnen i nyttolasten som ska användas för att tidsstämpla varje inkommande händelse för att utföra tidsberäkningar som fönster, kopplingar osv. Vi rekommenderar att du använder TIMESTAMP BY över ankomsttiden som bästa praxis. TIMESTAMP BY kan användas i valfri kolumn av typen datetime och alla ISO 8601-format stöds. System.Timestamp() kan bara användas i Välj.

Följande är ett TIMESTAMP BY-exempel som använder kolumnen EntryTime som programtid för händelser:

  
SELECT TollId, EntryTime AS VehicleEntryTime, LicensePlate, State, Make, Model, VehicleType, VehicleWeight, Toll, Tag   
FROM TollTagEntry TIMESTAMP BY EntryTime  
  

Känslighet för fältnamnsfall

Fältnamn för ett jobb som skapas med hjälp av kompatibilitetsnivå 1.0 ändras till gemener (skiftlägesokänsliga) när de bearbetas av Azure Stream Analytics-motorn. För indataformat som stöder skiftlägeskänsligt schema, till exempel JSON, kan du skapa händelser som har duplicerade fält när fältnamn jämförs på ett skiftlägeskänsligt sätt. Sådana händelser betraktas som ogiltiga händelser och tas bort under bearbetningen.

Skiftlägeskänslighet sparas för fältnamn när Stream Analytics-jobbet skapas med hjälp av kompatibilitetsnivå 1.1 eller senare. Mer information finns i avsnittet konfigurera kompatibilitetsnivå .

Innehåll i det här avsnittet

Mer information om hur du använder Stream Analytics-frågespråket finns i följande avsnitt.

Se även