Rychlý start: Vytvoření úlohy Azure Stream Analytics pomocí Azure CLI

V tomto rychlém startu použijete Azure CLI k definování úlohy Stream Analytics, která filtruje zprávy ze snímačů v reálném čase s teplotou vyšší než 27. Úloha Stream Analytics čte data ze služby IoT Hub, transformuje data a zapisuje výstupní data do kontejneru v úložišti objektů blob. Vstupní data použitá v tomto rychlém startu se generují online simulátorem Raspberry Pi.

Než začnete

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Předpoklady

  • Vytvořte skupinu prostředků. Všechny prostředky Azure musí být nasazené do skupiny prostředků. Skupiny prostředků vám umožňují organizaci a správu souvisejících prostředků Azure.

    Pro účely tohoto rychlého startu vytvořte skupinu prostředků s názvem streamanalyticsrg v umístění eastus pomocí následujícího příkazu az group create:

    az group create --name streamanalyticsrg --location eastus
    

Příprava vstupních dat

Před definováním úlohy Stream Analytics připravte data, která se použijí pro vstup úlohy. Následující příkazy Azure CLI připraví vstupní data požadovaná úlohou.

  1. Vytvořte IoT Hub pomocí příkazu az iot hub create . Tento příklad vytvoří IoT Hub s názvem MyASAIoTHub. Vzhledem k tomu, že názvy ioT Hubu musí být globálně jedinečné, možná budete muset změnit název, pokud se už používá. Nastavte skladovou položku na F1, aby používala úroveň Free, pokud je dostupná pro vaše předplatné. Pokud ne, zvolte další nejnižší úroveň.

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

    Po vytvoření centra IoT získejte připojovací řetězec IoT Hub pomocí příkazu az iot hub connection-string show. Zkopírujte celý připojovací řetězec a uložte ho. Použijete ho při přidávání IoT Hubu jako vstupu do úlohy Stream Analytics.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. Přidejte zařízení do IoT Hubu pomocí příkazu az iothub device-identity create . Tento příklad vytvoří zařízení s názvem MyASAIoTDevice.

    az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
    
  3. Získejte připojovací řetězec zařízení pomocí příkazu az iot hub device-identity connection-string show. Zkopírujte celý připojovací řetězec a uložte ho při vytváření simulátoru Raspberry Pi.

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

    Příklad výstupu:

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

Vytvoření účtu úložiště objektů blob

Následující příkazy Azure CLI vytvoří účet úložiště objektů blob, který se používá pro výstup úlohy.

  1. Účet úložiště pro obecné účely vytvoříte příkazem az storage account create. Účet úložiště pro obecné účely můžete použít pro všechny čtyři služby: objekty blob, soubory, tabulky a fronty.

    storageAccountName="asatutorialstorage$RANDOM"
    az storage account create \
        --name $storageAccountName \
        --resource-group streamanalyticsrg \
        --location eastus \
        --sku Standard_ZRS \
        --encryption-services blob
    
  2. Získejte klíč pro svůj účet úložiště spuštěním příkazu az storage account keys list .

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

    Důležité

    Poznamenejte si přístupový klíč pro účet úložiště Azure. Tento klíč použijete později v tomto rychlém startu.

  3. Vytvořte kontejner s názvem state pro ukládání objektů blob pomocí příkazu az storage container create . Klíč účtu úložiště použijete k autorizaci operace k vytvoření kontejneru. Další informace o autorizaci operací s daty pomocí Azure CLI najdete v tématu Autorizace přístupu k datům objektů blob nebo front pomocí Azure CLI.

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

Vytvoření úlohy Stream Analytics

Pomocí příkazu az stream-analytics job create vytvořte úlohu Stream Analytics.

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"

Konfigurace vstupu do úlohy

Přidejte do úlohy vstup pomocí rutiny az stream-analytics input . Tato rutina přebírá název úlohy, název vstupu úlohy, název skupiny prostředků a vstupní vlastnosti ve formátu JSON jako parametry. V tomto příkladu vytvoříte IoT Hub jako vstup.

Důležité

  • Nahraďte IOT HUB ACCESS KEY hodnotou sdíleného přístupového klíče ve službě IOT Hub připojovací řetězec, kterou jste uložili. Pokud je například ioT Hub připojovací řetězec: HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=, hodnota sdíleného přístupového klíče je xxxxxxxxxxxxxx=. Při nahrazování hodnoty se ujistěte, že neodstraníte \ (řídicí) znak pro " (dvojité uvozovky).
  • Aktualizujte hodnotu iotHubNamespace v následujícím příkazu, pokud jste použili jiný název než MyASAIoTHub. Spuštěním zobrazíte echo $iotHubName název ioT Hubu.
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"

Konfigurace výstupu do úlohy

Přidejte výstup do úlohy pomocí rutiny az stream-analytics output create . Tato rutina přebírá název úlohy, název výstupu úlohy, název skupiny prostředků, zdroj dat ve formátu JSON a typ serializace jako parametry.

Důležité

Nahraďte STORAGEACCOUNTNAME> názvem účtu služby Azure Storage a STORAGEACCESSKEY> přístupovým klíčem pro váš účet úložiště. Pokud jste si tyto hodnoty nezaznamenali, získejte je spuštěním následujících příkazů: echo $storageAccountName a echo $key. Při nahrazování hodnot se ujistěte, že neodstraníte \ (řídicí) znak pro " (dvojité uvozovky).

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

Definice transformačního dotazu

Přidejte transformaci úlohy pomocí rutiny 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"

Spuštění simulátoru IoT

  1. Otevřete simulátor Raspberry Pi Azure IoT Online.

  2. Zástupný symbol na řádku 15 nahraďte celým připojovací řetězec zařízení Služby Azure IoT Hub (nikoli službou IoT Hub připojovací řetězec), kterou jste uložili na začátku rychlého startu.

  3. Vyberte Spustit. Výstup by měl zobrazit data snímačů a zprávy, které se odesílají do ioT Hubu.

    Raspberry Pi Azure IoT Online Simulator

Spuštění úlohy Stream Analytics a kontrola výstupu

Spusťte úlohu pomocí rutiny az stream-analytics job start . Tato rutina použije název úlohy, název skupiny prostředků, režim spuštění výstupu a čas spuštění jako parametry. Parametr OutputStartMode připouští hodnoty JobStartTime, CustomTime nebo LastOutputEventTime.

Jakmile spustíte následující rutinu, vrátí jako výstup hodnotu True, pokud se úloha spustí.

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

Dejte mu pár minut a pak ověřte, že se v kontejneru state objektů blob vytvoří výstupní soubor.

Screenshot showing the output file in the State blob container.

Stáhněte a otevřete soubor, abyste viděli několik položek podobných následujícímu:

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

Vyčištění prostředků

Odstraňte skupinu prostředků, která odstraní všechny prostředky ve skupině prostředků, včetně úlohy Stream Analytics, IoT Hubu a účtu Azure Storage.

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

Další kroky

V tomto rychlém startu jste pomocí Azure CLI nasadili jednoduchou úlohu Stream Analytics. Úlohy Stream Analytics můžete nasadit také pomocí webu Azure Portal a sady Visual Studio.

Pokud se chcete dozvědět o konfiguraci dalších vstupních zdrojů a provádění detekce v reálném čase, pokračujte na další článek: