Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
Examine os erros testando localmente:
- No portal do Azure, no separador Consulta, selecione Teste. Use os dados de exemplo baixados para testar a consulta. Examine quaisquer erros e tente corrigi-los.
- Também pode testar a sua consulta localmente usando as ferramentas 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, 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.
Se você usar Timestamp By, verifique se os eventos têm marcas temporais superiores à hora de início da tarefa.
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.
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.
Depurar usando logs de atividades e recursos:
- Utilize Registos de Atividade e aplique filtros para identificar e depurar erros.
- Utilize os registos de recursos da tarefa para identificar e depurar erros.
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:
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.
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:
Em seguida, você pode reescrever a consulta da seguinte forma:
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 temp1
Tabela temp2
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:
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:
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:
Desta vez, os dados na saída são formatados e preenchidos conforme o esperado.
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.