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. Muitas etapas de solução de problemas exigem que você habilite logs de recursos para seu trabalho do Stream Analytics. Se você não tiver os logs de recursos habilitados, confira Solucionar problemas do Azure Stream Analytics usando os logs de recursos.

A consulta não está produzindo o resultado esperado

  1. Examine os erros testando localmente:

  2. Depurar consultas passo a passo e localmente usando o diagrama de trabalho nas ferramentas do Azure Stream Analytics para Visual Studio Code. O diagrama de trabalhos mostra como os dados fluem de fontes de entrada, por exemplo, Hubs de Eventos do Azure e Hub IoT do Azure, passando por múltiplas etapas de consulta e, finalmente, para os sumidouros de saída. O script mapeia cada etapa de consulta para um conjunto temporário de resultados que você define usando a instrução WITH. Veja os dados e métricas em cada conjunto de resultados intermediários para encontrar a origem do problema.

    Captura de tela do diagrama de trabalhos no Visual Studio Code mostrando o resultado da prévia para uma etapa de consulta.

  3. Se você usar Carimbo de Data/Hora Por, verifique se os eventos têm carimbos de data/hora maiores que a hora de início do trabalho.

  4. Elimine armadilhas comuns, como:

    • Uma cláusula WHERE na consulta filtrava todos os eventos, então a consulta não gerava saída.
    • Uma função CAST falha, causando a falha do trabalho. Nesse caso, para evitar falhas de conversão de tipo, use TRY_CAST.
    • Ao usar funções de janela, espere até o fim de toda a duração da janela para ver o resultado da consulta.
    • O timestamp dos eventos precede o horário de início do trabalho, então o trabalho descarta os eventos.
    • As condições 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. Acesse Configurações e selecione Ordenação de eventos. O botão Testar não aplica a política quando você testa a consulta. Esse resultado é uma diferença entre testar no navegador e executar o trabalho em produção.

  6. Depurar usando logs de atividade e de recursos:

Depurar consultas progressivamente

No processamento de dados em tempo real, ajuda saber como os dados ficam no meio da consulta. Para visualizar os dados intermediários, use o diagrama de trabalho no Visual Studio. Se você não tiver o Visual Studio, pode dar passos extras para gerar dados intermediários.

Como o Azure Stream Analytics pode ler entradas ou etapas de um trabalho várias vezes, você pode escrever instruções extrasSELECT INTO. Fazer isso gera dados intermediários para o armazenamento e permite verificar a correção dos dados, assim como as variáveis de relógio fazem ao depurar um programa.

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

Captura de tela de um exemplo de consulta de Stream Analytics que une 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 Monitoramento, mostrado aqui, você pode ver que a entrada está produzindo dados, mas não é possível saber qual etapa do JOIN descartou todos os eventos.

Captura de tela do bloco de Monitoramento de Análise de Fluxo mostrando eventos de entrada recebidos enquanto nenhum evento de saída é produzido.

Nessa situação, você pode adicionar algumas instruções extras SELECT INTO para "registrar" os resultados intermediários JOIN e os dados lidos da entrada.

Neste exemplo, adicionamos duas novas "saídas temporárias". Podem ser qualquer pia que você quiser. Aqui, usamos o Armazenamento do Azure como um exemplo:

Captura de tela de uma consulta de Stream Analytics com instruções extras SELECT INTO adicionadas para registrar resultados intermediários no armazenamento.

Assim, você pode reescrever a consulta desta forma:

Captura de tela da consulta reescrita do Stream Analytics que gera resultados intermediários do JOIN para saídas temporárias.

Agora, reinicie o trabalho e deixe ele ser executado por alguns minutos. Depois, consulte temp1 e temp2 usando o Visual Studio Cloud Explorer para produzir as seguintes tabelas:

Tabela temp1Captura de tela da tabela temp1 mostrando resultados intermediários de JOIN da consulta Stream Analytics.

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

Como você pode 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 tela da tabela output1 mostrando que nenhum dado foi retornado pela consulta do Stream Analytics.

Ao amostrar os dados, você pode ter quase 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 tela da tabela de dados de referência mostrando um formato GUID que difere da coluna from em temp2.

Como você pode ver, o formato do GUID nesses dados de referência é diferente do formato da [from] coluna em temp2. Por isso os dados não chegaram em output1 como esperado.

Corrija o formato dos dados, envie para o blob de referência e tente novamente:

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

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

Captura de tela da tabela de saída mostrando dados formatados e preenchidos conforme esperado na consulta Stream Analytics.

A utilização de recursos está alta

Este artigo mostra como tirar proveito da paralelização no Azure Stream Analytics. Aprenda a escalar com a paralelização de consulta dos trabalhos do Stream Analytics configurando partições de entrada e ajustando a definição da consulta analítica.

Se a utilização de recursos estiver consistentemente acima de 80%, o atraso do watermark estiver aumentando e o número de eventos acumulados estiver aumentando, considere aumentar as unidades de streaming. A alta utilização indica que o trabalho está perto de usar o máximo de recursos alocados.

Obter ajuda

Para obter mais assistência, confira nossa página de Perguntas e respostas do Microsoft do Azure Stream Analytics.