Eseguire il debug delle query mediante istruzioni SELECT INTODebug queries by using SELECT INTO statements

Nell'elaborazione dei dati in tempo reale può essere utile conoscere l'aspetto dei dati nel mezzo di una query.In real-time data processing, knowing what the data looks like in the middle of the query can be helpful. 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.Because inputs or steps of an Azure Stream Analytics job can be read multiple times, you can write extra SELECT INTO statements. 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.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.

Usare SELECT INTO per controllare il flusso dei datiUse SELECT INTO to check the data stream

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.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 query unisce i dati dell'hub eventi e di due BLOB di riferimento per ottenere le informazioni di nome e categoria:The query joins data from the event hub and two reference blobs to get the name and category information:

Esempio di query SELECT INTO

Si noti che il processo è in esecuzione ma non vengono generati eventi nell'output.Note that the job is running, but no events are being produced in the 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.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.

Riquadro Monitoraggio

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 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.

In questo esempio sono stati aggiunti due nuovi "output temporanei".In this example, we've added two new “temporary outputs.” Può trattarsi di qualsiasi sink desiderato.They can be any sink you like. Qui si usa Archiviazione di Azure come esempio:Here we use Azure Storage as an example:

Aggiunta di ulteriori istruzioni SELECT INTO

È quindi possibile riscrivere la query come segue:You can then rewrite the query like this:

Query SELECT INTO riscritta

Ora avviare nuovamente il processo e lasciarlo in esecuzione per alcuni minuti.Now start the job again, and let it run for a few minutes. Quindi eseguire una query su temp1 e temp2 con Visual Studio Cloud Explorer per generare le tabelle seguenti:Then query temp1 and temp2 with Visual Studio Cloud Explorer to produce the following tables:

temp1 table SELECT INTO temp1 tabletemp1 table SELECT INTO temp1 table

temp2 table SELECT INTO temp2 tabletemp2 table SELECT INTO temp2 table

Come si può vedere, temp1 e temp2 hanno entrambe dati e la colonna del nome viene popolata in modo corretto in temp2.As you can see, temp1 and temp2 both have data, and the name column is populated correctly in temp2. Tuttavia, poiché non sono ancora presenti dati nell'output, c'è qualcosa di sbagliato:However, because there is still no data in output, something is wrong:

Tabella SELECT INTO output1 senza dati

Tramite il campionamento dei dati, è possibile essere quasi certi che il problema riguardi il secondo JOIN.By sampling the data, you can be almost certain that the issue is with the second JOIN. È possibile scaricare i dati di riferimento dal BLOB e dare un'occhiata:You can download the reference data from the blob and take a look:

Tabella SELECT INTO riferimento

Come si può notare, il formato del GUID in questi dati di riferimento è diverso dal formato della colonna [da] di 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. Ecco perché i dati non arrivavano in output1 come previsto.That’s why the data didn’t arrive in output1 as expected.

È possibile correggere il formato dei dati, caricarlo nel BLOB di riferimento e riprovare:You can fix the data format, upload it to reference blob, and try again:

Tabella SELECT INTO temporanea

Questa volta i dati nell'output vengono formattati e popolati come previsto.This time, the data in the output is formatted and populated as expected.

Tabella SELECT INTO finale

Ottenere aiutoGet help

Per ulteriore assistenza, provare il Forum di Analisi dei flussi di Azure.For further assistance, try our Azure Stream Analytics forum.

Passaggi successiviNext steps