Risolvere i problemi delle query di Analisi di flusso di Azure

Questo articolo descrive problemi comuni di sviluppo delle query di Analisi di flusso di Azure e la risoluzione di questi.

Questo articolo descrive i problemi comuni relativi allo sviluppo di query di Analisi di flusso di Azure, come risolvere i problemi di query e come correggere i problemi. Molti passaggi per la risoluzione dei problemi richiedono l'abilitazione dei log delle risorse per il processo di Analisi di flusso. Se i log delle risorse non sono abilitati, vedere Risolvere i problemi di Analisi di flusso di Azure usando i log delle risorse.

La query non genera l'output previsto

  1. Esaminare gli errori eseguendo un test locale:

  2. Eseguire il debug delle query in modo dettagliato in locale usando il diagramma dei processi negli strumenti di Analisi di flusso di Azure per Visual Studio Code. Il diagramma del processo mostra i dati che fluiscono dalle origini di input (hub eventi, hub IoT e così via) attraversano più passaggi della query e infine giungono ai sink di output. Ogni passaggio della query è mappato a un set di risultati temporaneo definito nello script usando l'istruzione WITH. Per individuare l'origine del problema, è possibile visualizzare i dati e le metriche in ogni set di risultati intermedio.

    Job diagram preview result

  3. Se si usa Timestamp By, assicurarsi che i timestamp degli eventi siano successivi all'ora di inizio del processo.

  4. Eliminare i problemi comuni, ad esempio:

    • Una clausola WHERE della query ha filtrato tutti gli eventi impedendo la generazione dell'output.
    • Una funzione CAST non riesce, causando l'esito negativo del processo. Per evitare errori di cast di tipo, usare TRY_CAST.
    • Quando si usano le funzioni finestra, attendere la durata dell'intera finestra per vedere l'output dalla query.
    • Il timestamp per gli eventi precede l'ora di inizio del processo e gli eventi vengono eliminati.
    • Le condizioni di JOIN non corrispondono. Se non sono presenti corrispondenze, non verrà restituito output.
  5. Assicurarsi che i criteri di ordinamento degli eventi siano configurati come previsto. Passare a Impostazioni e selezionare Ordinamento eventi. Il criterio non viene applicato quando si usa il pulsante Test per testare la query. Questo aspetto rappresenta una differenza tra il test nel browser e l'esecuzione del processo in produzione.

  6. Eseguire il debug usando i log di attività e risorse:

L'utilizzo delle risorse è elevato

Assicurarsi di sfruttare i vantaggi della parallelizzazione in Analisi di flusso di Azure. È possibile usare il ridimensionamento con la parallelizzazione delle query dei processi di Analisi di flusso configurando partizioni di input e ottimizzando la definizione delle query di analisi.

Se l'utilizzo delle risorse è costantemente superiore all'80%, il ritardo limite aumenta e il numero di eventi registrati di nuovo aumenta, prendere in considerazione l'aumento delle unità di streaming. L'utilizzo elevato indica che il processo usa quasi le risorse allocate massime.

Eseguire il debug progressivo delle query

Nell'elaborazione dei dati in tempo reale può essere utile conoscere l'aspetto dei dati nel mezzo di una query. È possibile visualizzarlo usando il diagramma del processo in Visual Studio. Se non si ha Visual Studio, è possibile eseguire altri passaggi per l'output dei dati intermedi.

Poiché gli input o i passaggi di un processo di Analisi di flusso di Azure possono essere letti più volte, è possibile scrivere istruzioni SELECT INTO aggiuntive. In questo modo vengono generati dati intermedi nella risorsa di archiviazione che consentono di controllare la correttezza dei dati, esattamente come fanno le variabili di controllo quando si esegue il debug di un programma.

La seguente query di esempio in un processo di Analisi di flusso di Azure ha un input di flusso, due input di dati di riferimento e un output in Archiviazione tabelle di Azure. La query unisce i dati dell'hub eventi e di due BLOB di riferimento per ottenere le informazioni di nome e categoria:

Example Stream Analytics SELECT INTO query

Si noti che il processo è in esecuzione ma non vengono generati eventi nell'output. Nel riquadro Monitoraggio, illustrato di seguito, è possibile vedere che l'input produce dati, ma non sa quale passaggio del JOIN ha causato l'eliminazione di tutti gli eventi.

The Stream Analytics Monitoring tile

In questa situazione è possibile aggiungere alcune istruzioni SELECT INTO aggiuntive per "registrare" i risultati intermedi di JOIN e i dati che vengono letti dall'input.

In questo esempio sono stati aggiunti due nuovi "output temporanei". Possono essere qualsiasi sink che ti piace. Qui si usa Archiviazione di Azure come esempio:

Adding extra SELECT INTO statements to Stream Analytics query

È quindi possibile riscrivere la query come segue:

Rewritten SELECT INTO Stream Analytics query

Ora avviare nuovamente il processo e lasciarlo in esecuzione per alcuni minuti. Quindi eseguire una query su temp1 e temp2 con Visual Studio Cloud Explorer per generare le tabelle seguenti:

Tabella temp1SELECT INTO temp1 table Stream Analytics query

tabella temp2SELECT INTO temp2 table Stream Analytics query

Come si può vedere, temp1 e temp2 hanno entrambe dati e la colonna del nome viene popolata in modo corretto in temp2. Tuttavia, poiché non sono ancora presenti dati nell'output, c'è qualcosa di sbagliato:

SELECT INTO output1 table with no data Stream Analytics query

Tramite il campionamento dei dati, è possibile essere quasi certi che il problema riguardi il secondo JOIN. È possibile scaricare i dati di riferimento dal BLOB e dare un'occhiata:

SELECT INTO ref table Stream Analytics query

Come si può notare, il formato del GUID in questi dati di riferimento è diverso dal formato della colonna [da] di temp2. Ecco perché i dati non arrivavano in output1 come previsto.

È possibile correggere il formato dei dati, caricarlo nel BLOB di riferimento e riprovare:

SELECT INTO temp table Stream Analytics query

Questa volta i dati nell'output vengono formattati e popolati come previsto.

SELECT INTO final table Stream Analytics query

Come ottenere assistenza

Per maggiore supporto, provare la Pagina delle domande di Domande e risposte Microsoft per Analisi di flusso di Azure.

Passaggi successivi