Compilare una soluzione IoT con Analisi di flussoBuild an IoT solution by using Stream Analytics

IntroduzioneIntroduction

Questa esercitazione illustra come usare Analisi di flusso di Azure per acquisire informazioni approfondite in tempo reale a partire dai dati.In this tutorial, you will learn how to use Azure Stream Analytics to get real-time insights from your data. Gli sviluppatori possono combinare facilmente flussi di dati, come clickstream, log ed eventi generati da dispositivi, con record cronologici o dati di riferimento per ottenere informazioni aziendali approfondite.Developers can easily combine streams of data, such as click-streams, logs, and device-generated events, with historical records or reference data to derive business insights. Analisi di flusso di Azure è un servizio di calcolo dei flussi in tempo reale completamente gestito, ospitato in Microsoft Azure, con caratteristiche di resilienza predefinita, bassa latenza e scalabilità che consentono la piena operatività in pochi minuti.As a fully managed, real-time stream computation service that's hosted in Microsoft Azure, Azure Stream Analytics provides built-in resiliency, low latency, and scalability to get you up and running in minutes.

Dopo aver completato questa esercitazione, si sarà in grado di:After completing this tutorial, you will be able to:

  • Acquisire familiarità con il portale di Analisi di flusso di Azure.Familiarize yourself with the Azure Stream Analytics portal.
  • Configurare e distribuire un processo di flusso.Configure and deploy a streaming job.
  • Articolare problemi reali e risolverli con il linguaggio di query di Analisi di flusso.Articulate real-world problems and solve them by using the Stream Analytics query language.
  • Sviluppare in tutta sicurezza soluzioni di streaming per i clienti usando Analisi di flusso.Develop streaming solutions for your customers by using Stream Analytics with confidence.
  • Usare l'esperienza di monitoraggio e registrazione per risolvere i problemi.Use the monitoring and logging experience to troubleshoot issues.

PrerequisitiPrerequisites

Per completare questa esercitazione, sono necessari i prerequisiti seguenti:You will need the following prerequisites to complete this tutorial:

Presentazione dello scenario: il caselloScenario introduction: “Hello, Toll!”

Un casello rappresenta una situazione piuttosto comune.A toll station is a common phenomenon. Se ne incontrano sulle autostrade e su molti ponti e tunnel in tutto il mondo.You encounter them on many expressways, bridges, and tunnels across the world. Ogni barriera è costituita da più caselli.Each toll station has multiple toll booths. In quelli manuali ci si ferma per pagare il pedaggio a un addetto.At manual booths, you stop to pay the toll to an attendant. In quelli automatizzati al passaggio attraverso il casello un sensore posto al di sopra di esso analizza una scheda RFID posizionata sul parabrezza del veicolo.At automated booths, a sensor on top of each booth scans an RFID card that's affixed to the windshield of your vehicle as you pass the toll booth. È semplice visualizzare il passaggio dei veicoli nei caselli come un flusso di eventi, sui quali è possibile eseguire alcune operazioni interessanti.It is easy to visualize the passage of vehicles through these toll stations as an event stream over which interesting operations can be performed.

Immagine di automobili ai caselli

Dati di ingressoIncoming data

Questa esercitazione utilizza due flussi di dati.This tutorial works with two streams of data. Il primo flusso viene prodotto da sensori installati all'entrata e all'uscita del casello.Sensors installed in the entrance and exit of the toll stations produce the first stream. Il secondo flusso è un set di dati di ricerca statico contenente dati di registrazione dei veicoli.The second stream is a static lookup dataset that has vehicle registration data.

Flusso di dati di ingressoEntry data stream

Il flusso di dati di ingresso contiene informazioni sulle automobili che entrano nel casello.The entry data stream contains information about cars as they enter toll stations.

ID caselloTollID Tempo ingressoEntryTime TargaLicensePlate StatoState Casa automobilisticaMake ModelloModel Tipo veicoloVehicleType Peso veicoloVehicleWeight CaselloToll TagTag
11 2014-09-10 12:01:00.0002014-09-10 12:01:00.000 JNB 7001JNB 7001 NYNY HondaHonda CRVCRV 11 00 77
11 2014-09-10 12:02:00.0002014-09-10 12:02:00.000 YXZ 1001YXZ 1001 NYNY ToyotaToyota CamryCamry 11 00 44 123456789123456789
33 2014-09-10 12:02:00.0002014-09-10 12:02:00.000 ABC 1004ABC 1004 CTCT FordFord TaurusTaurus 11 00 55 456789123456789123
22 2014-09-10 12:03:00.0002014-09-10 12:03:00.000 XYZ 1003XYZ 1003 CTCT ToyotaToyota CorollaCorolla 11 00 44
11 2014-09-10 12:03:00.0002014-09-10 12:03:00.000 BNJ 1007BNJ 1007 NYNY HondaHonda CRVCRV 11 00 55 789123456789123456
22 2014-09-10 12:05:00.0002014-09-10 12:05:00.000 CDE 1007CDE 1007 NJNJ ToyotaToyota 4x44x4 11 00 66 321987654321987654

Ecco una breve descrizione delle colonne:Here is a short description of the columns:

ColonnaColumn DescrizioneDescription
ID caselloTollID ID casello che identifica in modo univoco un caselloThe toll booth ID that uniquely identifies a toll booth
Tempo ingressoEntryTime Data e ora (UTC) di ingresso del veicolo nel caselloThe date and time of entry of the vehicle to the toll booth in UTC
TargaLicensePlate Numero di targa del veicoloThe license plate number of the vehicle
StatoState Stato degli Stati UnitiA state in United States
Casa automobilisticaMake Il produttore dell'automobileThe manufacturer of the automobile
ModelloModel Numero di modello dell'automobileThe model number of the automobile
Tipo veicoloVehicleType 1 per autovetture o 2 per veicoli commercialiEither 1 for passenger vehicles or 2 for commercial vehicles
Peso veicoloWeightType Peso del veicolo in tonnellate, 0 per veicoli passeggeriVehicle weight in tons; 0 for passenger vehicles
CaselloToll Il valore del pedaggio in USDThe toll value in USD
TagTag e-Tag sull'automobile che permette di automatizzare il pagamento, lasciato vuoto quando il pagamento viene effettuato manualmenteThe e-Tag on the automobile that automates payment; blank where the payment was done manually

Flusso di dati di uscitaExit data stream

Il flusso di dati di uscita contiene informazioni sulle automobili che escono dal casello.The exit data stream contains information about cars leaving the toll station.

ID caselloTollId Tempo ingressoExitTime TargaLicensePlate
11 2014-09-10T12:03:00.0000000Z2014-09-10T12:03:00.0000000Z JNB 7001JNB 7001
11 2014-09-10T12:03:00.0000000Z2014-09-10T12:03:00.0000000Z YXZ 1001YXZ 1001
33 2014-09-10T12:04:00.0000000Z2014-09-10T12:04:00.0000000Z ABC 1004ABC 1004
22 2014-09-10T12:07:00.0000000Z2014-09-10T12:07:00.0000000Z XYZ 1003XYZ 1003
11 2014-09-10T12:08:00.0000000Z2014-09-10T12:08:00.0000000Z BNJ 1007BNJ 1007
22 2014-09-10T12:07:00.0000000Z2014-09-10T12:07:00.0000000Z CDE 1007CDE 1007

Ecco una breve descrizione delle colonne:Here is a short description of the columns:

ColonnaColumn DescrizioneDescription
ID caselloTollID ID casello che identifica in modo univoco un caselloThe toll booth ID that uniquely identifies a toll booth
Tempo ingressoExitTime Data e ora (UTC) di uscita del veicolo dal caselloThe date and time of exit of the vehicle from toll booth in UTC
TargaLicensePlate Numero di targa del veicoloThe license plate number of the vehicle

Dati di registrazione di veicoli commercialiCommercial vehicle registration data

Questa esercitazione usa uno snapshot statico di un database di registrazione di veicoli commerciali.The tutorial uses a static snapshot of a commercial vehicle registration database.

TargaLicensePlate ID registrazioneRegistrationId ScadutoExpired
SVT 6023SVT 6023 285429838285429838 11
XLZ 3463XLZ 3463 362715656362715656 00
BAC 1005BAC 1005 876133137876133137 11
RIV 8632RIV 8632 992711956992711956 00
SNY 7188SNY 7188 592133890592133890 00
ELH 9896ELH 9896 678427724678427724 11

Ecco una breve descrizione delle colonne:Here is a short description of the columns:

ColonnaColumn DescrizioneDescription
TargaLicensePlate Numero di targa del veicoloThe license plate number of the vehicle
ID registrazioneRegistrationId ID registrazione del veicoloThe vehicle's registration ID
ScadutoExpired Stato di registrazione del veicolo: 0 se la registrazione del veicolo è attiva, 1 se la registrazione è scadutaThe registration status of the vehicle: 0 if vehicle registration is active, 1 if registration is expired

Configurare l'ambiente per Analisi di flusso di AzureSet up the environment for Azure Stream Analytics

Per completare l'esercitazione, è necessaria una sottoscrizione di Microsoft Azure.To complete this tutorial, you need a Microsoft Azure subscription. Microsoft offre la possibilità di scegliere una versione di valutazione gratuita per i servizi Microsoft Azure.Microsoft offers free trial for Microsoft Azure services.

Se non si ha un account Azure, è possibile richiedere una versione di valutazione gratuita.If you do not have an Azure account, you can request a free trial version.

Nota

Per l'iscrizione a una versione di valutazione gratuita, è necessario avere un dispositivo mobile che possa ricevere messaggi di testo e una carta di credito valida.To sign up for a free trial, you need a mobile device that can receive text messages and a valid credit card.

Per poter usare al meglio il credito Azure gratuito, seguire la procedura riportata nella sezione "Eseguire la pulizia dell'account Azure" alla fine di questo articolo.Be sure to follow the steps in the “Clean up your Azure account” section at the end of this article so that you can make the best use of your Azure credit.

Eseguire il provisioning delle risorse di Azure necessarie per l'esercitazioneProvision Azure resources required for the tutorial

Questa esercitazione richiede due hub eventi per ricevere i flussi di dati in ingresso e in uscita.This tutorial requires two event hubs to receive entry and exit data streams. Il database SQL di Azure restituisce i risultati dei processi di Analisi di flusso.Azure SQL Database outputs the results of the Stream Analytics jobs. In Archiviazione di Azure vengono memorizzati i dati di riferimento di registrazione dei veicoli.Azure Storage stores reference data about vehicle registrations.

È possibile usare lo script Setup.ps1 nella cartella TollApp in GitHub per creare tutte le risorse necessarie.You can use the Setup.ps1 script in the TollApp folder on GitHub to create all required resources. Per ottimizzare i tempi, si consiglia di eseguirlo.In the interest of time, we recommend that you run it. Per altre informazioni sulla configurazione di queste risorse nel portale di Azure, vedere l'appendice relativa alla configurazione delle risorse per l'esercitazione nel portale di Azure.If you would like to learn more about how to configure these resources in the Azure portal, refer to the “Configuring tutorial resources in Azure portal” appendix.

Scaricare e salvare la cartella e i file di supporto di TollApp .Download and save the supporting TollApp folder and files.

Aprire una finestra di Microsoft Azure PowerShellcome amministratore.Open a Microsoft Azure PowerShell window as an administrator. Se ancora non si ha Azure PowerShell, vedere Come installare e configurare Azure PowerShell per istruzioni su come installarlo.If you do not yet have Azure PowerShell, follow the instructions in Install and configure Azure PowerShell to install it.

Dato che Windows blocca automaticamente i file con estensione ps1, dll ed exe, è necessario impostare i criteri di esecuzione prima di eseguire lo script.Because Windows automatically blocks .ps1, .dll, and .exe files, you need to set the execution policy before you run the script. Assicurarsi che la finestra di Azure PowerShell sia in esecuzione come amministratore.Make sure the Azure PowerShell window is running as an administrator. Eseguire Set-ExecutionPolicy unrestricted.Run Set-ExecutionPolicy unrestricted. Quando richiesto, digitare Y.When prompted, type Y.

Screenshot di "Set-ExecutionPolicy unrestricted" in esecuzione nella finestra di Azure PowerShell

Eseguire Get-ExecutionPolicy per assicurarsi che il comando sia stato eseguito correttamente.Run Get-ExecutionPolicy to make sure that the command worked.

Screenshot di "Get-ExecutionPolicy" in esecuzione nella finestra di Azure PowerShell

Passare alla directory contenente gli script e l'applicazione di generazione.Go to the directory that has the scripts and generator application.

Screenshot di "cd .\TollApp\TollApp" in esecuzione nella finestra di Azure PowerShell

Digitare .\Setup.ps1 per configurare l'account Azure, creare e configurare tutte le risorse necessarie e quindi avviare la generazione di eventi.Type .\Setup.ps1 to set up your Azure account, create and configure all required resources, and start to generate events. Lo script seleziona in modo casuale un'area per creare le risorse.The script randomly picks up a region to create your resources. Per specificare un'area in modo esplicito, è possibile passare il parametro -location come nell'esempio seguente:To explicitly specify a region, you can pass the -location parameter as in the following example:

.\Setup.ps1 -location "Stati Uniti centrali".\Setup.ps1 -location “Central US”

Screenshot della pagina di accesso di Azure

Lo script apre quindi la pagina di accesso a Microsoft Azure.The script opens the Sign In page for Microsoft Azure. Immettere le credenziali dell'account.Enter your account credentials.

Nota

Se l'account ha accesso a più sottoscrizioni, viene richiesto di immettere il nome della sottoscrizione che si vuole usare per l'esercitazione.If your account has access to multiple subscriptions, you will be asked to enter the subscription name that you want to use for the tutorial.

L'esecuzione dello script può richiedere qualche minuto.The script can take several minutes to run. Al termine, l'output dovrebbe avere un aspetto simile allo screenshot seguente.After it finishes, the output should look like the following screenshot.

Screenshot dell'output dello script nella finestra di Azure PowerShell

Viene visualizzata anche un'altra finestra simile allo screenshot seguente.You will also see another window that's similar to the following screenshot. Questa applicazione invia eventi a Hub eventi di Azure, che è quindi necessario per eseguire l'esercitazione.This application is sending events to Azure Event Hubs, which is required to run the tutorial. Non arrestare l'applicazione o chiudere la finestra prima di aver terminato l'esercitazione.So, do not stop the application or close this window until you finish the tutorial.

Screenshot dell'invio dei dati dell'hub eventi

A questo punto le risorse dovrebbero essere visibili nel portale di Azure.You should be able to see your resources in Azure portal now. Passare a https://portal.azure.com e accedere con le credenziali del proprio account.Go to https://portal.azure.com, and sign in with your account credentials. Si noti che attualmente alcune funzionalità usano il portale classico.Note that currently some functionality utilizes the classic portal. Questi passaggi saranno indicati con chiarezza.These steps will be clearly indicated.

Hub eventi di AzureAzure Event Hubs

Nel portale di Azure fare clic su Altri servizi in basso nel riquadro di gestione a sinistra.In the Azure portal, click More services on the bottom of the left management pane. Digitare Hub eventi nel campo fornito e fare clic su Hub eventi.Type Event hubs in the field provided and click Event hubs. Verrà avviata una nuova finestra del browser per visualizzare l'area BUS DI SERVIZIO nel portale classico.This launches a new browser window to display the SERVICE BUS area in the classic portal. Qui è possibile esaminare l'Hub eventi creato dallo script Setup.ps1.Here you can see the Event Hub created by the Setup.ps1 script.

Bus di servizio

Fare clic su quello che inizia con tolldata.Click the one that starts with tolldata. Fare clic sulla scheda HUB EVENTI . Vengono visualizzati due Hub eventi denominati entry ed exit creati in questo spazio dei nomi.Click the EVENT HUBS tab. You will see two event hubs named entry and exit created in this namespace.

Scheda Hub eventi nel portale classico

Contenitore Archiviazione di AzureAzure Storage container

  1. Tornare alla scheda nel browser aperta al portale di Azure.Go back to the tab in your browser open to Azure portal. Fare clic su ARCHIVIAZIONE sulla sinistra del portale di Azure per visualizzare il contenitore di Archiviazione di Azure usato nell'esercitazione.Click STORAGE on the left side of the Azure portal to see the Azure Storage container that's used in the tutorial.

    Voce di menu Archiviazione

  2. Fare clic su quello che inizia con tolldata.Click the one that start with tolldata. Fare clic sulla scheda CONTENITORI per visualizzare il contenitore creato.Click the CONTAINERS tab to see the created container.

    Scheda Contenitori nel portale di Azure

  3. Fare clic sul contenitore tolldata per visualizzare il file JSON caricato con i dati di registrazione del veicolo.Click the tolldata container to see the uploaded JSON file that has vehicle registration data.

    Screenshot del file registration.json nel contenitore

Database SQL di AzureAzure SQL Database

  1. Tornare al portale di Azure nella prima scheda aperta nel browser.Go back to the Azure portal on the first tab that was opened in the browser. Fare clic su DATABASE SQL sulla sinistra del portale di Azure per visualizzare il database SQL che verrà usato nell'esercitazione e fare clic su tolldatadb.Click SQL DATABASES on the left side of the Azure portal to see the SQL database that will be used in the tutorial and click tolldatadb.

    Screenshot del database SQL creato

  2. Copiare il nome del server senza il numero di porta, ad esempionomeserver.database.windows.net.Copy the server name without the port number (servername.database.windows.net, for example). Screenshot del database SQL creatoScreenshot of the created SQL database db

Connettersi al database da Visual StudioConnect to the database from Visual Studio

Usare Visual Studio per accedere ai risultati di query nel database di output.Use Visual Studio to access query results in the output database.

Connettersi al database SQL di destinazione da Visual Studio:Connect to the SQL database (the destination) from Visual Studio:

  1. Aprire Visual Studio e fare clic su Strumenti > Connetti al database.Open Visual Studio, and then click Tools > Connect to Database.
  2. Se richiesto, selezionare Microsoft SQL Server come origine dati.If asked, click Microsoft SQL Server as a data source.

    Finestra di dialogo Modifica origine dati

  3. Nel campo Nome server incollare il nome copiato nella sezione precedente dal portale di Azure, ovvero nomeserver.database.windows.net.In the Server name field, paste the name that you copied in the previous section from the Azure portal (that is, servername.database.windows.net).
  4. Selezionare Usa autenticazione di SQL Server.Click Use SQL Server Authentication.
  5. Immettere tolladmin nel campo Nome utente e 123toll!Enter tolladmin in the User name field and 123toll! in the Password .in the Password field.
  6. Fare clic su Seleziona o immetti nome di database e selezionare il database TollDataDB.Click Select or enter a database name, and select TollDataDB as the database.

    Finestra di dialogo Aggiungi connessione

  7. Fare clic su OK.Click OK.
  8. Aprire Esplora server.Open Server Explorer.

    Esplora server

  9. Nel database TollDataDB sono presenti quattro tabelle.See four tables in the TollDataDB database.

    Tabelle nel database TollDataDB

Generatore di eventi: progetto di esempio TollAppEvent generator: TollApp sample project

Lo script di PowerShell avvia automaticamente l'invio di eventi tramite l'applicazione di esempio TollApp.The PowerShell script automatically starts to send events by using the TollApp sample application program. Non è necessario eseguire ulteriori passaggi.You don’t need to perform any additional steps.

Per informazioni dettagliate sull'implementazione, il codice sorgente dell'applicazione TollApp è disponibile in samples/TollAppin GitHub.However, if you are interested in implementation details, you can find the source code of the TollApp application in GitHub samples/TollApp.

Screenshot del codice di esempio visualizzato in Visual Studio

Creare un processo di Analisi di flusso.Create a Stream Analytics job

  1. Nel portale di Azure fare clic sul segno di addizione verde nell'angolo superiore sinistro della pagina per creare un nuovo processo di analisi di flusso.In the Azure portal, click the green plus sign in the top-left corner of the page to create a new Stream Analytics job. Selezionare Intelligence e analisi e quindi fare clic su Processo di Analisi di flusso.Select Intelligence + Analytics and then click Stream Analytics job.

    New button

  2. Fornire un nome di processo, convalidare la correttezza della sottoscrizione e quindi creare un nuovo gruppo di risorse nella stessa area di archiviazione di hub eventi; il valore predefinito è Stati Uniti centro-meridionali per lo script.Provide a job name, validate the subscription is correct and then create a new Resource group in the same region as the Event hub storage (default is South Central US for the script).
  3. Fare clic su Aggiungi al dashboard e quindi su CREA nella parte inferiore della pagina.Click Pin to dashboard and then CREATE at the bottom of the page.

    Opzione Crea processo di Analisi di flusso

Definire le origini di inputDefine input sources

  1. Verrà creato il processo e verrà aperta la pagina del processo.The job will create and open the job page. In alternativa, è possibile fare clic sul processo di analisi creato nel dashboard del portale.Or you can click the created analytics job on the portal dashboard.

  2. Fare clic sulla scheda INPUT per definire i dati di origine.Click the INPUTS tab to define the source data.

    Scheda Input

  3. Fare clic su AGGIUNGERE UN INPUT.Click ADD AN INPUT.

    Opzione Aggiungere un input

  4. Immettere EntryStream come ALIAS DI INPUT.Enter EntryStream as INPUT ALIAS.
  5. Il tipo di origine è flusso di datiSource Type is Data Stream
  6. L'origine è hub eventi.Source is Event hub.
  7. Spazio dei nomi del bus di servizio deve essere quello TollData nell'elenco a discesa.Service bus namespace should be the TollData one in the drop down.
  8. Nome hub eventi deve essere impostato su entry.Event hub name should be set to entry.
  9. Nome criterio hub eventi* è **RootManageSharedAccessKey (il valore predefinito).Event hub policy name*is **RootManageSharedAccessKey (the default value).
  10. Selezionare JSON per FORMATO DI SERIALIZZAZIONE EVENTI e UTF8 per CODIFICA.Select JSON for EVENT SERIALIZATION FORMAT and UTF8 for ENCODING.

    Le impostazioni vengono visualizzate in questo modo:Your settings will look like:

    Impostazioni dell'hub eventi

  11. Fare clic su Crea nella parte inferiore della pagina per terminare la procedura guidata.Click Create at the bottom of the page to finish the wizard.

    Dopo aver creato il flusso in ingresso, seguirà la stessa procedura per creare il flusso in uscita.Now that you've created the entry stream, you will follow the same steps to create the exit stream. Assicurarsi di immettere i valori come nello screenshot seguente.Be sure to enter values as on the following screenshot.

    Impostazioni per il flusso in uscita

    Sono stati definiti due flussi di input:You have defined two input streams:

    Flussi di input definiti nel portale di Azure

    Successivamente, si aggiungeranno dati di riferimento per il file BLOB contenente i dati di registrazione dell'automobile.Next, you will add reference data input for the blob file that contains car registration data.

  12. Fare clic su AGGIUNGI, quindi seguire lo stesso processo per gli input di flusso ma selezionare DATI DI RIFERIMENTO anziché Flusso dati e Alias di Input è Registrazione.Click ADD, and then follow the same process for the stream inputs but select REFERENCE DATA instead of Data Stream and the Input Alias is Registration.

  13. account di archiviazione che inizia con tolldata.storage account that starts with tolldata. Il nome del contenitore deve essere tolldata e il MODELLO PERCORSO deve essere registration.json.The container name should be tolldata, and the PATH PATTERN should be registration.json. Il nome file fa distinzione tra maiuscole e minuscole e deve contenere solo lettere minuscole.This file name is case sensitive and should be lowercase.

    Impostazioni dell'archivio BLOB

  14. Fare clic su Crea per completare la procedura guidata.Click Create to finish the wizard.

Ora sono definiti tutti gli input.Now all inputs are defined.

Definire l'outputDefine output

  1. Nel riquadro di panoramica Processo di Analisi di flusso selezionare OUTPUT.On the Stream Analytics job overview pane, select OUTPUTS.

    Scheda Output e opzione "Aggiungere un output"

  2. Fare clic su Aggiungi.Click Add.
  3. Impostare Alias di output su 'output' e quindi Sink su Database SQL.Set the Output alias to 'output' and then Sink to SQL database.
  4. Selezionare il nome del server usato nella sezione "Connettersi al database da Visual Studio" di questo articolo.Select the server name that was used in the “Connect to Database from Visual Studio” section of the article. Il nome database è TollDataDB.The database name is TollDataDB.
  5. Immettere tolladmin nel campo NOME UTENTE, 123toll!Enter tolladmin in the USERNAME field, 123toll! nel campo PASSWORD e TollDataRefJoin nel campo TABELLA.in the PASSWORD field, and TollDataRefJoin in the TABLE field.

    Impostazioni del database SQL

  6. Fare clic su Crea.Click Create.

Query di analisi di flusso di AzureAzure Stream analytics query

La scheda QUERY contiene una query SQL che trasforma i dati in ingresso.The QUERY tab contains a SQL query that transforms the incoming data.

Query aggiunta alla scheda Query

Questa esercitazione ha lo scopo di rispondere a diverse domande aziendali relative ai dati dei caselli e costruire query di Analisi di flusso da poter usare in Analisi di flusso di Azure per fornire risposte pertinenti.This tutorial attempts to answer several business questions that are related to toll data and constructs Stream Analytics queries that can be used in Azure Stream Analytics to provide a relevant answer.

Prima di iniziare il primo processo di Analisi di flusso, verranno esaminati alcuni scenari e la sintassi delle query.Before you start your first Stream Analytics job, let’s explore a few scenarios and the query syntax.

Introduzione al linguaggio di query di Analisi di flusso di AzureIntroduction to Azure Stream Analytics query language


Si supponga di dover contare il numero di veicoli che entra in un casello.Let’s say that you need to count the number of vehicles that enter a toll booth. Trattandosi di un flusso continuo di eventi, è necessario stabilire un "periodo di tempo".Because this is a continuous stream of events, you have to define a “period of time.” La domanda dovrà essere posta come segue: "Quanti veicoli entrano in un casello ogni tre minuti?".Let's modify the question to be “How many vehicles enter a toll booth every three minutes?”. Questo tipo di conteggio viene detto a cascata.This is commonly referred to as the tumbling count.

Si osservi la query di Analisi di flusso di Azure che risponde a questa domanda:Let’s look at the Azure Stream Analytics query that answers this question:

SELECT TollId, System.Timestamp AS WindowEnd, COUNT(*) AS Count
FROM EntryStream TIMESTAMP BY EntryTime
GROUP BY TUMBLINGWINDOW(minute, 3), TollId

Come si può notare, Analisi di flusso di Azure usa un linguaggio di query simile a SQL e aggiunge alcune estensioni per specificare gli aspetti temporali della query.As you can see, Azure Stream Analytics uses a query language that's like SQL and adds a few extensions to specify time-related aspects of the query.

Per maggiori dettagli, vedere gli articoli di MSDN sui costrutti relativi alla gestione del tempo e alla funzione di windowing usati nella query.For more details, read about Time Management and Windowing constructs used in the query from MSDN.

Eseguire i test delle query di analisi di flusso di AzureTesting Azure Stream Analytics queries

Dopo aver scritto la prima query di Analisi di flusso di Azure, occorre testarla con file di dati di esempio disponibili nella cartella TollApp nel percorso seguente:Now that you have written your first Azure Stream Analytics query, it is time to test it by using sample data files located in your TollApp folder in the following path:

..\TollApp\TollApp\Data..\TollApp\TollApp\Data

Questa cartella contiene i file seguenti:This folder contains the following files:

  • Entry.jsonEntry.json
  • Exit.jsonExit.json
  • registration.jsonRegistration.json

Domanda 1: Numero di veicoli che entrano in un caselloQuestion 1: Number of vehicles entering a toll booth

  1. Aprire il portale di Azure e passare al processo di Analisi di flusso di Azure creato.Open the Azure portal and go to your created Azure Stream Analytics job. Fare clic sulla scheda QUERY e incollare la query dalla sezione precedente.Click the QUERY tab and paste query from the previous section.

  2. Per convalidare la query sui dati di esempio, caricare i dati nell'input EntryStream facendo clic sul simbolo ... e selezionando Carica dati di esempio da file.To validate this query against sample data, upload the data into the EntryStream input by clicking the ... symbol and selecting Upload sample data from file.

    Screenshot del file Entry.json

  3. Nel riquadro visualizzato selezionare il file (Entry.json) nel computer locale e fare clic su OK.In the pane that appears select the file (Entry.json) on your local machine and click OK. L'icona di test diventerà luminosa e selezionabile.The Test icon will now illuminate and be clickable.

    Screenshot del file Entry.json

  4. Verificare che l'output della query sia come previsto:Validate that the output of the query is as expected:

    Risultati del test

Domanda 2: Report del tempo totale impiegato da ogni automobile per attraversare il caselloQuestion 2: Report total time for each car to pass through the toll booth

Il tempo medio necessario a un'automobile per passare attraverso il casello consente di valutare l'efficienza del processo e l'esperienza dell'utente.The average time that's required for a car to pass through the toll helps to assess the efficiency of the process and the customer experience.

Per trovare il tempo totale, è necessario creare un join tra il flusso EntryTime e il flusso ExitTime.To find the total time, you need to join the EntryTime stream with the ExitTime stream. Creare un join dei flussi nelle colonne TollId e LicencePlate.You will join the streams on TollId and LicencePlate columns. L'operatore JOIN richiede di specificare un margine temporale che descrive la differenza di tempo accettabile tra gli eventi uniti.The JOIN operator requires you to specify temporal leeway that describes the acceptable time difference between the joined events. La funzione DATEDIFF permette di specificare che la distanza tra un evento e l'altro non deve superare i 15 minuti.You will use DATEDIFF function to specify that events should be no more than 15 minutes from each other. La funzione DATEDIFF viene applicata anche agli orari di uscita e di ingresso per calcolare il tempo effettivamente trascorso dall'automobile nel casello.You will also apply the DATEDIFF function to exit and entry times to compute the actual time that a car spends in the toll station. Si noti il diverso uso di DATEDIFF in un'istruzione SELECT rispetto a una condizione JOIN.Note the difference of the use of DATEDIFF when it's used in a SELECT statement rather than a JOIN condition.

SELECT EntryStream.TollId, EntryStream.EntryTime, ExitStream.ExitTime, EntryStream.LicensePlate, DATEDIFF (minute , EntryStream.EntryTime, ExitStream.ExitTime) AS DurationInMinutes
FROM EntryStream TIMESTAMP BY EntryTime
JOIN ExitStream TIMESTAMP BY ExitTime
ON (EntryStream.TollId= ExitStream.TollId AND EntryStream.LicensePlate = ExitStream.LicensePlate)
AND DATEDIFF (minute, EntryStream, ExitStream ) BETWEEN 0 AND 15
  1. Per testare questa query, aggiornarla nella scheda QUERY per il processo.To test this query, update the query on the QUERY for the job. Aggiungere il file di test per ExitStream esattamente come è stato immesso in precedenza EntryStream.Add the test file for ExitStream just like EntryStream was entered above.

  2. Fare clic su Test.Click Test.

  3. Selezionare la casella di controllo per testare la query e visualizzare l'output:Select the check box to test the query and view the output:

    Output del test

Domanda 3: Report di tutti i veicoli commerciali con registrazione scadutaQuestion 3: Report all commercial vehicles with expired registration

Analisi di flusso di Azure può usare snapshot statici dei dati da unire ai flussi di dati temporali.Azure Stream Analytics can use static snapshots of data to join with temporal data streams. Per illustrare questa funzionalità, usare la domanda di esempio seguente.To demonstrate this capability, use the following sample question.

Se un veicolo commerciale è registrato presso l'azienda che gestisce il casello, lo può attraversare senza essere fermato per un controllo.If a commercial vehicle is registered with the toll company, it can pass through the toll booth without being stopped for inspection. Usare una tabella di ricerca relativa alla registrazione dei veicoli commerciali per identificare tutti i veicoli commerciali con registrazione scaduta.You will use Commercial Vehicle Registration lookup table to identify all commercial vehicles that have expired registrations.

SELECT EntryStream.EntryTime, EntryStream.LicensePlate, EntryStream.TollId, Registration.RegistrationId
FROM EntryStream TIMESTAMP BY EntryTime
JOIN Registration
ON EntryStream.LicensePlate = Registration.LicensePlate
WHERE Registration.Expired = '1'

Per testare una query usando dati di riferimento, è necessario definire un'origine di input per i dati di riferimento, come è già stato fatto.To test a query by using reference data, you need to define an input source for the reference data, which you have done already.

Per testare questa query, incollarla nella scheda QUERY, fare clic su Test e specificare le due origini di input e i dati di esempio di registrazione e fare clic su Test.To test this query, paste the query into the QUERY tab, click Test, and specify the two input sources and the registration sample data and click Test.

Output del test

Avviare il processo di analisi di flussoStart the Stream Analytics job

A questo punto è possibile terminare la configurazione e avviare il processo.Now it's time to finish the configuration and start the job. Salvare la query della domanda 3. Verrà generato un output corrispondente allo schema della tabella di output TollDataRefJoin.Save the query from Question 3, which will produce output that matches the schema of the TollDataRefJoin output table.

Passare al DASHBOARD del processo e fare clic su AVVIA.Go to the job DASHBOARD, and click START.

Screenshot del pulsante Avvia nel dashboard del processo

Nella finestra di dialogo visualizzata modificare l'ora di AVVIA OUTPUT in ORA PERSONALIZZATA.In the dialog box that opens, change the START OUTPUT time to CUSTOM TIME. Modificare l'ora impostandola su un'ora prima dell'ora corrente.Change the hour to one hour before the current time. In questo modo tutti gli eventi dall'hub eventi vengono elaborati da quando si è iniziato a generare eventi all'inizio dell'esercitazione.This change ensures that all events from the event hub are processed since you started to generate the events at the beginning of the tutorial. A questo punto fare clic sul pulsante Start per avviare il processo.Now click the Start button to start the job.

Selezione dell'ora personalizzata

L'avvio del processo può richiedere alcuni minuti.Starting the job can take a few minutes. Lo stato è disponibile nella pagina di livello principale di Analisi di flusso.You can see the status on the top-level page for Stream Analytics.

Screenshot dello stato del processo

Controllare i risultati in Visual StudioCheck results in Visual Studio

  1. Aprire Esplora server di Visual Studio e fare clic con il pulsante destro del mouse sulla tabella TollDataRefJoin .Open Visual Studio Server Explorer, and right-click the TollDataRefJoin table.
  2. Fare clic su Mostra dati tabella per visualizzare l'output del processo.Click Show Table Data to see the output of your job.

    Selezione di "Mostra dati tabella" in Esplora server

Scalabilità orizzontale dei processi di Analisi di flusso di AzureScale out Azure Stream Analytics jobs

Analisi di flusso di Azure è progettato per offrire elasticità di ridimensionamento e per gestire una grande quantità di dati.Azure Stream Analytics is designed to elastically scale so that it can handle a lot of data. La query di analisi di flusso di Azure può usare la clausola PARTITION BY per comunicare al sistema che questo passaggio aumenterà il numero di istanze. PartitionId è una colonna speciale aggiunta dal sistema e corrispondente all'ID partizione dell'input, ovvero l'hub eventi.The Azure Stream Analytics query can use a PARTITION BY clause to tell the system that this step will scale out. PartitionId is a special column that the system adds to match the partition ID of the input (event hub).

SELECT TollId, System.Timestamp AS WindowEnd, COUNT(*)AS Count
FROM EntryStream TIMESTAMP BY EntryTime PARTITION BY PartitionId
GROUP BY TUMBLINGWINDOW(minute,3), TollId, PartitionId
  1. Arrestare il processo corrente, aggiornare la query nella scheda QUERY e aprire Impostazioni nel dashboard del processo.Stop the current job, update the query in the QUERY tab, and open the Settings gear in the job dashboard. Fare clic su Scale.Click Scale.

    UNITÀ DI STREAMING definiscono la potenza di calcolo che il processo può ricevere.STREAMING UNITS define the amount of compute power that the job can receive.

  2. Modificare l'elenco a discesa da 1 a 6.Change the drop down from 1 from 6.

    Screenshot della selezione di sei unità di streaming

  3. Passare alla scheda OUTPUT e modificare il nome della tabella SQL in TollDataTumblingCountPartitioned.Go to the OUTPUTS tab and change the name of the SQL table to TollDataTumblingCountPartitioned.

Se si avvia il processo a questo punto, Analisi di flusso di Azure può distribuire il carico di lavoro tra più risorse di calcolo e ottenere una maggiore produttività.If you start the job now, Azure Stream Analytics can distribute work across more compute resources and achieve better throughput. Si noti che l'applicazione TollApp invia anche gli eventi partizionati in base a TollId.Please note that the TollApp application is also sending events partitioned by TollId.

MonitorareMonitor

L'area MONITORAGGIO contiene le statistiche relative al processo in esecuzione.The MONITOR area contains statistics about the running job. La configurazione iniziale è necessaria per usare l'account di archiviazione nella stessa area (nominare il casello come il resto di questo documento).First time configuration is needed to use the storage account in the same region (name toll like the rest of this document).

Screenshot di monitoraggio

È possibile accedere a Log attività anche dall'area Impostazioni del dashboard del processo.You can access Activity Logs from the job dashboard Settings area as well.

ConclusioneConclusion

Questa esercitazione ha presentato il servizio Analisi di flusso di Azure.This tutorial introduced you to the Azure Stream Analytics service. È stato illustrato come configurare input e output per il processo di Analisi di flusso.It demonstrated how to configure inputs and outputs for the Stream Analytics job. Usando lo scenario dei dati del casello, è stato possibile spiegare le tipologie più comuni di problemi che si verificano nello spazio dei dati in movimento e come risolverli con semplici query di tipo SQL in Analisi di flusso di Azure.Using the Toll Data scenario, the tutorial explained common types of problems that arise in the space of data in motion and how they can be solved with simple SQL-like queries in Azure Stream Analytics. Sono stati descritti i costrutti di estensioni SQL per l'uso di dati temporali.The tutorial described SQL extension constructs for working with temporal data. È stato illustrato come creare un join tra flussi di dati, come arricchire il flusso di dati con dati di riferimento statici e come aumentare il numero di istanze di una query per ottenere una maggiore produttività.It showed how to join data streams, how to enrich the data stream with static reference data, and how to scale out a query to achieve higher throughput.

Anche se questa esercitazione offre una buona introduzione, non può ritenersi completa.Although this tutorial provides a good introduction, it is not complete by any means. Per altri modelli di query che usano il linguaggio SAQL, vedere Esempi di query per modelli di uso comune di Analisi di flusso.You can find more query patterns using the SAQL language at Query examples for common Stream Analytics usage patterns. Per altre informazioni su Analisi di flusso di Azure, vedere la documentazione online .Refer to the online documentation to learn more about Azure Stream Analytics.

Eseguire la pulizia dell'account AzureClean up your Azure account

  1. Arrestare il processo di Analisi di flusso nel portale di Azure.Stop the Stream Analytics job in the Azure portal.

    Lo script Setup.ps1 crea due hub eventi e un database SQL.The Setup.ps1 script creates two event hubs and a SQL database. Le istruzioni seguenti permettono di eseguire la pulizia delle risorse al termine dell'esercitazione.The following instructions help you clean up resources at the end of the tutorial.

  2. In una finestra di PowerShell digitare .\Cleanup.ps1 per avviare lo script che elimina le risorse usate nell'esercitazione.In a PowerShell window, type .\Cleanup.ps1 to start the script that deletes resources used in the tutorial.

    Nota

    Le risorse vengono identificate in base al nome.Resources are identified by the name. Assicurarsi di controllare attentamente ogni elemento prima di confermarne la rimozione.Make sure you carefully review each item before confirming removal.