Risolvere i problemi delle query di Analisi di flusso di Azure

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 produce l'output atteso

  1. Esaminare gli errori eseguendo un test locale:

  2. 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 lavoro mostra come i dati fluiscono dalle fonti di input, ad esempio Hub eventi di Azure e hub IoT di Azure, attraverso molteplici passaggi di query e infine fino ai dissipatori di output. Lo script mappa ogni fase di query a un set di risultati temporaneo che definisci usando l'istruzione WITH. Visualizza i dati e le metriche in ogni set di risultati intermedi per trovare la fonte del problema.

    Screenshot del diagramma del lavoro in Visual Studio Code che mostra il risultato di anteprima per un passaggio di query.

  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 nella query filtrava tutti gli eventi, quindi la query non produceva alcun output.
    • Una funzione CAST non riesce, causando l'esito negativo del processo. Per evitare errori nella conversione di tipo, usare TRY_CAST.
    • Quando usi le funzioni di finestra, attendi il completamento dell'intera finestra per visualizzare l'output della query.
    • Il timestamp degli eventi precede l'orario di inizio del lavoro, quindi il lavoro elimina gli eventi.
    • Le condizioni di JOIN non corrispondono. Se non ci sono corrispondenze, la query non produce alcun risultato.
  5. Assicurati di configurare le politiche di ordine degli eventi come previsto. Passare a Impostazioni e selezionare Ordinamento eventi. Il pulsante Test non applica il criterio quando esegui il test della query. Questo risultato è una differenza tra testare nel browser ed eseguire il lavoro in produzione.

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

Eseguire il debug progressivo delle query

Nell'elaborazione dati in tempo reale, è utile sapere come appaiono i dati nel mezzo della query. Per visualizzare i dati intermedi, usa il diagramma del lavoro in Visual Studio. Se non hai Visual Studio, puoi fare passaggi extra per produrre dati intermedi.

Poiché Analisi di flusso di Azure può leggere più volte gli input o i passaggi di un processo, puoi scrivere istruzioni aggiuntive SELECT INTO. Così facendo si inviano dati intermedi nell'archiviazione e puoi verificare la correttezza dei dati, proprio come fanno le variabili di osservazione quando fai il debug di un programma.

La seguente query di esempio in un processo di Analisi di flusso di Azure ha un input del flusso, due input di dati di riferimento e un output nell'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:

Schermata di un esempio di query di Stream Analytics che unisce un input di Hub eventi con due BLOB di riferimento tramite SELECT INTO.

Il lavoro è in esecuzione, ma non produce eventi nell'output. Nella tessera Monitoraggio , mostrata qui, puoi vedere che l'input produce dati, ma non sai quale passaggio di JOIN abbia eliminato tutti gli eventi.

Screenshot della tessera di monitoraggio Stream Analytics che mostra gli eventi di input ricevuti mentre non vengono prodotti eventi di output.

In questa situazione, puoi aggiungere qualche istruzione extra SELECT INTO per "registrare" i risultati intermedi JOIN e i dati letti dall'input.

In questo esempio, abbiamo aggiunto due nuove "uscite temporanee". Possono essere qualsiasi lavandino tu voglia. Qui si usa Archiviazione di Azure come esempio:

Schermata di una query di Stream Analytics con istruzioni SELECT INTO aggiunte per archiviare i risultati intermedi nell'archiviazione.

È quindi possibile riscrivere la query come segue:

Schermata della query di Stream Analytics riscritta che invia i risultati intermedi del JOIN a output temporanei.

Ora avviare nuovamente il processo e lasciarlo in esecuzione per alcuni minuti. Poi consulta temp1 e temp2 usa Visual Studio Cloud Explorer per produrre le seguenti tabelle:

Tabella temp1Schermata della tabella temp1 che mostra i risultati intermedi dell'operazione di JOIN della query di Stream Analytics.

Tabella temp2Screenshot della tabella temp2 che mostra la colonna nome popolata correttamente dalla query Stream Analytics.

Come puoi vedere, temp1 e temp2 entrambi hanno dati, e la name colonna è popolata correttamente in temp2. Tuttavia, poiché l'output non contiene ancora dati, qualcosa non va:

Schermata della tabella output1 in cui non sono visualizzati dati restituiti dalla query di Stream Analytics.

Analizzando un campione di dati, si può essere quasi certi che il problema risieda nel secondo JOIN. È possibile scaricare i dati di riferimento dal BLOB e dare un'occhiata:

Schermata della tabella dei dati di riferimento che mostra un formato GUID diverso da quello della colonna 'from' in temp2.

Come puoi vedere, il formato del GUID in questi dati di riferimento è diverso dal formato della [from] colonna in temp2. Ecco perché i dati non sono arrivati in output1 come previsto.

Correggi il formato dei dati, caricalo nel blob di riferimento e riprova:

Screenshot della tabella dati di riferimento dopo che il formato GUID è stato corretto e caricato nel blob di riferimento.

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

Screenshot della tabella di output che mostra i dati formattati e popolati come previsto nella query Stream Analytics.

L'utilizzo delle risorse è elevato

Assicurarsi di sfruttare i vantaggi della parallelizzazione in Analisi di flusso di Azure. Scopri come ottimizzare la scalabilità con la parallelizzazione delle query dei processi di Stream Analytics configurando le 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 sta utilizzando quasi il massimo delle risorse allocate.

Come ottenere assistenza

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