Solucionar problemas de consultas do Azure Stream Analytics
Este artigo descreve problemas comuns com o desenvolvimento de consultas do Stream Analytics e como solucioná-los.
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 os logs de recursos sejam habilitados para seu trabalho do Stream Analytics. Se você não tiver logs de recursos habilitados, consulte Solucionar problemas do Azure Stream Analytics usando logs de recursos.
A consulta não está produzindo a saída esperada
Examine os erros testando localmente:
- No portal do Azure, na guia Consulta, selecione Testar. Use os dados de exemplo baixados para testar a consulta. Examine quaisquer erros e tente corrigi-los.
- Você também pode testar sua consulta localmente usando as ferramentas do Azure Stream Analytics para Visual Studio ou Visual Studio Code.
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 (Hub de Eventos, Hub IoT, etc.) através de várias etapas de consulta e, finalmente, para coletores de saída. Cada etapa de consulta é mapeada para um conjunto de resultados temporário definido no script usando a instrução COM. Você pode visualizar os dados, bem como as métricas, em cada conjunto de resultados intermediário para encontrar a origem do problema.
Se você usar Timestamp By, verifique se os eventos têm carimbos de data/hora maiores do que a hora de início do trabalho.
Elimine armadilhas comuns, tais como:
- Uma cláusula WHERE na consulta filtrava todos os eventos, impedindo que qualquer saída fosse gerada.
- Uma função CAST falha, fazendo com que o trabalho falhe. Para evitar falhas de mesclagem 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.
- O carimbo de data/hora dos eventos precede a hora de início do trabalho e os eventos são descartados.
- As condições de JOIN não correspondem. Se não houver correspondências, haverá saída zero.
Certifique-se de que as políticas de ordenação de eventos estão configuradas conforme o esperado. Vá para Configurações e selecione Ordenação de eventos. A política não é aplicada quando você usa o botão Testar para testar a consulta. Esse resultado é uma diferença entre testar no navegador e executar o trabalho na produção.
Depurar usando logs de atividades e recursos:
A utilização de recursos é elevada
Certifique-se de aproveitar a paralelização no Azure Stream Analytics. Você pode aprender a dimensionar com paralelização de consulta de trabalhos do Stream Analytics configurando partições de entrada e ajustando a definição de consulta de análise.
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.
Debug queries progressively (Depurar consultas progressivamente)
No processamento de dados em tempo real, saber como os dados se parecem no meio da consulta pode ser útil. Você pode ver isso usando o diagrama de trabalho no Visual Studio. Se você não tiver o Visual Studio, poderá executar etapas adicionais para gerar dados intermediários.
Como as entradas ou etapas de um trabalho do Azure Stream Analytics podem ser lidas várias vezes, você pode escrever instruções SELECT INTO extras. Isso gera dados intermediários para o armazenamento e permite que você inspecione a correção dos dados, assim como as variáveis de observação fazem quando você depura 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:
Observe que o trabalho está em execução, mas nenhum evento está sendo produzido na saída. No bloco Monitoramento, mostrado aqui, você pode ver que a entrada está produzindo dados, mas não sabe qual etapa do JOIN fez com que todos os eventos fossem descartados.
Nessa situação, você pode adicionar algumas instruções SELECT INTO extras para "registrar" os resultados intermediários do JOIN e os dados lidos da entrada.
Neste exemplo, adicionamos duas novas "saídas temporárias". Eles podem ser qualquer pia que você gosta. Aqui usamos o Armazenamento do Azure como exemplo:
Em seguida, você pode reescrever a consulta da seguinte forma:
Agora inicie o trabalho novamente e deixe-o funcionar por alguns minutos. Em seguida, consulte temp1 e temp2 com o Visual Studio Cloud Explorer para produzir as seguintes tabelas:
tabela temp1
tabela temp2
Como você pode ver, temp1 e temp2 têm dados, e a coluna de nome é preenchida corretamente em temp2. No entanto, como ainda não há dados na saída, algo está errado:
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:
Como você pode ver, o formato do GUID nesses dados de referência é diferente do formato da coluna [de] em temp2. É por isso que os dados não chegaram na saída1 como esperado.
Você pode corrigir o formato de dados, carregá-lo para o blob de referência e tentar novamente:
Desta vez, os dados na saída são formatados e preenchidos conforme o esperado.
Obter ajuda
Para obter mais assistência, experimente a nossa página de perguntas e respostas da Microsoft para o Azure Stream Analytics.