Definir uma consulta para selecionar, filtrar e agregar dados
Depois de definir a(s) entrada(s) e a(s) saída(s) para seu trabalho do Azure Stream Analytics, você pode definir uma consulta para processar os dados de entrada de uma entrada e gravar os resultados em uma saída.
Seleção de campos de entrada
A abordagem mais simples para ingerir dados de streaming no Azure Synapse Analytics é capturar os valores de campo necessários para cada evento usando um ... Consulta INTO , conforme mostrado aqui:
SELECT
EventEnqueuedUtcTime AS ReadingTime,
SensorID,
ReadingValue
INTO
[synapse-output]
FROM
[streaming-input] TIMESTAMP BY EventEnqueuedUtcTime
Gorjeta
Ao usar uma saída do Azure Synapse Analytics para gravar os resultados em uma tabela em um pool SQL dedicado, o esquema dos resultados produzidos pela consulta deve corresponder à tabela na qual os dados devem ser carregados. Você pode usar cláusulas AS para renomear campos e convertê-los em tipos de dados alternativos (compatíveis) conforme necessário.
Filtrando dados de eventos
Em alguns casos, talvez você queira filtrar os dados para incluir apenas eventos específicos adicionando uma cláusula WHERE . Por exemplo, a consulta a seguir grava dados somente para eventos com um valor de campo ReadingValue negativo.
SELECT
EventEnqueuedUtcTime AS ReadingTime,
SensorID,
ReadingValue
INTO
[synapse-output]
FROM
[streaming-input] TIMESTAMP BY EventEnqueuedUtcTime
WHERE ReadingValue < 0
Agregação de eventos em janelas temporais
Um padrão comum para consultas de streaming é agregar dados de eventos em intervalos temporais (baseados no tempo) ou janelas. Para fazer isso, você pode usar uma cláusula GROUP BY que inclui uma função Window que define o tipo de janela que você deseja definir (por exemplo, cair, pular ou deslizar).
Gorjeta
Para obter mais informações sobre funções de janela, consulte Introdução às funções de janela do Stream Analytics na documentação do Azure Stream Analytics.
O exemplo a seguir agrupa as leituras do sensor de streaming em janelas de queda de 1 minuto (seriais, sem sobreposição), registrando a hora de início e término de cada janela e a leitura máxima para cada sensor. A cláusula HAVING filtra os resultados para incluir apenas janelas onde ocorreu pelo menos um evento.
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
Gorjeta
Para obter mais informações sobre padrões comuns para consultas, consulte Padrões de consulta comuns no Azure Stream Analytics na documentação do Azure Stream Analytics.