Share via


Quickstart: Een Azure Stream Analytics-taak maken met behulp van de Azure CLI

In deze quickstart gebruikt u Azure CLI om een Stream Analytics-taak te definiëren waarmee realtime sensorberichten worden gefilterd met een temperatuur die groter is dan 27. De Stream Analytics-taak leest gegevens uit IoT Hub, transformeert de gegevens en schrijft de uitvoergegevens naar een container in een blobopslag. De invoergegevens in deze quickstart worden gegenereerd via een Raspberry Pi Online Simulator.

Voordat u begint

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

  • Maak een resourcegroep. Alle Azure-resources moeten worden geïmplementeerd in een resourcegroep. Met resourcegroepen kunt u gerelateerde Azure-resources ordenen en beheren.

    Maak voor deze quickstart een resourcegroep met de naam streamanalyticsrg op de locatie eastus met behulp van de volgende az group create-opdracht:

    az group create --name streamanalyticsrg --location eastus
    

De invoergegevens voorbereiden

Voordat u de Stream Analytics-taak definieert, moet u de gegevens voorbereiden die worden gebruikt voor de invoer van de taak. Met de volgende Azure CLI-opdrachten worden de invoergegevens voorbereid die vereist zijn voor de taak.

  1. Maak een IoT Hub met de opdracht az iot hub create. In dit voorbeeld wordt een IoT Hub met de naam MyASAIoTHub gemaakt. Omdat IoT Hub-namen globaal uniek moeten zijn, moet u mogelijk de naam wijzigen als deze al wordt gebruikt. Stel de SKU in op F1 om de gratis laag te gebruiken als deze beschikbaar is voor uw abonnement. Als dat niet het geval is, kiest u de eerstvolgende lagere categorie.

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

    Zodra de IoT-hub is gemaakt, haalt u de IoT Hub-verbindingsreeks op met behulp van de opdracht az iot hub connection-string show. Kopieer de hele verbindingsreeks en sla deze op. U gebruikt deze functie tijdens het toevoegen van de IoT Hub als invoer aan uw Stream Analytics-taak.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. Voeg een apparaat toe aan IoT Hub met behulp van de opdracht az iothub-device identity create. In dit voorbeeld maakt u een apparaat met de naam MyASAIoTDevice.

    az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
    
  3. Haal het apparaat op verbindingsreeks met behulp van de opdracht az iot hub device-identity connection-string show. Kopieer de volledige verbindingsreeks en bewaar deze totdat u de Raspberry Pi-simulator gaat maken.

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

    Voorbeeld van uitvoer:

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

Een blob-opslagaccount maken

Met de volgende Azure CLI-opdrachten maakt u een Blob Storage-account dat wordt gebruikt voor taakuitvoer.

  1. Maak een algemeen opslagaccount met de opdracht az storage account create. Het algemeen opslagaccount kan voor alle vier de services worden gebruikt: blobs, bestanden, tabellen en wachtrijen.

    storageAccountName="asatutorialstorage$RANDOM"
    az storage account create \
        --name $storageAccountName \
        --resource-group streamanalyticsrg \
        --location eastus \
        --sku Standard_ZRS \
        --encryption-services blob
    
  2. Haal de sleutel voor uw opslagaccount op door de opdracht az storage account keys list uit te voeren.

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

    Belangrijk

    Noteer de toegangssleutel voor het Azure-opslagaccount. U gebruikt deze sleutel verderop in deze quickstart.

  3. Maak een container met de naam state voor het opslaan van blobs met de opdracht az storage container create . U gebruikt de sleutel voor het opslagaccount om de bewerking voor het maken van de container te autoriseren. Zie Toegang verlenen tot blob- of wachtrijgegevens met Azure CLI voor meer informatie over het autoriseren van gegevensbewerkingen met Azure CLI.

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

Een Stream Analytics-taak maken

Maak een Stream Analytics-taak met de opdracht 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"

Invoer voor de taak configureren

Voeg invoer aan uw taak toe met behulp van de cmdlet az stream-analytics input. Deze cmdlet gebruikt de taaknaam, taakinvoernaam, resourcegroepnaam en de invoereigenschappen in JSON-indeling als parameters. In dit voorbeeld maakt u een IoT Hub als invoer.

Belangrijk

  • Vervang IOT HUB ACCESS KEY door de waarde van de Gedeelde toegangssleutel in de IOT Hub verbindingsreeks u hebt opgeslagen. Als de IOT-hub bijvoorbeeld verbindingsreeks is: HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=, is xxxxxxxxxxxxxx=de waarde van de gedeelde toegangssleutel . Zorg er tijdens het vervangen van de waarde voor dat u geen teken verwijdert \ (escape) voor " (dubbele aanhalingstekens).
  • Werk de waarde van iotHubNamespace in de volgende opdracht bij als u een andere naam dan MyASAIoTHub. Voer deze opdracht uit echo $iotHubName om de naam van uw IoT Hub weer te geven.
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"

Uitvoer voor de taak configureren

Voeg uitvoer aan uw taak toe met behulp van de cmdlet az stream-analytics output create. Deze cmdlet gebruikt de taaknaam, taakuitvoernaam, resourcegroepnaam, gegevensbron in JSON-indeling en serialisatietype als parameters.

Belangrijk

Vervang STORAGEACCOUNTNAME> door de naam van uw Azure Storage-account en STORAGEACCESSKEY> door de toegangssleutel voor uw opslagaccount. Als u deze waarden niet hebt genoteerd, voert u de volgende opdrachten uit om ze op te halen: echo $storageAccountName en echo $key. Zorg er tijdens het vervangen van de waarden voor dat u geen teken verwijdert \ (escape) voor " (dubbele aanhalingstekens).

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

De transformatiequery definiëren

Voeg een transformatie aan uw taak toe met behulp van de 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"

De IoT-simulator uitvoeren

  1. Open de Raspberry Pi Azure IoT Online Simulator.

  2. Vervang de tijdelijke aanduiding in regel 15 door het volledige Azure IoT Hub Device verbindingsreeks (niet IoT Hub verbindingsreeks) dat u aan het begin van de quickstart hebt opgeslagen.

  3. Selecteer Uitvoeren. De uitvoer geeft de sensorgegevens en berichten weer die worden verzonden naar de IoT-hub.

    Raspberry Pi Azure IoT Online Simulator

Stream Analytics-taak starten en uitvoer controleren

Start de taak met behulp van de cmdlet az stream-analytics job start. Deze cmdlet gebruikt de taaknaam, resourcegroepnaam, uitvoerstartmodus en begintijd als parameters. OutputStartMode accepteert waarden van JobStartTime, CustomTime of LastOutputEventTime.

Nadat u de volgende cmdlet hebt uitgevoerd, retourneert deze True als uitvoer als de taak wordt gestart.

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

Geef het een paar minuten en controleer vervolgens of er een uitvoerbestand is gemaakt in de state blobcontainer.

Screenshot showing the output file in the State blob container.

Download en open het bestand om verschillende vermeldingen te zien die vergelijkbaar zijn met de volgende:

{
    "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
    }
}

Resources opschonen

Verwijder de resourcegroep, waarmee alle resources in de resourcegroep worden verwijderd, waaronder de Stream Analytics-taak, IoT Hub en het Azure Storage-account.

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

Volgende stappen

In deze snelstart hebt u een eenvoudige Stream Analytics-taak met behulp van de Azure CLI geïmplementeerd. U kunt Stream Analytics-taken ook implementeren met behulp van de Azure-portal en Visual Studio.

Voor informatie over het configureren van andere invoerbronnen en het uitvoeren van detectie in realtime gaat u door naar het volgende artikel: