Introduzione all'analisi di flusso di Azure per elaborare dati dai dispositivi IoTGet started with Azure Stream Analytics to process data from IoT devices

Questa esercitazione illustra come creare la logica di elaborazione del flusso per raccogliere dati da dispositivi IoT (Internet delle cose).In this tutorial, you will learn how to create stream-processing logic to gather data from Internet of Things (IoT) devices. Verrà usato un caso d'uso reale di IoT per dimostrare come compilare una soluzione in modo rapido ed economico.We will use a real-world, Internet of Things (IoT) use case to demonstrate how to build your solution quickly and economically.

PrerequisitiPrerequisites

ScenarioScenario

Contoso, una società che opera nel settore dell'automazione industriale, ha completamente automatizzato il processo di produzione.Contoso, which is a company in the industrial automation space, has completely automated its manufacturing process. I macchinari dello stabilimento hanno sensori in grado di emettere flussi di dati in tempo reale.The machinery in this plant has sensors that are capable of emitting streams of data in real time. In questo scenario, un responsabile del reparto produzione vuole avere informazioni in tempo reale dai dati del sensore per individuare modelli ricorrenti e intraprendere azioni correttive.In this scenario, a production floor manager wants to have real-time insights from the sensor data to look for patterns and take actions on them. Verrà usato il linguaggio di query di Analisi di flusso (SAQL) sui dati dei sensori per trovare modelli interessanti nel flusso dei dati in ingresso.We will use the Stream Analytics Query Language (SAQL) over the sensor data to find interesting patterns from the incoming stream of data.

In questo caso, i dati vengono generati da un dispositivo SensorTag di Texas Instruments.Here data is being generated from a Texas Instruments sensor tag device.

SensorTag di Texas Instruments

Il payload dei dati è in formato JSON ed è simile al seguente:The payload of the data is in JSON format and looks like the following:

{
    "time": "2016-01-26T20:47:53.0000000",  
    "dspl": "sensorE",  
    "temp": 123,  
    "hmdt": 34  
}  

In uno scenario reale possono essere presenti centinaia di questi sensori che generano eventi come un flusso.In a real-world scenario, you could have hundreds of these sensors generating events as a stream. Idealmente, un dispositivo gateway dovrebbe eseguire codice per effettuare il push degli eventi a hub eventi di Azure o hub IoT di Azure.Ideally, a gateway device would run code to push these events to Azure Event Hubs or Azure IoT Hubs. Il processo di analisi di flusso ha lo scopo di inserire questi eventi dagli hub eventi ed eseguire query di analisi in tempo reale a fronte dei flussi.Your Stream Analytics job would ingest these events from Event Hubs and run real-time analytics queries against the streams. È quindi possibile inviare i risultati a uno degli output supportati.Then, you could send the results to one of the supported outputs.

Per semplicità d'uso, questa guida introduttiva include un file di dati di esempio acquisito da dispositivi SensorTag reali.For ease of use, this getting started guide provides a sample data file, which was captured from real sensor tag devices. È possibile eseguire query sui dati di esempio e visualizzare i risultati.You can run queries on the sample data and see results. Nelle esercitazioni successive, verrà illustrato come connettere il processo agli input e agli output e distribuirli al servizio di Azure.In subsequent tutorials, you will learn how to connect your job to inputs and outputs and deploy them to the Azure service.

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

  1. Nel portale di Azure, fare clic sul segno più e quindi digitare STREAM ANALYTICS nella finestra di testo a destra.In the Azure portal, click the plus sign and then type STREAM ANALYTICS in the text window to the right. Selezionare quindi Stream Analytics job nell'elenco dei risultati.Then select Stream Analytics job in the results list.

    Creare un nuovo processo di Analisi di flusso

  2. Immettere un nome univoco per il processo e verificare che la sottoscrizione sia quella corretta per il processo.Enter a unique job name and verify the subscription is the correct one for your job. Creare quindi un nuovo gruppo di risorse o selezionarne uno esistente.Then either create a new resource group or select an existing one on your subscription.
  3. Selezionare una località per il processo.Then select a location for your job. Per accelerare l'elaborazione e ridurre i costi del trasferimento dati, è consigliabile selezionare la stessa località del gruppo di risorse e dell'account di archiviazione previsto.For speed of processing and reduction of cost in data transfer selecting the same location as the resource group and intended storage account is recommended.

    Informazioni sulla creazione di un nuovo processo di Analisi di flusso

    Nota

    È consigliabile creare un solo account di archiviazione di questo tipo per ogni area.You should create this storage account only once per region. Questa risorsa di archiviazione verrà condivisa tra tutti i processi di Analisi di flusso creati in tale area.This storage will be shared across all Stream Analytics jobs that are created in that region.

  4. Nel dashboard selezionare la casella in cui inserire il processo e quindi fare clic su CREA.Check the box to place your job on your dashboard and then click CREATE.

    creazione del processo in corso

  5. Dovrebbe essere visualizzato un messaggio di tipo 'Distribuzione avviata...' nella parte superiore destra della finestra del browser.You should see a 'Deployment started...' displayed in the top right of your browser window. Viene quindi visualizzato il messaggio che indica il completamento dell'attività.Soon it will change to a completed window as shown below.

    creazione del processo in corso

Creare una query di analisi di flusso di AzureCreate an Azure Stream Analytics query

Dopo aver creato il processo, aprirlo ed eseguire una query.After your job is created it's time to open it and build a query. Per accedere al processo è sufficiente fare clic sul riquadro relativo.You can easily access your job by clicking the tile for it.

Riquadro del processo

Nel riquadro Job Topology (Topologia processo) fare clic sulla casella QUERY per aprire l'editor di query.In the Job Topology pane click the QUERY box to go to the Query Editor. L'editor di query consente di inserire una query T-SQL che esegue la trasformazione dei dati di eventi in ingresso.The QUERY editor allows you to enter a T-SQL query that performs the transformation over the incoming event data.

Riquadro della query

Query: Archiviazione dei dati non elaboratiQuery: Archive your raw data

La forma più semplice di query è una query pass-through che archivia tutti i dati di input nell'output designato.The simplest form of query is a pass-through query that archives all input data to its designated output. Scaricare il file di dati di esempio da GitHub a un percorso nel proprio computer.Download the sample data file from GitHub to a location on your computer.

  1. Incollare la query dal file PassThrough.txt.Paste the query from the PassThrough.txt file.

    Test del flusso di input

  2. Fare clic sui tre puntini accanto all'input e selezionare la casella Upload sample data from file (Caricare i dati di esempio dal file).Click the three dots next to your input and select Upload sample data from file box.

    Test del flusso di input

  3. Nel riquadro che verrà visualizzato a destra, selezionare il file di dati HelloWorldASA-InputStream.json dalla posizione di download e fare clic su OK nella parte inferiore del riquadro.A pane opens on the right as a result, in it select the HelloWorldASA-InputStream.json data file from your downloaded location and click OK at the bottom of the pane.

    Test del flusso di input

  4. Per elaborare la query di test a fronte del set di dati di esempio, fare clic sull'ingranaggio Test nella parte superiore sinistra della finestra.Then click the Test gear in the top left area of the window and process your test query against the sample dataset. Al completamento del processo, sotto alla query verrà visualizzata una finestra contenente i risultati dell'elaborazione.A results window will open below your query as the processing is complete.

    Risultati del test

Query: Filtro dei dati in base a una condizioneQuery: Filter the data based on a condition

È possibile filtrare i risultati in base a una condizione.Let’s try to filter the results based on a condition. Ai fini di questa esercitazione, si vogliono visualizzare solo i risultati relativi agli eventi provenienti da "sensorA".We would like to show results for only those events that come from “sensorA.” La query si trova nel file Filtering.txt.The query is in the Filtering.txt file.

Filtro di un flusso di dati

Si noti che la query, con distinzione tra maiuscole e minuscole, confronta un valore di stringa.Note that the case-sensitive query compares a string value. Fare di nuovo clic sull'icona a forma di ingranaggio Test per eseguire la query.Click the Test gear again to execute the query. La query restituirà 389 righe su 1860 eventi.The query should return 389 rows out of 1860 events.

Secondo risultato di output del test di query

Query: Avviso per attivare un flusso di lavoro aziendaleQuery: Alert to trigger a business workflow

La query verrà ora resa più dettagliata.Let's make our query more detailed. Per ogni tipo di sensore, si vuole monitorare la temperatura media in una finestra di 30 secondi e visualizzare i risultati solo se tale temperatura supera i 100 gradi.For every type of sensor, we want to monitor average temperature per 30-second window and display results only if the average temperature is above 100 degrees. A tale scopo, scrivere la query seguente e quindi fare clic su Test per visualizzare i risultati.We will write the following query and then click Test to see the results. La query si trova nel file ThresholdAlerting.txt.The query is in the ThresholdAlerting.txt file.

Query di filtro per 30 secondi

I risultati visualizzati conterranno ora solo 245 righe e i nomi dei sensori in cui temperatura media è superiore a 100.You should now see results that contain only 245 rows and names of sensors where the average temperate is greater than 100. La query raggruppa il flusso di eventi in base al nome del sensore (dspl) su una finestra a cascata di 30 secondi.This query groups the stream of events by dspl, which is the sensor name, over a Tumbling Window of 30 seconds. Le query temporali devono specificare come si vuole definire l'avanzamento del tempo.Temporal queries must state how we want time to progress. Usando la clausola TIMESTAMP BY è stata specificata la colonna OUTPUTTIME per associare l'ora a tutti i calcoli temporali.By using the TIMESTAMP BY clause, we have specified the OUTPUTTIME column to associate times with all temporal calculations. Per informazioni dettagliate, vedere gli articoli di MSDN relativi alla gestione del tempo e alle funzioni finestra.For detailed information, read the MSDN articles about Time Management and Windowing functions.

Query: rilevare l'assenza di eventiQuery: Detect absence of events

La scrittura di una query per trovare una mancanza di eventi di inputHow can we write a query to find a lack of input events? consente di determinare l'ultima volta in cui un sensore ha inviato dati e non ha quindi inviato alcun evento per i 5 secondi successivi.Let’s find the last time that a sensor sent data and then did not send events for the next 5 seconds. La query si trova nel file AbsenseOfEvent.txt.The query is in the AbsenseOfEvent.txt file.

Rilevare l'assenza di eventi

In questo caso viene usato un LEFT OUTER JOIN per lo stesso flusso di dati (self-join).Here we use a LEFT OUTER join to the same data stream (self-join). In caso di INNER JOIN viene restituito un risultato solo quando viene trovata una corrispondenza.For an INNER join, a result is returned only when a match is found. In caso di LEFT OUTER JOIN, se un evento del lato sinistro del join è senza corrispondenza viene restituita una riga con valore NULL per tutte le colonne del lato destro.For a LEFT OUTER join, if an event from the left side of the join is unmatched, a row that has NULL for all the columns of the right side is returned. Questa tecnica è molto utile per trovare un'assenza di eventi.This technique is very useful to find an absence of events. Per altre informazioni sui JOIN, vedere la documentazione MSDN.See our MSDN documentation for more information about JOIN.

ConclusioneConclusion

Lo scopo di questa esercitazione è illustrare come scrivere diverse query nel linguaggio di query di Analisi di flusso e visualizzare i risultati nel browser.The purpose of this tutorial is to demonstrate how to write different Stream Analytics Query Language queries and see results in the browser. Si tratta, tuttavia, di informazioni di base,However, this is just getting started. perché Analisi di flusso consente di eseguire molte altre attività.You can do so much more with Stream Analytics. Analisi di flusso supporta un'ampia gamma di input e output e può anche usare le funzioni di Azure Machine Learning per offrire uno strumento efficace per l'analisi dei flussi di dati.Stream Analytics supports a variety of inputs and outputs and can even use functions in Azure Machine Learning to make it a robust tool for analyzing data streams. Per iniziare a esplorare Analisi di flusso, è possibile usare la mappa di apprendimento.You can start to explore more about Stream Analytics by using our learning map. Per altre informazioni su come scrivere le query, vedere l'articolo sui modelli di query comuni.For more information about how to write queries, read the article about common query patterns.