Share via


Avvio rapido: Creare un processo di Analisi di flusso di Azure con l'interfaccia della riga di comando di Azure

In questa guida introduttiva si userà l'interfaccia della riga di comando di Azure per definire un processo di Analisi di flusso che filtra i messaggi dei sensori in tempo reale con una lettura della temperatura maggiore di 27. Il processo di Analisi di flusso legge i dati da hub IoT, trasforma i dati e scrive i dati di output in un contenitore in un archivio BLOB. I dati di input usati in questa guida introduttiva sono generati da un simulatore online Raspberry Pi.

Operazioni preliminari

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Prerequisiti

  • Crea un gruppo di risorse. Tutte le risorse di Azure devono essere distribuite in un gruppo di risorse. I gruppi di risorse consentono di organizzare e gestire le risorse di Azure correlate.

    Per questo argomento di avvio rapido, creare un gruppo di risorse denominato streamanalyticsrg nell'area eastus con il comando az group create seguente:

    az group create --name streamanalyticsrg --location eastus
    

Preparare i dati di input

Prima di definire il processo di Analisi di flusso, è necessario preparare i dati che verranno usati come input del processo. I comandi dell'interfaccia della riga di comando di Azure seguenti preparano i dati di input richiesti dal processo.

  1. Creare un hub IoT con il comando az iot hub create. Questo esempio crea un hub IoT denominato MyASAIoTHub. Poiché hub IoT nomi devono essere univoci a livello globale, potrebbe essere necessario modificare il nome se è già stato preso. Impostare lo SKU su F1 per usare il livello gratuito, se disponibile con la sottoscrizione. In caso contrario, scegliere il successivo livello più basso.

    iotHubName=MyASAIoTHub
    az iot hub create --name $iotHubName --resource-group streamanalyticsrg --sku S1
    

    Dopo aver creato l'hub IoT, ottenere il hub IoT stringa di connessione usando il comando az iot hub connection-string show. Copiare l'intero stringa di connessione e salvarlo. Viene usato durante l'aggiunta del hub IoT come input al processo di Analisi di flusso.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. Aggiungere un dispositivo all'hub IoT usando il comando az iothub device-identity create. Questo esempio crea un dispositivo denominato MyASAIoTDevice.

    az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
    
  3. Ottenere il dispositivo stringa di connessione usando il comando az iot hub device-identity connection-string show. Copiare l'intera stringa di connessione e salvarla per quando si creerà il simulatore Raspberry Pi.

    az iot hub device-identity connection-string show --hub-name $iotHubName --device-id "MyASAIoTDevice" --output table
    

    Esempio di output:

    HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
    

Creare un account di archiviazione BLOB

I comandi dell'interfaccia della riga di comando di Azure seguenti creano un account di archiviazione BLOB usato per l'output del processo.

  1. Creare un account di archiviazione per utilizzo generico con il comando az storage account create. L'account di archiviazione per utilizzo generico può essere usato per tutti e quattro i servizi: BLOB, file, tabelle e code.

    storageAccountName="asatutorialstorage$RANDOM"
    az storage account create \
        --name $storageAccountName \
        --resource-group streamanalyticsrg \
        --location eastus \
        --sku Standard_ZRS \
        --encryption-services blob
    
  2. Per ottenere la chiave dell'account di archiviazione, eseguire il comandoaz storage account keys list.

    key=$(az storage account keys list -g streamanalyticsrg -n $storageAccountName --query "[0].value" -o tsv)
    echo $key
    

    Importante

    Prendere nota della chiave di accesso per l'account di archiviazione di Azure. Questa chiave verrà usata più avanti in questa guida introduttiva.

  3. Creare un contenitore denominato state per l'archiviazione di BLOB con il comando az storage container create . La chiave dell'account di archiviazione consente autorizzare l'operazione di creazione del contenitore. Per altre informazioni sull'autorizzazione delle operazioni sui dati con l'interfaccia della riga di comando di Azure, vedere Autorizzare l'accesso ai dati di BLOB o code con l'interfaccia della riga di comando di Azure.

    az storage container create \
        --account-name $storageAccountName \
        --name state \
        --account-key $key \
        --auth-mode key
    

Creare un processo di Analisi di flusso.

Creare un processo di Analisi di flusso con il comando az stream-analytics job create.

az stream-analytics job create \
    --job-name "streamanalyticsjob" \
    --resource-group "streamanalyticsrg" \
    --location "eastus" \
    --output-error-policy "Drop" \
    --out-of-order-policy "Drop" \
    --order-max-delay 5 \
    --arrival-max-delay 16 \
    --data-locale "en-US"

Configurare l'input per il processo

Aggiungere un input al processo tramite il cmdlet az stream-analytics input. Questo cmdlet accetta il nome del processo, il nome dell'input del processo, il nome del gruppo di risorse e le proprietà di input in formato JSON come parametri. In questo esempio come input verrà creato un hub IoT.

Importante

  • Sostituire IOT HUB ACCESS KEY con il valore di Chiave di accesso condiviso nell'hub IOT stringa di connessione salvato. Ad esempio, se l'hub IOT stringa di connessione è : HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=, il valore della chiave di accesso condiviso è xxxxxxxxxxxxxx=. Quando si sostituisce il valore, assicurarsi di non eliminare \ (carattere di escape) per " (virgolette doppie).
  • Aggiornare il valore di iotHubNamespace nel comando seguente se è stato usato un nome diverso da MyASAIoTHub. Eseguire echo $iotHubName per visualizzare il nome del hub IoT.
az stream-analytics input create \
    --properties "{\"type\":\"Stream\",\"datasource\":{\"type\":\"Microsoft.Devices/IotHubs\",\"properties\":{\"consumerGroupName\":\"\$Default\",\"endpoint\":\"messages/events\",\"iotHubNamespace\":\"MyASAIoTHub\",\"sharedAccessPolicyKey\":\"IOT HUB ACCESS KEY\",\"sharedAccessPolicyName\":\"iothubowner\"}},\"serialization\":{\"type\":\"Json\",\"encoding\":\"UTF8\"}}" \
    --input-name "asaiotinput" \
    --job-name "streamanalyticsjob" \
    --resource-group "streamanalyticsrg"

Configurare l'output per il processo

Aggiungere un output al processo tramite il cmdlet az stream-analytics output create. Questo cmdlet accetta il nome del processo, il nome dell'output del processo, il nome del gruppo di risorse, l'origine dati in formato JSON e il tipo di serializzazione come parametri.

Importante

Sostituire STORAGEACCOUNTNAME> con il nome dell'account Archiviazione di Azure e STORAGEACCESSKEY> con la chiave di accesso per l'account di archiviazione. Se questi valori non sono stati annotato, eseguire i comandi seguenti per ottenerli: echo $storageAccountName e echo $key. Quando si sostituiscono i valori, assicurarsi di non eliminare \ (carattere di escape) per " (virgolette doppie).

az stream-analytics output create \
    --job-name streamanalyticsjob \
    --datasource "{\"type\":\"Microsoft.Storage/Blob\",\"properties\":{\"container\":\"state\",\"dateFormat\":\"yyyy/MM/dd\",\"pathPattern\":\"{date}/{time}\",\"storageAccounts\":[{\"accountKey\":\"STORAGEACCESSKEY\",\"accountName\":\"STORAGEACCOUNTNAME\"}],\"timeFormat\":\"HH\"}}" \
    --serialization "{\"type\":\"Json\",\"properties\":{\"format\":\"Array\",\"encoding\":\"UTF8\"}}" \
    --output-name asabloboutput \
    --resource-group streamanalyticsrg

Definire la query di trasformazione

Aggiungere una trasformazione al processo tramite il cmdlet az stream-analytics transformation create.

az stream-analytics transformation create \
    --resource-group streamanalyticsrg \
    --job-name streamanalyticsjob \
    --name Transformation \
    --streaming-units "6" \
    --saql "SELECT * INTO asabloboutput FROM asaiotinput WHERE Temperature > 27"

Eseguire il simulatore IoT

  1. Aprire il simulatore online Azure IoT Raspberry Pi.

  2. Sostituire il segnaposto nella riga 15 con l'intero hub IoT di Azure Device stringa di connessione (non hub IoT stringa di connessione) salvato all'inizio della guida introduttiva.

  3. Selezionare Esegui. L'output mostra i dati del sensore e i messaggi inviati all'hub IoT.

    Raspberry Pi Azure IoT Online Simulator

Avviare il processo di Analisi di flusso e controllare l'output

Avviare il processo usando il cmdlet az stream-analytics job start. Questo cmdlet accetta il nome del processo, il nome del gruppo di risorse, la modalità di avvio dell'output e l'ora di inizio come parametri. OutputStartMode accetta i valori JobStartTime, CustomTime o LastOutputEventTime.

Dopo aver eseguito il cmdlet seguente, verrà restituito True come output se il processo viene avviato.

az stream-analytics job start \
    --resource-group streamanalyticsrg \
    --name streamanalyticsjob \
    --output-start-mode JobStartTime

Assegnare alcuni minuti e quindi verificare che nel contenitore BLOB venga creato state un file di output.

Screenshot showing the output file in the State blob container.

Scaricare e aprire il file per visualizzare diverse voci simili a quella seguente:

{
    "messageId": 229,
    "deviceId": "Raspberry Pi Web Client",
    "temperature": 31.85214010589595,
    "humidity": 60.278830289656284,
    "EventProcessedUtcTime": "2023-02-28T22:06:33.5567789Z",
    "PartitionId": 3,
    "EventEnqueuedUtcTime": "2023-02-28T22:05:49.6520000Z",
    "IoTHub": {
        "MessageId": null,
        "CorrelationId": null,
        "ConnectionDeviceId": "MyASAIoTDevice",
        "ConnectionDeviceGenerationId": "638132150746523845",
        "EnqueuedTime": "2023-02-28T22:05:49.6520000Z",
        "StreamId": null
    }
}

Pulire le risorse

Eliminare il gruppo di risorse, che eliminerà tutte le risorse nel gruppo di risorse, tra cui processo di Analisi di flusso, hub IoT e account Archiviazione di Azure.

az group delete \
    --name streamanalyticsrg \
    --no-wait

Passaggi successivi

In questa guida di avvio rapido è stato distribuito un semplice processo di Analisi di flusso con l'interfaccia della riga di comando di Azure. È anche possibile distribuire processi di Analisi di flusso usando il portale di Azure e Visual Studio.

Per informazioni sulla configurazione di altre origini di input e sull'esecuzione del rilevamento in tempo reale, continuare con l'articolo seguente: