Résoudre les problèmes liés aux requêtes Azure Stream AnalyticsTroubleshoot Azure Stream Analytics queries

Cet article décrit les problèmes courants liés au développement de requêtes Stream Analytics et les procédures à suivre pour les résoudre.This article describes common issues with developing Stream Analytics queries and how to troubleshoot them.

Cet article décrit les problèmes courants liés au développement de requêtes Azure Stream Analytics, ainsi que la façon de résoudre les problèmes de requêtes et de corriger les problèmes.This article describes common issues with developing Azure Stream Analytics queries, how to troubleshoot query issues, and how to correct the issues. De nombreuses étapes de résolution des problèmes nécessitent que les journaux de ressources soient activés pour votre travail Stream Analytics.Many troubleshooting steps require resource logs to be enabled for your Stream Analytics job. Si les journaux de ressources ne sont pas activés, consultez la section Résoudre les problèmes liés à Azure Stream Analytics à l’aide des journaux de ressources.If you do not have resource logs enabled, see Troubleshoot Azure Stream Analytics by using resource logs.

La requête ne produit pas la sortie attendueQuery is not producing expected output

  1. Examinez les erreurs en effectuant un test local :Examine errors by testing locally:

  2. Déboguer des requêtes étape par étape localement à l’aide du diagramme de travail dans les outils Azure Stream Analytics pour Visual Studio Code.Debug queries step by step locally using job diagram in Azure Stream Analytics tools for Visual Studio Code. Le diagramme de travail montre la façon dont les données circulent des sources d’entrée (Event Hub, IoT Hub, etc.), via plusieurs étapes de requête et, enfin, jusqu’aux récepteurs de sortie.The job diagram shows how data flows from input sources (Event Hub, IoT Hub, etc.) through multiple query steps and finally to output sinks. Chaque étape de la requête est mappée à un jeu de résultats temporaire défini dans le script à l’aide de l’instruction WITH.Each query step is mapped to a temporary result set defined in the script using the WITH statement. Vous pouvez afficher les données et les métriques dans chaque jeu de résultats intermédiaire pour trouver la source du problème.You can view the data, as well as metrics, in each intermediate result set to find the source of the issue.

    Aperçu des résultats dans le diagramme de travail

  3. Si vous utilisez l’objet Timestamp By, assurez-vous que les événements présentent des horodatages postérieurs à l’heure de début du travail.If you use Timestamp By, verify that the events have timestamps greater than the job start time.

  4. Éliminez les pièges les plus courants, comme par exemple :Eliminate common pitfalls, such as:

    • Une clause WHERE dans la requête a filtré l’ensemble des événements, ce qui empêche la génération des sorties.A WHERE clause in the query filtered out all events, preventing any output from being generated.
    • Une fonction CAST échoue, ce qui provoque l’échec du travail.A CAST function fails, causing the job to fail. Pour éviter les échecs de conversion de type, utilisez plutôt TRY_CAST.To avoid type cast failures, use TRY_CAST instead.
    • Lorsque vous utilisez des fonctions de fenêtre, attendez la durée totale de la fenêtre pour obtenir une sortie.When you use window functions, wait for the entire window duration to see an output from the query.
    • L’horodatage des événements est antérieur à l’heure de début du travail, provoquant l’abandon des événements.The timestamp for events precedes the job start time and events are dropped.
    • Les conditions JOIN ne correspondent pas.JOIN conditions don't match. S’il n’y a aucune correspondance, aucune sortie ne pourra être produite.If there are no matches, there will be zero output.
  5. Vérifiez que les stratégies d’ordre des événements sont configurées comme prévu.Ensure event ordering policies are configured as expected. Accédez à Paramètres et sélectionnez Ordre des événements.Go to Settings and select Event Ordering. La stratégie n’est pas appliquée lorsque vous utilisez le bouton Test pour tester la requête.The policy is not applied when you use the Test button to test the query. C’est une des différences entre le test en navigateur et l’exécution réelle du travail.This result is one difference between testing in-browser versus running the job in production.

  6. Déboguez à l’aide des journaux d’activité et de ressources :Debug by using activity and resource logs:

L’utilisation des ressources est élevéeResource utilization is high

Veillez à tirer parti de la parallélisation dans Azure Stream Analytics.Ensure you take advantage of parallelization in Azure Stream Analytics. Vous pouvez apprendre à mettre à l’échelle des travaux Stream Analytics avec parallélisation des requêtes en configurant des partitions d’entrée et en réglant la définition des requêtes Analytics.You can learn to scale with query parallelization of Stream Analytics jobs by configuring input partitions and tuning the analytics query definition.

Si l’utilisation des ressources est régulièrement supérieure à 80 %, le délai en filigrane augmente; tout comme le nombre d’événements retardés. Dans ce cas, vous pouvez d’augmenter les unités de streaming.If resource utilization is consistently over 80%, the watermark delay is rising, and the number of backlogged events is rising, consider increasing streaming units. Une utilisation intensive indique que la tâche atteint une limite proche de la quantité maximale de ressources allouées.High utilization indicates that the job is using close to the maximum allocated resources.

Déboguer les requêtes progressivementDebug queries progressively

Lors du traitement de données en temps réel, savoir à quoi ressemblent les données au milieu de la requête peut être utile.In real-time data processing, knowing what the data looks like in the middle of the query can be helpful. Vous pouvez le voir à l’aide du diagramme de travail dans Visual Studio.You can see this using the job diagram in Visual Studio. Si vous n’avez pas Visual Studio, vous pouvez prendre des mesures supplémentaires pour générer des données intermédiaires.If you don't have Visual Studio, you can take additional steps to output intermediate data.

Étant donné que les entrées ou les étapes d’un travail Azure Stream Analytics peuvent être lues plusieurs fois, vous pouvez écrire des instructions SELECT INTO supplémentaires.Because inputs or steps of an Azure Stream Analytics job can be read multiple times, you can write extra SELECT INTO statements. Cela génère des données intermédiaires dans le stockage et vous permet d’inspecter l’exactitude des données, tout comme le font les variables espionnes lorsque vous déboguez un programme.Doing so outputs intermediate data into storage and lets you inspect the correctness of the data, just as watch variables do when you debug a program.

L’exemple de requête suivant dans un travail Azure Stream Analytics a un flux d’entrée, deux entrées de données de référence et une sortie pour Stockage Table Azure.The following example query in an Azure Stream Analytics job has one stream input, two reference data inputs, and an output to Azure Table Storage. La requête joint les données du Event Hub et deux objets blob de référence pour obtenir les informations de nom et de catégorie :The query joins data from the event hub and two reference blobs to get the name and category information:

Exemple de requête SELECT INTO Stream Analytics

Notez que le travail est en cours d’exécution, mais aucun événement n’est produit dans la sortie.Note that the job is running, but no events are being produced in the output. Dans la vignette Surveillance, illustrée ici, vous pouvez voir que l’entrée génère des données, mais vous ne savez pas quelle étape de JOIN a causé la suppression de tous les événements.On the Monitoring tile, shown here, you can see that the input is producing data, but you don’t know which step of the JOIN caused all the events to be dropped.

Vignette Surveillance Stream Analytics

Dans ce cas, vous pouvez ajouter quelques instructions SELECT INTO supplémentaires pour « journaliser » les résultats JOIN intermédiaires et les données lues à partir de l’entrée.In this situation, you can add a few extra SELECT INTO statements to "log" the intermediate JOIN results and the data that's read from the input.

Dans cet exemple, nous avons ajouté deux nouvelles « sorties temporaires ».In this example, we've added two new "temporary outputs." Il peut s’agir du récepteur que vous voulez.They can be any sink you like. Ici, nous utilisons Stockage Azure comme exemple :Here we use Azure Storage as an example:

Ajout d’instructions SELECT INTO supplémentaires à la requête Stream Analytics

Vous pouvez ensuite réécrire la requête comme suit :You can then rewrite the query like this:

Requête Stream Analytics SELECT INTO réécrite

À présent, relancez le travail et laissez-le s’exécuter pendant quelques minutes.Now start the job again, and let it run for a few minutes. Ensuite, interrogez temp1 et temp2 avec Visual Studio Cloud Explorer pour produire les tables suivantes :Then query temp1 and temp2 with Visual Studio Cloud Explorer to produce the following tables:

table temp1 Requête Stream Analytics table temp1 SELECT INTOtemp1 table SELECT INTO temp1 table Stream Analytics query

table temp2 Requête Stream Analytics table temp2 SELECT INTOtemp2 table SELECT INTO temp2 table Stream Analytics query

Comme vous pouvez le voir, temp1 et temp2 présentent tous deux des données, et la colonne de nom est remplie correctement dans temp2.As you can see, temp1 and temp2 both have data, and the name column is populated correctly in temp2. Toutefois, étant donné qu’il n’y a toujours aucune donnée dans la sortie, quelque chose ne va pas :However, because there is still no data in output, something is wrong:

Requête Stream Analytics table output1 SELECT INTO sans aucune donnée

En échantillonnant les données, vous pouvez être presque certain que le problème concerne le deuxième JOIN.By sampling the data, you can be almost certain that the issue is with the second JOIN. Vous pouvez télécharger les données de référence à partir de l’objet blob et jeter un coup de œil :You can download the reference data from the blob and take a look:

Requête Stream Analytics table ref SELECT INTO

Comme vous pouvez le voir, le format du GUID dans ces données de référence est différent du format de la colonne [from] dans temp2.As you can see, the format of the GUID in this reference data is different from the format of the [from] column in temp2. C’est pourquoi les données ne sont pas arrivées dans output1 comme prévu.That’s why the data didn’t arrive in output1 as expected.

Vous pouvez corriger le format de données, les télécharger pour référencer des objets blob, puis réessayer :You can fix the data format, upload it to reference blob, and try again:

Requête Stream Analytics table temp SELECT INTO

Cette fois, les données dans la sortie sont mises en forme et remplies comme prévu.This time, the data in the output is formatted and populated as expected.

Requête Stream Analytics table finale SELECT INTO

Obtenir de l’aideGet help

Pour obtenir de l’aide supplémentaire, essayez notre page de questions Microsoft Q&A pour Azure Stream Analytics.For further assistance, try our Microsoft Q&A question page for Azure Stream Analytics.

Étapes suivantesNext steps