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

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

  1. Navegue até o Portal do Azure.

  2. 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.

    Captura de tela que mostra a seleção do botão Criar para um trabalho do Stream Analytics.

  3. Na página Novo trabalho do Stream Analytics, siga estas etapas:

    1. Para Assinatura, selecione sua Assinatura do Azure.

    2. Em Grupo de recursos, selecione um grupo de recursos existente ou crie um.

    3. Em Nome, insira um nome exclusivo para o trabalho do Stream Analytics.

    4. 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.

    5. Selecione Examinar + criar.

      Captura de tela que mostra a página Novo trabalho do Stream Analytics.

  4. Na páginaRevisar + criar,revise as configurações e selecioneCriar.

  5. 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.

  1. Baixe HelloWorldASA-InputStream.jsno no GitHub.

  2. Na página Trabalho do Azure Stream Analytics no portal do Azure, selecione Consulta em Topologia do trabalho no menu à esquerda.

  3. Selecione Carregar entrada de exemplo, selecione o arquivo HelloWorldASA-InputStream.json que você baixou e selecione OK.

    Captura de tela que mostra a página **Consulta** com **Carregar entrada de exemplo** selecionada.

  4. Observe que uma visualização dos dados é preenchida automaticamente na tabela de Visualização de entrada .

    Captura de tela que mostra dados de entrada de exemplo na guia Pré-visualização da 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.

  1. Na janela Consulta, insira a consulta a seguir e selecione Testar consulta na barra de ferramentas.

    SELECT
        *
    INTO
        youroutputalias
    FROM
        yourinputalias
    
  2. Visualize os resultados na guia Resultados do teste no painel inferior.

    Captura de tela que mostra a consulta de exemplo e seus resultados.

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."

  1. 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'
    
  2. Selecione Testar consulta para ver os resultados da consulta.

    Captura de tela que mostra os resultados da consulta com o filtro.

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.

  1. 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
    
  2. Selecione Testar consulta para ver os resultados da consulta.

    Captura de tela que mostra a consulta com uma janela de em cascata.

    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.

  1. 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
    
  2. Selecione Testar consulta para ver os resultados da consulta.

    Captura de tela que mostra a consulta que detecta a ausência de eventos.

    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.