Solucionar problemas de consultas do Azure Stream Analytics

Este artigo descreve problemas comuns com o desenvolvimento de consultas do Azure Stream Analytics, como solucionar problemas de consulta e como corrigir os problemas. Muitos passos de resolução de problemas exigem que ative os registos de recursos para o seu trabalho de Análise de Fluxos. Se não tiver os registos de recursos ativados, consulte Resolver problemas do Azure Stream Analytics com registos de recursos.

A consulta não está a produzir o resultado esperado

  1. Examine os erros testando localmente:

  2. Depure consultas passo a passo localmente usando o diagrama de trabalho nas ferramentas do Azure Stream Analytics para Visual Studio Code. O diagrama de trabalho mostra como os dados fluem de fontes de entrada, por exemplo, Hubs de Eventos do Azure e Hub IoT do Azure, através de múltiplos passos de consulta e, finalmente, para os sinks de saída. O script mapeia cada passo de consulta para um conjunto temporário de resultados que defines usando a instrução WITH. Consulte os dados e métricas em cada conjunto de resultados intermédios para encontrar a origem do problema.

    Captura de ecrã do diagrama de tarefas no Visual Studio Code a mostrar o resultado de pré-visualização para uma etapa de consulta.

  3. Se você usar Timestamp By, verifique se os eventos têm marcas temporais superiores à hora de início da tarefa.

  4. Elimine armadilhas comuns, tais como:

    • Uma cláusula WHERE na consulta filtrava todos os eventos, pelo que a consulta não produz saída.
    • Uma função CAST falha, fazendo com que o trabalho falhe. Para evitar falhas de conversão de tipo, use TRY_CAST em vez disso.
    • Quando você usa funções de janela, aguarde toda a duração da janela para ver uma saída da consulta.
    • A marca temporal dos eventos é anterior à hora de início da tarefa, pelo que a tarefa descarta os eventos.
    • As condições de JOIN não correspondem. Se não houver correspondências, a consulta não produz saída.
  5. Certifique-se de configurar as políticas de ordenação de eventos conforme esperado. Vá para Configurações e selecione Ordenação de eventos. O botão Testar não aplica a política quando testa a consulta. Este resultado é uma diferença entre testar no navegador e executar o trabalho em produção.

  6. Depurar usando logs de atividades e recursos:

Debug queries progressively (Depurar consultas progressivamente)

No processamento de dados em tempo real, é útil saber como os dados aparecem no meio da consulta. Para visualizar os dados intermédios, utilize o diagrama de funções no Visual Studio. Se não tiveres Visual Studio, podes dar passos extra para gerar dados intermédios.

Como o Azure Stream Analytics pode ler entradas ou passos de uma tarefa várias vezes, é possível escrever instruções adicionais SELECT INTO. Ao fazê-lo, guardas dados intermédios no armazenamento e podes verificar a correção dos dados, tal como as variáveis vigiadas quando depuras um programa.

A consulta de exemplo a seguir em um trabalho do Azure Stream Analytics tem uma entrada de fluxo, duas entradas de dados de referência e uma saída para o Armazenamento de Tabela do Azure. A consulta une dados do hub de eventos e dois blobs de referência para obter as informações de nome e categoria:

Captura de ecrã de um exemplo de consulta de Stream Analytics que junta uma entrada de hub de eventos com dois blobs de referência usando SELECT INTO.

A tarefa está em execução, mas não produz eventos na saída. No bloco de Monitorização, mostrado aqui, pode ver que a entrada está a produzir dados, mas não sabe em que passo do JOIN foram eliminados todos os eventos.

Captura de ecrã do bloco Stream Analytics Monitoring a mostrar eventos de entrada recebidos enquanto não são produzidos eventos de saída.

Nesta situação, pode adicionar algumas instruções extra SELECT INTO para "registar" os resultados intermédios JOIN e os dados lidos da entrada.

Neste exemplo, adicionámos duas novas "saídas temporárias". Podem ser qualquer pia que quiseres. Aqui usamos o Armazenamento do Azure como exemplo:

Captura de ecrã de uma consulta de Stream Analytics com instruções extra SELECT INTO adicionadas para registar resultados intermédios no armazenamento.

Em seguida, você pode reescrever a consulta da seguinte forma:

Captura de ecrã da consulta reescrita do Stream Analytics que envia resultados intermédios do JOIN para saídas temporárias.

Agora inicie o trabalho novamente e deixe-o funcionar por alguns minutos. Depois, consulte temp1 e temp2 com o Visual Studio Cloud Explorer para produzir as seguintes tabelas:

tabela temp1Captura de ecrã da tabela temp1 que mostra resultados intermédios de JOIN da consulta Stream Analytics.

Tabela temp2Captura de ecrã da tabela temp2 mostrando a coluna do nome preenchida corretamente a partir da consulta Stream Analytics.

Como podes ver, temp1 e temp2 ambos têm dados, e a name coluna está preenchida corretamente em temp2. No entanto, como a saída ainda não tem dados, algo está errado:

Captura de ecrã da tabela output1 que não mostra dados retornados pela consulta Stream Analytics.

Ao amostrar os dados, pode ter quase a certeza de que o problema está no segundo JOIN. Você pode baixar os dados de referência do blob e dar uma olhada:

Captura de ecrã da tabela de dados de referência que mostra um formato GUID que difere da coluna

Como pode ver, o formato do GUID nestes dados de referência é diferente do formato da [from] coluna em temp2. É por isso que os dados não chegaram a output1 como esperado.

Corrige o formato dos dados, carregue-o para o blob de referência e tente novamente:

Captura de ecrã da tabela de dados de referência após o formato GUID ser corrigido e carregado para o blob de referência.

Desta vez, os dados na saída são formatados e preenchidos conforme o esperado.

Captura de ecrã da tabela de saída que mostra os dados formatados e preenchidos conforme esperado na consulta Stream Analytics.

A utilização de recursos é elevada

Certifique-se de aproveitar a paralelização no Azure Stream Analytics. Aprenda a escalar com a paralelização de consultas de tarefas do Stream Analytics, configurando partições de entrada e ajustando a definição da consulta analítica.

Se a utilização de recursos for consistentemente superior a 80%, o atraso da marca d'água estiver aumentando e o número de eventos em atraso estiver aumentando, considere aumentar as unidades de streaming. Alta utilização indica que o trabalho está usando perto do máximo de recursos alocados.

Obter ajuda

Para obter mais assistência, experimente a nossa página de perguntas e respostas da Microsoft para o Azure Stream Analytics.