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
- Ücretsiz bir Azure aboneliği oluşturun.
- GitHub'dan örnek sorgu ve veri dosyalarını indirin.
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
Azure portalına gidin.
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.
Yeni Stream Analytics işi sayfasında şu adımları izleyin:
Abonelik için Azure aboneliğinizi seçin.
Kaynak grubu için mevcut bir kaynak grubunu seçin veya bir kaynak grubu oluşturun.
Ad alanına Stream Analytics işi için benzersiz bir ad girin.
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.
Gözden geçir ve oluştur’u seçin.
Gözden geçir ve oluştur sayfasında ayarları gözden geçirin ve Oluştur'u seçin.
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.
GitHub'dan HelloWorldASA-InputStream.json dosyasını indirin.
Azure portal Azure Stream Analytics işi sayfasında, soldaki menüden İş topolojisi'nin altında Sorgu'yu seçin.
Örnek girişi karşıya yükle'yi seçin, indirdiğiniz dosyayı seçin
HelloWorldASA-InputStream.json
ve Tamam'ı seçin.Giriş önizleme tablosunda verilerin önizlemesinin otomatik olarak doldurulduğunu fark edin.
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.
Sorgu penceresinde aşağıdaki sorguyu girin ve araç çubuğunda Sorguyu test et'i seçin.
SELECT * INTO youroutputalias FROM yourinputalias
Sonuçları alt bölmedeki Test sonuçları sekmesinde görüntüleyin.
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 sensorA
gelen olayları gösterir.
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'
Sorgunun sonuçlarını görmek için Sorguyu test et'i seçin.
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.
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
Sorgunun sonuçlarını görmek için Sorguyu test et'i seçin.
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.
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
Sorgunun sonuçlarını görmek için Sorguyu test et'i seçin.
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.