Processar fluxos de dados IoT em tempo real usando o Stream Analytics
Neste artigo, você aprenderá a criar a lógica de processamento de fluxo para reunir dados dos dispositivos da Internet das Coisas (IoT). Usaremos um caso de uso real da Internet das coisas (IoT) para demonstrar como compilar uma solução rápida e econômica.
Pré-requisitos
- Crie uma assinatura do Azure gratuita.
- Baixe exemplos de arquivos de consulta e de dados no GitHub.
Cenário
A Contoso é uma empresa no espaço de automação industrial que automatizou seu processo de fabricação. O maquinário desta fábrica tem sensores capazes de emitir fluxos de dados em tempo real. Nesse cenário, um gerente de chão de fábrica quer ter informações em tempo real dos dados de sensor para procurar por padrões e tomar ações com relação a eles. Use a Stream Analytics Query Language (SAQL) sobre os dados do sensor para descobrir padrões interessantes no fluxo de entrada de dados.
Neste exemplo, os dados estão são gerados de um dispositivo de tag de sensor da Texas Instruments. O conteúdo dos dados está no formato JSON, conforme mostrado no seguinte trecho de exemplo:
{
"time": "2016-01-26T20:47:53.0000000",
"dspl": "sensorE",
"temp": 123,
"hmdt": 34
}
Em um cenário real, você poderia ter centenas desses sensores gerando eventos como um fluxo. De forma ideal, um dispositivo de gateway executaria um código para enviar por push esses eventos aos Hubs de Eventos do Azure ou aos Hubs IoT do Azure. Seu trabalho do Stream Analytics ingeriria esses eventos dos Hubs de Eventos ou Hubs IoT e executaria consultas de análise em tempo real nos fluxos. Em seguida, você poderia enviar os resultados a uma das saídas com suporte.
Para facilitar o uso, este guia de Introdução fornece um arquivo de dados de exemplo, capturado de dispositivos de tag de sensor reais. Você pode executar consultas nos dados de exemplo e ver os resultados. Nos tutoriais seguintes, você aprenderá a conectar seu trabalho a entradas e saídas e implantá-lo para o serviço do Azure.
Criar um trabalho de Stream Analytics
Navegue até o Portal do Azure.
No menu de navegação à esquerda, selecione Todos os serviços, depois Análise, passe o mouse sobre os Trabalhos do Stream Analytics e selecione Criar.
Na página Novo trabalho do Stream Analytics, siga estas etapas:
Para Assinatura, selecione sua Assinatura do Azure.
Em Grupo de recursos, selecione um grupo de recursos existente ou crie um.
Em Nome, insira um nome exclusivo para o trabalho do Stream Analytics.
Selecione a Região na qual deseja implatar o trabalho do Stream Analytics. Use o mesmo local para o grupo de recursos e todos os recursos para aumentar a velocidade de processamento e reduzir os custos.
Selecione Examinar + criar.
Na páginaRevisar + criar,revise as configurações e selecioneCriar.
Depois que a implantação for concluída com sucesso, selecione Ir para o recurso para navegar até a página Trabalho do Stream Analytics para o seu trabalho do Stream Analytics.
Criar uma instância do Azure Stream Analytics
Depois que seu trabalho for criado, escreva uma consulta. Você pode testar consultas em dados de exemplo sem conectar uma entrada ou saída ao seu trabalho.
Baixe HelloWorldASA-InputStream.jsno no GitHub.
Na página Trabalho do Azure Stream Analytics no portal do Azure, selecione Consulta em Topologia do trabalho no menu à esquerda.
Selecione Carregar entrada de exemplo, selecione o arquivo
HelloWorldASA-InputStream.json
que você baixou e selecione OK.Observe que uma visualização dos dados é preenchida automaticamente na tabela de Visualização de entrada .
Consulta: arquivar seus dados brutos
A forma mais simples de consulta é uma consulta passagem que arquiva todos os dados de entrada em suas saídas indicadas. Essa consulta é a consulta padrão preenchida em um novo trabalho de Azure Stream Analytics.
Na janela Consulta, insira a consulta a seguir e selecione Testar consulta na barra de ferramentas.
SELECT * INTO youroutputalias FROM yourinputalias
Visualize os resultados na guia Resultados do teste no painel inferior.
Consulta: filtrar os dados com base em uma condição
Vamos atualizar a consulta para filtrar os resultados com base em uma condição. Por exemplo, a consulta a seguir mostra os eventos provenientes de sensorA
."
Atualize a consulta com o seguinte exemplo:
SELECT time, dspl AS SensorName, temp AS Temperature, hmdt AS Humidity INTO youroutputalias FROM yourinputalias WHERE dspl='sensorA'
Selecione Testar consulta para ver os resultados da consulta.
Consulta: alerta para disparar o fluxo de trabalho de negócios
Vamos tornar nossa consulta mais detalhada. Para cada tipo de sensor, se você deseja monitorar a temperatura média por 30 segundos e exibir os resultados somente se a temperatura média estiver acima de 100 graus.
Atualize a consulta para:
SELECT System.Timestamp AS OutputTime, dspl AS SensorName, Avg(temp) AS AvgTemperature INTO youroutputalias FROM yourinputalias TIMESTAMP BY time GROUP BY TumblingWindow(second,30),dspl HAVING Avg(temp)>100
Selecione Testar consulta para ver os resultados da consulta.
Você pode ver os resultados que contêm apenas 245 linhas e nomes dos sensores nos quais a temperatura média é superior a 100. Esta consulta agrupa o fluxo de eventos por dspl, que é o nome de sensor, sobre uma Janela em Cascata de 30 segundos. Consultas temporais devem declarar como você quer que o tempo progrida. Usando a cláusula TIMESTAMP BY, você especificou a coluna OUTPUTTIME para associar tempos a todos os cálculos temporais. Para obter informações detalhadas, leia sobre Gerenciamento de tempo e Funções de janelas.
Consulta: detectar ausência de eventos
Como podemos escrever uma consulta para localizar a falta de eventos de entrada? Vamos descobrir a última vez que um sensor enviou dados e depois não enviou mais eventos nos 5 segundos seguintes.
Atualize a consulta para:
SELECT t1.time, t1.dspl AS SensorName INTO youroutputalias FROM yourinputalias t1 TIMESTAMP BY time LEFT OUTER JOIN yourinputalias t2 TIMESTAMP BY time ON t1.dspl=t2.dspl AND DATEDIFF(second,t1,t2) BETWEEN 1 and 5 WHERE t2.dspl IS NULL
Selecione Testar consulta para ver os resultados da consulta.
Aqui, usamos uma junção EXTERNA ESQUERDA no mesmo fluxo de dados (autojunção). Para uma junção INTERNA, um resultado retorna somente quando uma correspondência é encontrada. Mas para uma junção EXTERNA ESQUERDA, se um evento do lado esquerdo da junção for incomparável, uma linha com NULL para todas as colunas do lado direito retornará. Essa técnica é útil para localizar a ausência de eventos. Para saber mais, clique INGRESSAR.
Conclusão
O objetivo deste artigo é demonstrar como escrever consultas de linguagem de consulta do Stream Analytics e ver os resultados no navegador. No entanto, este artigo serve apenas para você começar. O Stream Analytics dá suporte a várias entradas e saídas e ainda pode usar as funções no Azure Machine Learning para torná-la uma ferramenta robusta de análise de fluxos de dados. Para saber mais sobre como escrever consultas, leia o artigo sobre padrões comuns de consulta.