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
Esaminare gli errori eseguendo un test locale:
- Nel portale di Azure selezionare Test nella scheda Query. Testare la query usando i dati di esempio scaricati. Esaminare eventuali errori e provare a risolverli.
- È anche possibile testare la query localmente usando gli strumenti di Analisi di flusso di Azure per Visual Studio o Visual Studio Code.
Eseguire il debug delle query in locale, passaggio per passaggio, usando il diagramma del processo 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.
Se si usa Timestamp By, assicurarsi che i timestamp degli eventi siano successivi all'ora di inizio del processo.
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.
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.
Eseguire il debug usando i log di attività e risorse:
- Usare i log attività e filtrare per identificare gli errori ed eseguirne il debug.
- Usare i log delle risorse del processo per identificare gli errori ed eseguirne il debug.
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 in backlog 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:
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.
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". Può trattarsi di qualsiasi sink desiderato. Qui si usa Archiviazione di Azure come esempio:
È quindi possibile riscrivere la query come segue:
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 temp1
Tabella temp2
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:
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:
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:
Questa volta i dati nell'output vengono formattati e popolati come previsto.
Come ottenere assistenza
Per maggiore supporto, provare la Pagina delle domande di Domande e risposte Microsoft per Analisi di flusso di Azure.
Passaggi successivi
- Introduzione ad Analisi dei flussi di Azure
- Introduzione all'uso di Analisi dei flussi di Azure
- Ridimensionare i processi di Analisi dei flussi di Azure
- Informazioni di riferimento sul linguaggio di query di Analisi di flusso di Azure
- Informazioni di riferimento sulle API REST di gestione di Analisi di flusso di Azure