Definiera en fråga för att välja, filtrera och aggregera data

Slutförd

När du har definierat indata och utdata för ditt Azure Stream Analytics-jobb kan du definiera en fråga för att bearbeta inkommande data från en indata och skriva resultatet till ett utdata.

Välja indatafält

Den enklaste metoden för att mata in strömmande data i Azure Synapse Analytics är att samla in obligatoriska fältvärden för varje händelse med hjälp av en SELECT... INTO-fråga , som visas här:

SELECT
    EventEnqueuedUtcTime AS ReadingTime,
    SensorID,
    ReadingValue
INTO
    [synapse-output]
FROM
    [streaming-input] TIMESTAMP BY EventEnqueuedUtcTime

Dricks

När du använder ett Azure Synapse Analytics-utdata för att skriva resultatet till en tabell i en dedikerad SQL-pool måste schemat för de resultat som skapas av frågan matcha tabellen där data ska läsas in. Du kan använda AS-satser för att byta namn på fält och omvandla dem till alternativa (kompatibla) datatyper efter behov.

Filtrera händelsedata

I vissa fall kanske du vill filtrera data så att de endast innehåller specifika händelser genom att lägga till en WHERE-sats . Följande fråga skriver till exempel endast data för händelser med ett negativt ReadingValue-fältvärde .

SELECT
    EventEnqueuedUtcTime AS ReadingTime,
    SensorID,
    ReadingValue
INTO
    [synapse-output]
FROM
    [streaming-input] TIMESTAMP BY EventEnqueuedUtcTime
WHERE ReadingValue < 0

Aggregera händelser över tidsmässiga fönster

Ett vanligt mönster för strömmande frågor är att aggregera händelsedata över tidsbaserade intervall eller fönster. För att åstadkomma detta kan du använda en GROUP BY-sats som innehåller en Window-funktion som definierar vilken typ av fönster du vill definiera (till exempel rullande, hoppande eller glidande).

Dricks

Mer information om fönsterfunktioner finns i Introduktion till Stream Analytics-fönsterfunktioner i Azure Stream Analytics-dokumentationen.

I följande exempel grupperas strömningssensoravläsningar i 1 minut rullande (seriellt, icke-överlappande) fönster, inspelning av start- och sluttiden för varje fönster och den maximala avläsningen för varje sensor. HAVING-satsen filtrerar resultatet så att det endast innehåller fönster där minst en händelse inträffade.

SELECT
    DateAdd(second, -60, System.TimeStamp) AS StartTime,
    System.TimeStamp AS EndTime,
    SensorID,
    MAX(ReadingValue) AS MaxReading
INTO
    [synapse-output]
FROM
    [streaming-input] TIMESTAMP BY EventEnqueuedUtcTime
GROUP BY SensorID, TumblingWindow(second, 60)
HAVING COUNT(*) >= 1

Dricks

Mer information om vanliga patters för frågor finns i Vanliga frågemönster i Azure Stream Analytics i Azure Stream Analytics-dokumentationen.