Condividi tramite


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

Prima di iniziare

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

Prerequisiti

  • Creare 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 questa guida introduttiva, utilizzare il seguente comando az group create per creare un gruppo di risorse denominato streamanalyticsrg nella località eastus:

    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 seguenti comandi Azure CLI preparano i dati di input richiesti dal lavoro.

  1. Creare un hub IoT usando il comando az iot hub create . Questo esempio crea un hub IoT denominato MyASAIoTHub. Poiché i nomi dell'hub IoT 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 la stringa di connessione dell'hub IoT usando il comando az iot hub connection-string show. Copiare l'intera stringa di connessione e salvarla. Verrà usata durante l'aggiunta dell'hub IoT come input del 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. Usa il comando az iot hub device-identity connection-string show per ottenere la stringa di connessione del dispositivo. 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 seguenti comandi dell'interfaccia della riga di comando di Azure creano un account di archiviazione BLOB utilizzato 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. Ottenere la chiave per l'account di archiviazione eseguendo il comando az 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 in seguito in questa procedura di avvio rapido.

  3. Creare un contenitore denominato state per l'archiviazione di BLOB con il comando az storage container create . Usi la chiave dell'account di archiviazione per autorizzare l'operazione per creare il 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 si creerà un hub IoT come input.

Importante

  • Sostituire IOT HUB ACCESS KEY con il valore di Chiave di accesso condiviso nella stringa di connessione dell'hub IOT salvata. Ad esempio, se la stringa di connessione dell'hub IOT è : 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 dell'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

Aggiungi un output al processo di lavoro usando 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 di 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

Aggiungi una trasformazione alla tua attività usando 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'intera stringa di connessione del dispositivo dell'hub IoT di Azure (non la stringa di connessione dell'hub IoT) salvata all'inizio della guida introduttiva.

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

    Simulatore online Azure IoT Raspberry Pi

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

Lascia passare qualche minuto e quindi verifica che venga creato un file di output nel contenitore blob state.

Screenshot che mostra il file di output nel contenitore BLOB Stato.

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, incluso il processo di Analisi di flusso, l'hub IoT e l'account di archiviazione di Azure.

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

Passaggi successivi

In questo quickstart, hai distribuito un semplice processo di analisi dei flussi utilizzando Azure CLI. È 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: