Share via


Hızlı Başlangıç: Azure CLI kullanarak Azure Stream Analytics işi oluşturma

Bu hızlı başlangıçta Azure CLI kullanarak gerçek zamanlı algılayıcı iletilerini 27'den büyük bir sıcaklık okumasıyla filtreleyen bir Stream Analytics işi tanımlayacaksınız. Stream Analytics işi IoT Hub'dan verileri okur, verileri dönüştürür ve çıktı verilerini blob depolamadaki bir kapsayıcıya yazar. Bu hızlı başlangıçta kullanılan giriş verileri bir Raspberry Pi çevrimiçi simülatörü tarafından oluşturulur.

Başlamadan önce

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Ön koşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Girdi verilerini hazırlama

Stream Analytics işini tanımlamadan önce, işin girişi için kullanılan verileri hazırlayın. Aşağıdaki Azure CLI komutları, işin gerektirdiği giriş verilerini hazırlar.

  1. az iot hub create komutunu kullanarak bir IoT Hub oluşturun . Bu örnek, MyASAIoTHub adlı bir IoT Hub oluşturur. IoT Hub adlarının genel olarak benzersiz olması gerektiğinden, zaten alınmışsa adı değiştirmeniz gerekebilir. Aboneliğinizde varsa ücretsiz katmanı kullanmak için SKU'yu F1 olarak ayarlayın. Aksi takdirde sonraki en düşük katmanı seçin.

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

    IoT hub'ı oluşturulduktan sonra az iot hub connection-string show komutunu kullanarak IoT Hub bağlantı dizesi alın. tüm bağlantı dizesi kopyalayın ve kaydedin. Bunu, IoT Hub'ı Stream Analytics işinize giriş olarak eklerken kullanırsınız.

    az iot hub connection-string show --hub-name $iotHubName
    
  2. az iothub device-identity create komutunu kullanarak IoT Hub'a cihaz ekleyin. Bu örnek MyASAIoTDevice adlı bir cihaz oluşturur.

    az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
    
  3. az iot hub device-identity connection-string show komutunu kullanarak cihaz bağlantı dizesi alın. Bağlantı dizesi tamamını kopyalayın ve Raspberry Pi simülatörünü oluştururken için kaydedin.

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

    Çıkış örneği:

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

Blob depolama hesabı oluşturma

Aşağıdaki Azure CLI komutları, iş çıktısı için kullanılan bir blob depolama hesabı oluşturur.

  1. az storage account create komutuyla bir genel amaçlı depolama hesabı oluşturun. Genel amaçlı depolama hesabı; bloblar, dosyalar, tablolar ve kuyruklar olmak üzere dört hizmet için de kullanılabilir.

    storageAccountName="asatutorialstorage$RANDOM"
    az storage account create \
        --name $storageAccountName \
        --resource-group streamanalyticsrg \
        --location eastus \
        --sku Standard_ZRS \
        --encryption-services blob
    
  2. az storage account keys list komutunu çalıştırarak depolama hesabınızın anahtarını alın.

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

    Önemli

    Azure depolama hesabının erişim anahtarını not edin. Bu hızlı başlangıcın ilerleyen bölümlerinde bu anahtarı kullanacaksınız.

  3. az storage container create komutuyla blobları depolamak için adlı state bir kapsayıcı oluşturun. Kapsayıcıyı oluşturma işlemini yetkilendirmek için depolama hesabı anahtarını kullanırsınız. Azure CLI ile veri işlemlerini yetkilendirme hakkında daha fazla bilgi için bkz . Azure CLI ile blob veya kuyruk verilerine erişimi yetkilendirme.

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

Akış Analizi işi oluşturma

az stream-analytics job create komutuyla bir Stream Analytics işi oluşturun .

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"

İş girdisini yapılandırma

az stream-analytics input cmdlet'ini kullanarak işinize giriş ekleyin. Bu cmdlet iş adını, iş giriş adını, kaynak grubu adını ve JSON biçimindeki giriş özelliklerini parametre olarak alır. Bu örnekte giriş olarak bir IoT Hub oluşturacaksınız.

Önemli

  • değerini, kaydettiğiniz IOT Hub bağlantı dizesi Paylaşılan Erişim Anahtarı değeriyle değiştirinIOT HUB ACCESS KEY. Örneğin, IOT Hub bağlantı dizesi: HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=ise, Paylaşılan Erişim Anahtarı değeri olurxxxxxxxxxxxxxx=. Değeri değiştirirken , (çift tırnak) için " karakter silmediğinizden \ (kaçış) emin olun.
  • dışında MyASAIoTHubbir ad kullandıysanız aşağıdaki komutta değerini iotHubNamespace güncelleştirin. IoT Hub'ınızın adını görmek için komutunu çalıştırın echo $iotHubName .
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"

İş çıktısını yapılandırma

az stream-analytics output create cmdlet'ini kullanarak işinize bir çıkış ekleyin. Bu cmdlet iş adını, iş çıktı adını, kaynak grubu adını, JSON biçiminde veri kaynağını ve serileştirme türünü parametre olarak alır.

Önemli

değerini Azure Depolama hesabınızın adıyla ve STORAGEACCESSKEY> depolama hesabınızın erişim anahtarıyla değiştirinSTORAGEACCOUNTNAME>. Bu değerleri not almadıysanız, bunları almak için aşağıdaki komutları çalıştırın: echo $storageAccountName ve echo $key. Değerleri değiştirirken , (çift tırnak) için " karakter silmediğinizden \ (kaçış) emin olun.

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

Dönüşüm sorgusunu tanımlama

az stream-analytics transformation create cmdlet'ini kullanarak işinizi dönüştürme ekleyin.

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"

IoT simülatörünü çalıştırma

  1. Raspberry Pi Azure IoT Online Simülatörü'ni açın.

  2. 15. satırdaki yer tutucuyu hızlı başlangıcın başında kaydettiğiniz Azure IoT Hub Cihaz bağlantı dizesi (IoT Hub bağlantı dizesi değil) ile değiştirin.

  3. Çalıştır seçin. Çıktıda IoT Hub'ınıza gönderilen algılayıcı verileri ve iletileri gösterilmelidir.

    Raspberry Pi Azure IoT Online Simulator

Stream Analytics işini başlatıp çıktıyı denetleyin

az stream-analytics job start cmdlet'ini kullanarak işi başlatın . Bu cmdlet iş adı, kaynak grubu adı, çıktı başlangıç modu ve başlangıç saatini parametre olarak alır. OutputStartMode; JobStartTime, CustomTime veya LastOutputEventTime değerlerini kabul eder.

Aşağıdaki cmdlet’i çalıştırdıktan sonra iş başlarsa çıktı olarak True değeri döndürülür.

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

Birkaç dakika bekleyin ve ardından blob kapsayıcısında bir çıkış dosyası oluşturulduğunu state doğrulayın.

Screenshot showing the output file in the State blob container.

Aşağıdakine benzer birkaç girdi görmek için dosyayı indirip açın:

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

Kaynakları temizleme

Kaynak grubunu silin; bu işlem Stream Analytics işi, IoT Hub ve Azure Depolama hesabı dahil olmak üzere kaynak grubundaki tüm kaynakları siler.

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

Sonraki adımlar

Bu hızlı başlangıçta, Azure CLI kullanarak basit bir Stream Analytics işi dağıttınız. Stream Analytics işlerini Azure portalı ve Visual Studio’yu kullanarak da dağıtabilirsiniz.

Diğer girdi kaynaklarını yapılandırma ve gerçek zamanlı algılama hakkında bilgi almak için aşağıdaki makaleye geçin: