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

IntroduzioneIntroduction

In questa soluzione viene descritto come usare Analisi di flusso di Azure per ottenere informazioni approfondite in tempo reale dai dati.In this solution, you 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 soluzione, sarà possibile:After completing this solution, you are 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 soluzione, è necessario soddisfare i prerequisiti seguenti:You need the following prerequisites to complete this solution:

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 soluzione usa due flussi di dati.This solution 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. Gli eventi dei dati di uscita vengono trasmessi live in una coda di Hub eventi da un'app Web inclusa nell'app di esempio.The exit data events are live streamed into an Event Hub queue from a Web App included in the sample app.

ID caselloTollID Tempo ingressoEntryTime TargaLicensePlate StatoState AssicurarsiMake 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
AssicurarsiMake 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. Gli eventi dei dati di uscita vengono trasmessi live in una coda di Hub eventi da un'app Web inclusa nell'app di esempio.The exit data events are live streamed into an Event Hub queue from a Web App included in the sample app.

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 soluzione usa uno snapshot statico di un database di registrazione di veicoli commerciali.The solution uses a static snapshot of a commercial vehicle registration database. I dati vengono salvati come file JSON nell'archiviazione BLOB di Azure e sono inclusi nell'esempio.This data is saved as a JSON file into Azure blob storage, included in the sample.

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 la soluzione, è necessaria una sottoscrizione di Microsoft Azure.To complete this solution, you need a Microsoft Azure subscription. 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.

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.

Distribuire l'esempioDeploy the sample

Diverse risorse possono essere facilmente distribuite in un gruppo di risorse in pochi clic.There are several resources that can easily be deployed in a resource group together with a few clicks. La definizione della soluzione è ospitata nel repository GitHub all'indirizzo https://github.com/Azure/azure-stream-analytics/tree/master/Samples/TollApp.The solution definition is hosted in github repository at https://github.com/Azure/azure-stream-analytics/tree/master/Samples/TollApp.

Distribuire il modello TollApp nel portale di AzureDeploy the TollApp template in the Azure portal

  1. Per distribuire l'ambiente TollApp in Azure, usare questo collegamento per distribuire il modello TollApp di Azure.To deploy the TollApp environment to Azure, use this link to Deploy TollApp Azure Template.

  2. Se richiesto, accedere al portale di Azure.Sign in to the Azure portal if prompted.

  3. Scegliere la sottoscrizione usata per la fatturazione delle diverse risorse.Choose the subscription in which the various resources are billed.

  4. Specificare un nuovo gruppo di risorse con un nome univoco, ad esempio MyTollBooth.Specify a new resource group, with a unique name, for example MyTollBooth.

  5. Selezionare una località di Azure.Select an Azure location.

  6. Specificare un valore come numero di secondi in Intervallo.Specify an Interval as a number of seconds. Questo valore viene usato nell'app Web di esempio per specificare come inviare i dati in Hub eventi.This value is used in the sample web app, for how frequently to send data into Event Hub.

  7. Fare clic su Seleziona per accettare i termini e le condizioni.Check to agree to the terms and conditions.

  8. Selezionare Aggiungi al dashboard in modo da poter individuare facilmente le risorse in seguito.Select Pin to dashboard so that you can easily locate the resources later on.

  9. Selezionare Acquista per distribuire il modello di esempio.Select Purchase to deploy the sample template.

  10. Dopo alcuni istanti, viene visualizzata la notifica La distribuzione è riuscita, che conferma l'operazione.After a few moments, a notification appears to confirm the Deployment succeeded.

Esaminare le risorse di Analisi di flusso di Azure per TollAppReview the Azure Stream Analytics TollApp resources

  1. Accedere al Portale di AzureLog in to the Azure portal

  2. Individuare il gruppo di risorse denominato nella sezione precedente.Locate the Resource Group that you named in the previous section.

  3. Verificare che le risorse seguenti siano elencate nel gruppo di risorse:Verify that the following resources are listed in the resource group:

    • Un account Cosmos DBOne Cosmos DB Account
    • Un processo di Analisi di flusso di AzureOne Azure Stream Analytics Job
    • Un account di archiviazione di AzureOne Azure Storage Account
    • Un hub eventi di AzureOne Azure Event Hub
    • Due app WebTwo Web Apps

Esaminare il processo TollApp di esempioExamine the sample TollApp job

  1. Iniziando dal gruppo di risorse della sezione precedente, selezionare il processo di streaming di Analisi di flusso di Azure che inizia con il nome tollapp (il nome contiene caratteri casuali per scopi di univocità).Starting from the resource group in the previous section, select the Stream Analytics streaming job starting with the name tollapp (name contains random characters for uniqueness).

  2. Nella pagina Panoramica del processo notare la casella Query, in cui è visualizzata la sintassi di query.On the Overview page of the job, notice the Query box to view the query syntax.

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

    Parafrasando la finalità della query, è necessario conteggiare il numero di veicoli che entrano in un casello.To paraphrase the intent of the query, let’s say that you need to count the number of vehicles that enter a toll booth. Poiché un casello in autostrada ha un flusso continuo di veicoli in entrata, questi eventi di entrata sono analoghi a un flusso senza fine.Because a highway toll booth has a continuous stream of vehicles entering, those are entrance events are analogous to a stream that never stops. Per quantificare il flusso, è necessario definire un "periodo di tempo" in base al quale eseguire la misurazione.To quantify the stream, you have to define a "period of time" to measure over. Affinare ulteriormente la domanda, chiedendo: "Quanti veicoli entrano in un casello ogni tre minuti?"Let's refine the question further, to "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.

    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 i costrutti relativi alla gestione del tempo e al windowing usati nella query.For more details, read about Time Management and Windowing constructs used in the query.

  3. Esaminare gli input del processo di esempio TollApp.Examine the Inputs of the TollApp sample job. Nella query corrente viene usato solo l'input EntryStream.Only the EntryStream input is used in the current query.

    • L'input EntryStream è una connessione a Hub eventi che accoda i dati che rappresentano ogni momento in cui un'auto entra in un casello in autostrada.EntryStream input is an Event Hub connection that queues data representing each time a car enters a tollbooth on the highway. Un'app Web che fa parte dell'esempio sta creando gli eventi e i dati vengono accodati in Hub eventi.A web app that is part of the sample is creating the events, and that data is queued in this Event Hub. Notare che le query su questo input vengono eseguite nella clausola FROM della query di streaming.Note that this input is queried in the FROM clause of the streaming query.
    • L'input ExitStream è una connessione a Hub eventi che accoda i dati che rappresentano ogni momento in cui un'auto esce da un casello in autostrada.ExitStream input is an Event Hub connection that queues data representing each time a car exits a tollbooth on the highway. Questo input di streaming viene usato in variazioni successive della sintassi di query.This streaming input is used in later variations of the query syntax.
    • L'input Registration è una connessione all'archiviazione BLOB di Azure che punta a un file JSON di registrazione statico, usato per le ricerche in base alle necessità.Registration input is an Azure Blob storage connection, pointing to a static registration.json file, used for lookups as needed. Questo input di dati di riferimento viene usato in variazioni successive della sintassi di query.This reference data input is used in later variations of the query syntax.
  4. Esaminare gli output del processo di esempio TollApp.Examine the Outputs of the TollApp sample job.

    • L'output Cosmos DB è una raccolta di database Cosmos che riceve gli eventi sink di output.Cosmos DB output is a Cosmos database collection that receives the output sink events. Notare che questo output viene usato nella clausola INTO della query di streaming.Note that this output is used in INTO clause of the streaming query.

Avviare il processo di streaming TollAppStart the TollApp streaming job

Per avviare il processo di streaming, completare questi passaggi:Follow these steps to start the streaming job:

  1. Nella pagina Panoramica del processo selezionare Avvia.On the Overview page of the job, select Start.

  2. Nel riquadro Avvia processo selezionare Ora.On the Start job pane, select Now.

  3. Dopo alcuni istanti, quando il processo è in esecuzione, nella pagina Panoramica del processo di streaming visualizzare il grafico Monitoraggio.After a few moments, once the job is running, on the Overview page of the streaming job, view the Monitoring graph. Il grafico mostrerà diverse migliaia di eventi in input e decine di eventi di output.The graph should show several thousand input events, and tens of output events.

Esaminare i dati di output di Cosmos DBReview the CosmosDB output data

  1. Individuare il gruppo di risorse che contiene le risorse di TollApp.Locate the resource group that contains the TollApp resources.

  2. Selezionare l'account Azure Cosmos DB con il modello di denominazione tollapp-cosmos.Select the Azure Cosmos DB Account with the name pattern tollapp-cosmos.

  3. Selezionare l'intestazione Esplora dati per aprire la pagina Esplora dati.Select the Data Explorer heading to open the Data Explorer page.

  4. Espandere tollAppDatabase > tollAppCollection > Documenti.Expand the tollAppDatabase > tollAppCollection > Documents.

  5. Nell'elenco di ID diversi documenti vengono visualizzati solo quando è disponibile l'output.In the list of ids, several docs are shown once the output is available.

  6. Selezionare ogni ID per esaminare il documento JSON.Select each id to review the JSON document. Notare ogni ID casello, ogni momento di fine finestra e il numero di auto della finestra.Notice each tollid, windowend time, and the count of cars from that window.

  7. Dopo altri tre minuti, è disponibile un altro set di quattro documenti, un documento per ogni ID casello.After an additional three minutes, another set of four documents is available, one document per tollid.

Segnalare il tempo totale per ogni autoReport total time for each car

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, unire il flusso EntryTime al flusso ExitTime.To find the total time, join the EntryTime stream with the ExitTime stream. Unire i due flussi di input nelle colonne TollId e LicencePlate corrispondenti.Join the two input streams on the equal matching 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. Usare la funzione DATEDIFF per specificare che gli eventi non devono essere distanti più di 15 minuti uno dall'altro.Use the DATEDIFF function to specify that events should be no more than 15 minutes from each other. Applicare anche la funzione DATEDIFF ai tempi di uscita ed entrata per calcolare il tempo effettivo impiegato da un'auto nel casello.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
INTO CosmosDB
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

Per aggiornare la sintassi di query del processo di streaming TollApp:To update the TollApp streaming job query syntax:

  1. Nella pagina Panoramica del processo selezionare Arresta.On the Overview page of the job, select Stop.

  2. Attendere alcuni istanti la notifica di arresto del processo.Wait a few moments for the notification that the job has stopped.

  3. Nell'intestazione TOPOLOGIA PROCESSO selezionare Query < >Under the JOB TOPOLOGY heading, select < > Query

  4. Incollare la query SQL di streaming modificata.Paste the adjusted streaming SQL query.

  5. Selezionare Salva per salvare la query.Select Save to save the query. Confermare per salvare le modifiche.Confirm Yes to save the changes.

  6. Nella pagina Panoramica del processo selezionare Avvia.On the Overview page of the job, select Start.

  7. Nel riquadro Avvia processo selezionare Ora.On the Start job pane, select Now.

Esaminare il tempo totale nell'outputReview the total time in the output

Ripetere i passaggi nella sezione precedente per esaminare i dati di output di Cosmos DB dal processo di streaming.Repeat the steps in the preceding section to review the CosmosDB output data from the streaming job. Esaminare i documenti JSON più recenti.Review the latest JSON documents.

Ad esempio, questo documento mostra un'auto di esempio con una certa targa, l'ora di ingresso e l'ora di uscita e il campo della durata DATEDIFF calcolata in minuti che mostra la durata in casello come due minuti:For example, this document shows an example car with a certain license plate, the entrytime and exit time, and the DATEDIFF calculated durationinminutes field showing the toll booth duration as two minutes:

{
    "tollid": 4,
    "entrytime": "2018-04-05T06:51:39.0491173Z",
    "exittime": "2018-04-05T06:53:09.0491173Z",
    "licenseplate": "JVR 9425",
    "durationinminutes": 2,
    "id": "ff52eb25-d580-7566-2879-1f52bba6601e",
    "_rid": "+8E4AI1DZgBjAAAAAAAAAA==",
    "_self": "dbs/+8E4AA==/colls/+8E4AI1DZgA=/docs/+8E4AI1DZgBjAAAAAAAAAA==/",
    "_etag": "\"ad02f6b8-0000-0000-0000-5ac5c8330000\"",
    "_attachments": "attachments/",
    "_ts": 1522911283
}

Segnalare i veicoli con registrazione scadutaReport vehicles with expired registration

Analisi di flusso di Azure può usare snapshot statici dei dati di riferimento da unire ai flussi di dati temporali.Azure Stream Analytics can use static snapshots of reference 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. L'input Registration è un file JSON BLOB statico che elenca le scadenze delle targhe.The Registration input is a static blob json file that lists the expirations of license tags. Unendo la targa, i dati di riferimento vengono confrontati con ogni veicolo che attraversa il casello.By joining on the license plate, the reference data is compared to each vehicle passing through the toll both.

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 la tabella di ricerca relativa alla registrazione per identificare tutti i veicoli commerciali la cui registrazione è scaduta.Use the registration lookup table to identify all commercial vehicles that have expired registrations.

SELECT EntryStream.EntryTime, EntryStream.LicensePlate, EntryStream.TollId, Registration.RegistrationId
INTO CosmosDB
FROM EntryStream TIMESTAMP BY EntryTime
JOIN Registration
ON EntryStream.LicensePlate = Registration.LicensePlate
WHERE Registration.Expired = '1'
  1. Ripetere i passaggi indicati nella sezione precedente per aggiornare la sintassi di query del processo di streaming TollApp.Repeat the steps in the preceding section to update the TollApp streaming job query syntax.

  2. Ripetere i passaggi nella sezione precedente per esaminare i dati di output di Cosmos DB dal processo di streaming.Repeat the steps in the preceding section to review the CosmosDB output data from the streaming job.

Output di esempio:Example output:

    {
        "entrytime": "2018-04-05T08:01:28.0252168Z",
        "licenseplate": "GMT 3221",
        "tollid": 1,
        "registrationid": "763220582",
        "id": "47db0535-9716-4eb2-db58-de7886966cbf",
        "_rid": "y+F8AJ9QWACSAQAAAAAAAA==",
        "_self": "dbs/y+F8AA==/colls/y+F8AJ9QWAA=/docs/y+F8AJ9QWACSAQAAAAAAAA==/",
        "_etag": "\"88007d8d-0000-0000-0000-5ac5d7e20000\"",
        "_attachments": "attachments/",
        "_ts": 1522915298
    }

Scalare orizzontalmente il processoScale out the job

Analisi di flusso di Azure è progettato per offrire scalabilità elastica in modo da gestire volumi elevati di dati.Azure Stream Analytics is designed to elastically scale so that it can handle large volumes of data. La query di Analisi di flusso di Azure può usare la clausola PARTITION BY per indicare 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 scales out. PartitionId is a special column that the system adds to match the partition ID of the input (event hub).

Per scalare orizzontalmente la query nelle partizioni, modificare la sintassi di query in base al codice seguente:To scale out the query to partitions, edit the query syntax to the following code:

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

Per ridimensionare il processo di streaming in base a più unità di streaming:To scale up the streaming job to more streaming units:

  1. Fare clic su Arresta per arrestare il processo corrente.Stop the current job.

  2. Aggiornare la sintassi di query nella pagina Query < > e salvare le modifiche.Update the query syntax in the < > Query page, and save the changes.

  3. Nell'intestazione CONFIGURA nel processo di streaming selezionare Scala.Under the CONFIGURE heading on the streaming job, select Scale.

  4. Spostare il dispositivo di scorrimento Unità di streaming da 1 a 6.Slide the Streaming units slider from 1 to 6. Le unità di streaming definiscono la quantità di potenza di calcolo che il processo può ricevere.Streaming units define the amount of compute power that the job can receive. Selezionare Salva.Select Save.

  5. Fare clic su Avvia per avviare il processo di streaming per provare la scalabilità aggiuntiva.Start the streaming job to demonstrate the additional scale. Analisi di flusso di Azure distribuisce il lavoro tra più risorse di calcolo e ottiene velocità effettiva migliore, partizionando il lavoro tra risorse tramite la colonna designata nella clausola PARTITION BY.Azure Stream Analytics distributes work across more compute resources and achieve better throughput, partitioning the work across resources using the column designated in the PARTITION BY clause.

Monitorare il processoMonitor the job

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 (denominare il casello come nelle altre parti 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.

Pulire le risorse di TollAppClean up the TollApp resources

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

  2. Individuare il gruppo di risorse che contiene otto risorse correlate al modello TollApp.Locate the resource group that contains eight resources related to the TollApp template.

  3. Selezionare Elimina gruppo di risorse.Select Delete resource group. Digitare il nome del gruppo di attività per confermare l'eliminazione.Type the name of the resource group to confirm deletion.

ConclusioniConclusion

Questa soluzione ha presentato il servizio Analisi di flusso di Azure.This solution 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, la soluzione ha descritto tipi 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 solution 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. La soluzione ha descritto i costrutti di estensioni SQL per l'uso di dati temporali.The solution 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 soluzione offre una buona introduzione, non può ritenersi completa.Although this solution 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.