Azure Stream Analytics ile gerçek zamanlı IoT veri akışlarını işleme

Bu makalede Nesnelerin İnterneti (IoT) cihazlarından veri toplamak için akış işleme mantığı oluşturmayı öğreneceksiniz. Çözümünüzü hızlı ve ekonomik bir şekilde nasıl oluşturabileceğinizi göstermek için gerçek dünya nesnelerin İnterneti (IoT) kullanım örneğini kullanırsınız.

Önkoşullar

Senaryo

Endüstriyel otomasyon alanında faaliyette olan Contoso, üretim sürecini otomatik hale getirmiştir. Bu fabrikada bulunan makineler, gerçek zamanlı olarak veri akışları yayabilen algılayıcılara sahiptir. Bu senaryoda bir üretim katı yöneticisi, algılayıcı verilerinden gerçek zamanlı bilgiler alarak belirli kalıpları aramak ve bunlara yönelik işlemler yapmak istiyor. Gelen veri akışından ilginç desenler bulmak için algılayıcı verileri üzerinde Stream Analytics Sorgu Dili'ni (SAQL) kullanabilirsiniz.

Bu örnekte veriler bir Texas Instruments algılayıcı etiket cihazından oluşturulur. Verilerin yükü, aşağıdaki örnek kod parçacığında gösterildiği gibi JSON biçimindedir:

{
    "time": "2016-01-26T20:47:53.0000000",  
    "dspl": "sensorE",  
    "temp": 123,  
    "hmdt": 34  
}  

Gerçek hayattaki bir senaryoda, olayları bir akış şeklinde oluşturan bunun gibi yüzlerce algılayıcınız olabilir. Bir ağ geçidi cihazının bu olayları Azure Event Hubs'a veya Azure IoT Hub'larına göndermek için kod çalıştırması idealdir. Stream Analytics işiniz bu olayları Event Hubs veya IoT Hubs'tan alır ve akışlarda gerçek zamanlı analiz sorguları çalıştırır. Ardından, sonuçları desteklenen çıkışlardan birine gönderebilirsiniz.

Kullanım kolaylığı için, bu başlangıç kılavuzunda gerçek algılayıcı etiket cihazlarından yakalanan bir örnek veri dosyası sunulmaktadır. Örnek veriler üzerinde sorgu çalıştırabilir ve sonuçları görebilirsiniz. Sonraki öğreticilerde, işinizi girişlere ve çıkışlara bağlamayı ve bunları Azure hizmetine dağıtmayı öğreneceksiniz.

Akış Analizi işi oluşturma

  1. Azure portalına gidin.

  2. Sol gezinti menüsünde Tüm hizmetler'i seçin, Analiz'i seçin, fareyi Stream Analytics işlerinin üzerine getirin ve oluştur'u seçin.

    Stream Analytics işi için Oluştur düğmesinin seçimini gösteren ekran görüntüsü.

  3. Yeni Stream Analytics işi sayfasında şu adımları izleyin:

    1. Abonelik için Azure aboneliğinizi seçin.

    2. Kaynak grubu için mevcut bir kaynak grubunu seçin veya bir kaynak grubu oluşturun.

    3. Ad alanına Stream Analytics işi için benzersiz bir ad girin.

    4. Stream Analytics işini dağıtmak istediğiniz Bölgeyi seçin. İşlem hızını artırmak ve maliyetleri azaltmak için kaynak grubunuz ve tüm kaynaklar için aynı konumu kullanın.

    5. Gözden geçir ve oluştur’u seçin.

      Yeni Stream Analytics iş sayfasını gösteren ekran görüntüsü.

  4. Gözden geçir ve oluştur sayfasında ayarları gözden geçirin ve Oluştur'u seçin.

  5. Dağıtım başarılı olduktan sonra Kaynağa git'i seçerek Stream Analytics işinizin Stream Analytics iş sayfasına gidin.

Azure Akış Analizi sorgusu oluşturma

İşiniz oluşturulduktan sonra bir sorgu yazın. İşinize giriş veya çıkış bağlamadan örnek verilerle sorguları test edebilirsiniz.

  1. GitHub'dan HelloWorldASA-InputStream.json dosyasını indirin.

  2. Azure portal Azure Stream Analytics işi sayfasında, soldaki menüden İş topolojisi'nin altında Sorgu'yu seçin.

  3. Örnek girişi karşıya yükle'yi seçin, indirdiğiniz dosyayı seçin HelloWorldASA-InputStream.json ve Tamam'ı seçin.

    **Örnek girişi karşıya yükle** öğesinin seçili olduğu **Sorgu** sayfasını gösteren ekran görüntüsü.

  4. Giriş önizleme tablosunda verilerin önizlemesinin otomatik olarak doldurulduğunu fark edin.

    Giriş önizleme sekmesinde örnek giriş verilerini gösteren ekran görüntüsü.

Sorgu: Ham verilerinizi arşivleme

En basit sorgu biçimi, tüm giriş verilerini belirlenmiş çıkışlarına arşivleyen bir doğrudan sorgudur. Bu sorgu, yeni bir Azure Stream Analytics işinde doldurulan varsayılan sorgudur.

  1. Sorgu penceresinde aşağıdaki sorguyu girin ve araç çubuğunda Sorguyu test et'i seçin.

    SELECT
        *
    INTO
        youroutputalias
    FROM
        yourinputalias
    
  2. Sonuçları alt bölmedeki Test sonuçları sekmesinde görüntüleyin.

    Örnek sorguyu ve sonuçlarını gösteren ekran görüntüsü.

Sorgu: Verileri bir koşula göre filtreleme

Şimdi sonuçları bir koşula göre filtrelemek için sorguyu güncelleştirelim. Örneğin, aşağıdaki sorgu ." öğesinden sensorAgelen olayları gösterir.

  1. Sorguyu aşağıdaki örnekle güncelleştirin:

    SELECT 
        time,
        dspl AS SensorName,
        temp AS Temperature,
        hmdt AS Humidity
    INTO
       youroutputalias
    FROM
        yourinputalias
    WHERE dspl='sensorA'
    
  2. Sorgunun sonuçlarını görmek için Sorguyu test et'i seçin.

    Filtreyle birlikte sorgu sonuçlarını gösteren ekran görüntüsü.

Sorgu: İş akışı tetiklemesi için uyarı

Şimdi sorgumuzu daha ayrıntılı hale getirelim. Her algılayıcı türü için ortalama sıcaklığı 30 saniyelik aralıklarda izlemek ve yalnızca ortalama sıcaklık 100 derecenin üzerinde olduğu zaman sonuçları görüntülemek istiyoruz.

  1. Sorguyu şu şekilde güncelleştirin:

    SELECT 
        System.Timestamp AS OutputTime,
        dspl AS SensorName,
        Avg(temp) AS AvgTemperature
    INTO
       youroutputalias
    FROM
        yourinputalias TIMESTAMP BY time
    GROUP BY TumblingWindow(second,30),dspl
    HAVING Avg(temp)>100
    
  2. Sorgunun sonuçlarını görmek için Sorguyu test et'i seçin.

    Atlayan bir pencere içeren sorguyu gösteren ekran görüntüsü.

    Yalnızca 245 satır ve ortalama ılıman değerin 100'den fazla olduğu algılayıcı adlarını içeren sonuçlar görmeniz gerekir. Bu sorguda olay akışı, 30 saniyelik bir Atlayan Pencere üzerinden algılayıcı adı olan dspl'ye göre gruplanır. Zamana bağlı sorgular, zamanın nasıl ilerlemesini istediğinizi belirtmelidir. TIMESTAMP BY yan tümcesini kullanarak, zamanları tüm zamansal hesaplamalarla ilişkilendirmek için OUTPUTTIME sütununu belirttiniz. Ayrıntılı bilgi için Zaman Yönetimi ve Pencereleme işlevleri hakkında bilgi edinin.

Sorgu: Var olmayan olayları algılama

Eksik giriş olaylarını bulmak için nasıl sorgu yazabiliriz? Bir algılayıcının son kez veri gönderdiğini ve ardından sonraki 5 saniye boyunca olay göndermediğini bulalım.

  1. Sorguyu şu şekilde güncelleştirin:

    SELECT 
        t1.time,
        t1.dspl AS SensorName
    INTO
       youroutputalias
    FROM
        yourinputalias t1 TIMESTAMP BY time
    LEFT OUTER JOIN yourinputalias t2 TIMESTAMP BY time
    ON
        t1.dspl=t2.dspl AND
        DATEDIFF(second,t1,t2) BETWEEN 1 and 5
    WHERE t2.dspl IS NULL
    
  2. Sorgunun sonuçlarını görmek için Sorguyu test et'i seçin.

    Olayların yokluğunu algılayan sorguyu gösteren ekran görüntüsü.

    Burada, LEFT OUTER deyimini aynı veri akışı üzerinde kullanırız (kendi kendine birleşme). Bir INNER birleşimde, yalnızca bir eşleşme bulunduğu zaman bir sonuç döndürülür. Bir LEFT OUTER birleşimde, birleştirmenin sol tarafındaki bir olay eşleşmemişse sağ taraftaki tüm sütunlar için NULL değerine sahip bir satır döndürülür. Bu teknik, olayların yokluğunu bulmak için yararlıdır. Daha fazla bilgi için bkz . JOIN.

Sonuç

Bu makalenin amacı, farklı Stream Analytics Sorgu Dili sorguları yazmayı ve sonuçları tarayıcıda görmeyi göstermektir. Ancak, bu makale yalnızca başlangıç yapmak için. Stream Analytics çeşitli girişleri ve çıkışları destekler ve hatta Azure Machine Learning'deki işlevleri kullanarak veri akışlarını analiz etmek için güçlü bir araç haline gelebilir. Sorgu yazma hakkında daha fazla bilgi için ortak sorgu desenleri hakkındaki makaleyi okuyun.