Definiowanie zapytania do wybierania, filtrowania i agregowania danych

Ukończone

Po zdefiniowaniu danych wejściowych i wyjściowych dla zadania usługi Azure Stream Analytics można zdefiniować zapytanie , aby przetworzyć dane przychodzące z danych wejściowych i zapisać wyniki w danych wyjściowych.

Wybieranie pól wejściowych

Najprostszym podejściem do pozyskiwania danych przesyłanych strumieniowo do usługi Azure Synapse Analytics jest przechwycenie wymaganych wartości pól dla każdego zdarzenia przy użyciu polecenia SELECT... Zapytanie INTO , jak pokazano poniżej:

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

Napiwek

W przypadku używania danych wyjściowych usługi Azure Synapse Analytics do zapisywania wyników w dedykowanej puli SQL schemat wyników generowanych przez zapytanie musi być zgodny z tabelą, do której mają zostać załadowane dane. Klauzule AS umożliwiają zmianę nazw pól i rzutowanie ich do alternatywnych (zgodnych) typów danych w razie potrzeby.

Filtrowanie danych zdarzeń

W niektórych przypadkach można filtrować dane, aby uwzględnić tylko określone zdarzenia, dodając klauzulę WHERE . Na przykład następujące zapytanie zapisuje dane tylko dla zdarzeń z ujemną wartością pola ReadingValue .

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

Agregowanie zdarzeń w oknach czasowych

Typowym wzorcem zapytań przesyłanych strumieniowo jest agregowanie danych zdarzeń w interwałach czasowych (czasowych) lub oknach. W tym celu można użyć klauzuli GROUP BY , która zawiera funkcję Window definiującą rodzaj okna, który chcesz zdefiniować (na przykład wirowanie, przeskok lub przesuwanie).

Napiwek

Aby uzyskać więcej informacji na temat funkcji okien, zobacz Wprowadzenie do funkcji okien usługi Stream Analytics w dokumentacji usługi Azure Stream Analytics.

Poniższy przykład grupuje odczyty czujnika przesyłania strumieniowego w 1 minutę (szeregowe, nienakładające się) okna, rejestrując godzinę rozpoczęcia i zakończenia każdego okna oraz maksymalny odczyt dla każdego czujnika. Klauzula HAVING filtruje wyniki tak, aby zawierały tylko okna, w których wystąpiło co najmniej jedno zdarzenie.

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

Napiwek

Aby uzyskać więcej informacji na temat typowych patters dla zapytań, zobacz Typowe wzorce zapytań w usłudze Azure Stream Analytics w dokumentacji usługi Azure Stream Analytics .