Snabbstart: Skapa ett Azure Stream Analytics-jobb med hjälp av Azure CLI

I den här snabbstarten använder du Azure CLI för att definiera ett Stream Analytics-jobb som filtrerar sensormeddelanden i realtid med en temperatur som är större än 27. Stream Analytics-jobbet läser data från IoT Hub, transformerar data och skriver utdata till en container i en bloblagring. De indata som används i den här snabbstarten genereras av en Raspberry Pi-onlinesimulator.

Innan du börjar

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Förutsättningar

  • Skapa en resursgrupp. Alla Azure-resurser måste distribueras till en resursgrupp. Resursgrupper gör det enkelt att se och hantera relaterade Azure-resurser.

    I den här snabbstarten skapar du en resursgrupp med namnet streamanalyticsrgplatsen eastus med följande kommando az group create:

    az group create --name streamanalyticsrg --location eastus
    

Förbereda indata

Innan du definierar Stream Analytics-jobbet förbereder du de data som används för jobbets indata. Följande Azure CLI-kommandon förbereder de indata som krävs av jobbet.

  1. Skapa en IoT-hubb med hjälp av kommandot az iot hub create. I det här exemplet skapas en IoT-hubb som heter MyASAIoTHub. Eftersom IoT Hub-namn måste vara globalt unika kan du behöva ändra namnet om det redan har tagits. Ange SKU till F1 för att använda den kostnadsfria nivån om den är tillgänglig med din prenumeration. Annars väljer du nästa lägsta nivå.

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

    När IoT-hubben har skapats hämtar du IoT Hub-anslutningssträng med kommandot az iot hub connection-string show. Kopiera hela anslutningssträng och spara den. Du använder den när du lägger till IoT Hub som indata till ditt Stream Analytics-jobb.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. Lägg till en enhet i IoT-hubben med hjälp av kommandot az iothub device-identity create. I det här exemplet skapas en enhet med namnet MyASAIoTDevice.

    az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
    
  3. Hämta enheten anslutningssträng med kommandot az iot hub device-identity connection-string show. Kopiera hela anslutningssträngen och spara den för användning när du skapar Raspberry Pi-simulatorn.

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

    Utdataexempel:

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

Skapa ett bloblagringskonto

Följande Azure CLI-kommandon skapar ett bloblagringskontosom används för jobbutdata.

  1. Skapa ett allmänt lagringskonto med kommandot az storage account create. Det allmänna lagringskontot kan användas för alla fyra tjänsterna: blobar, filer, tabeller och köer.

    storageAccountName="asatutorialstorage$RANDOM"
    az storage account create \
        --name $storageAccountName \
        --resource-group streamanalyticsrg \
        --location eastus \
        --sku Standard_ZRS \
        --encryption-services blob
    
  2. Hämta nyckeln för ditt lagringskonto genom att köra kommandot az storage account keys list .

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

    Viktigt!

    Anteckna åtkomstnyckeln för Azure Storage-kontot. Du kommer att använda den här nyckeln senare i den här snabbstarten.

  3. Skapa en container med namnet state för lagring av blobar med kommandot az storage container create . Du använder lagringskontonyckeln för att auktorisera åtgärden för att skapa containern. Mer information om hur du auktoriserar dataåtgärder med Azure CLI finns i Auktorisera åtkomst till blob- eller ködata med Azure CLI.

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

Skapa ett Stream Analytics-jobb

Skapa ett Stream Analytics-jobb med kommandot 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"

Konfigurera indata för jobbet

Lägg till indata i jobbet med hjälp av cmdleten az stream-analytics input . Den här cmdleten tar jobbnamnet, jobbets indatanamn, resursgruppens namn och indataegenskaperna i JSON-format som parametrar. I det här exemplet skapar du en IoT Hub som indata.

Viktigt!

  • Ersätt IOT HUB ACCESS KEY med värdet för delad åtkomstnyckel i IOT Hub-anslutningssträng du sparade. Om till exempel IOT Hub-anslutningssträng är: HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=är xxxxxxxxxxxxxx=värdet för delad åtkomstnyckel . När du ersätter värdet kontrollerar du att du inte tar bort \ (escape)-tecknet för " (dubbla citattecken).
  • Uppdatera värdet iotHubNamespace för i följande kommando om du använde ett annat namn än MyASAIoTHub. Kör echo $iotHubName för att se namnet på din IoT Hub.
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"

Konfigurera utdata för jobbet

Lägg till utdata i jobbet med hjälp av cmdleten az stream-analytics output create . Den här cmdleten tar jobbnamnet, jobbutdatanamnet, resursgruppens namn, datakällan i JSON-format och serialiseringstypen som parametrar.

Viktigt!

Ersätt STORAGEACCOUNTNAME> med namnet på ditt Azure Storage-konto och STORAGEACCESSKEY> med åtkomstnyckeln för ditt lagringskonto. Om du inte har antecknat dessa värden kör du följande kommandon för att hämta dem: echo $storageAccountName och echo $key. När du ersätter värdena kontrollerar du att du inte tar bort \ (escape)-tecknet för " (dubbla citattecken).

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

Definiera transformationsfrågan

Lägg till en transformering av jobbet med hjälp av cmdleten 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"

Köra IoT-simulatorn

  1. Öppna Raspberry Pi Azure IoT-onlinesimulatorn.

  2. Ersätt platshållaren på rad 15 med hela Azure IoT Hub Device anslutningssträng (inte IoT Hub anslutningssträng) som du sparade i början av snabbstarten.

  3. Markera Kör. Utdata bör visas de sensordata och meddelanden som skickas till din IoT-hubb.

    Raspberry Pi Azure IoT Online Simulator

Starta Stream Analytics-jobbet och kontrollera utdata

Starta jobbet med hjälp av cmdleten az stream-analytics job start . Den här cmdleten tar jobbnamnet, resursgruppens namn, startläget för utdata och starttiden som parametrar. OutputStartMode godkänner värden för JobStartTime, CustomTime eller LastOutputEventTime.

När du har kört följande cmdlet returnerar den True som utdata om jobbet startar.

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

Ge den några minuter och kontrollera sedan att en utdatafil har skapats i blobcontainern state .

Screenshot showing the output file in the State blob container.

Ladda ned och öppna filen för att se flera poster som liknar följande:

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

Rensa resurser

Ta bort resursgruppen, som tar bort alla resurser i resursgruppen, inklusive Stream Analytics-jobb, IoT Hub och Azure Storage-konto.

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

Nästa steg

I den här snabbstarten distribuerade du ett enkelt Stream Analytics-jobb med Hjälp av Azure CLI. Du kan även distribuera Stream Analytics-jobb med Azure-portalen och Visual Studio.

Om du vill se hur du konfigurerar andra indatakällor och utför realtidsidentifiering fortsätter du till följande artikel: