Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Giriş
Bu çözümde, verilerinizden gerçek zamanlı içgörüler elde etmek için Azure Stream Analytics'i kullanmayı öğreneceksiniz. Geliştiriciler tıklama akışları, günlükler ve cihaz tarafından oluşturulan olaylar gibi veri akışlarını geçmiş kayıtlarla veya iş içgörüleri türetmek için başvuru verileriyle kolayca birleştirebilir. Microsoft Azure'da barındırılan tam olarak yönetilen, gerçek zamanlı bir akış hesaplama hizmeti olan Azure Stream Analytics, dakikalar içinde çalışmaya başlamanızı sağlamak için yerleşik dayanıklılık, düşük gecikme süresi ve ölçeklenebilirlik sağlar.
Bu çözümü tamamladıktan sonra şunları yapabileceksiniz:
- Azure Stream Analytics portalı hakkında bilgi sahibi olun.
- Akış işini yapılandırma ve dağıtma.
- Gerçek dünya sorunlarını ifade edin ve Stream Analytics sorgu dilini kullanarak bunları çözün.
- Stream Analytics'i güvenle kullanarak müşterileriniz için akış çözümleri geliştirin.
- Sorunları gidermek için izleme ve günlüğe kaydetme deneyimini kullanın.
Önkoşullar
Bu çözümü tamamlamak için aşağıdaki önkoşullara ihtiyacınız vardır:
Senaryoya giriş: "Hello, Toll!"
Ücretli istasyon yaygın bir olaydır. Dünya genelinde birçok expressway, köprü ve tünelde onlarla karşılaşırsınız. Her ücretli istasyonda birden fazla gişe vardır. El ile yapılan kabinlerde, bir görevliye ücretli ödeme yapmak için durursunuz. Otomatik kabinlerde, her standın üstündeki bir sensör, geçiş gişesinden geçerken aracınızın ön camına yapıştırılmış bir RFID kartını tarar. Araçların bu ücretli istasyonlardan geçişini ilginç işlemlerin yapılabileceği bir etkinlik akışı olarak görselleştirmek kolaydır.
Gelen veriler
Bu çözüm iki veri akışıyla çalışır. Ücretli istasyonların giriş ve çıkışına monte edilen algılayıcılar ilk dereyi üretir. İkinci akış, araç kayıt verilerini içeren statik bir arama veri kümesidir.
Giriş veri akışı
Giriş veri akışı, ücretli istasyonlara girerken otomobiller hakkında bilgi içerir. Çıkış verileri olayları, örnek uygulamaya dahil edilen bir Web Uygulamasından bir olay hub'ına canlı akışla aktarılır.
| TollID | EntryTime | LicensePlate | State | Make | Model | VehicleType | VehicleWeight | Toll | Tag |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 |2014-09-10 12:01:00.000 |JNB 7001 |NY |Honda |CRV |1 |0 |7 | |
| 1 |2014-09-10 12:02:00.000 |YXZ 1001 |NY |Toyota |Camry |1 |0 |4 |123456789 |
| 3 |2014-09-10 12:02:00.000 |ABC 1004 |CT |Ford |Taurus |1 |0 |5 |456789123 |
| 2 |2014-09-10 12:03:00.000 |XYZ 1003 |CT |Toyota |Corolla |1 |0 |4 | |
| 1 |2014-09-10 12:03:00.000 |BNJ 1007 |NY |Honda |CRV |1 |0 |5 |789123456 |
| 2 |2014-09-10 12:05:00.000 |CDE 1007 |NJ |Toyota |4x4 |1 |0 |6 |321987654 |
Sütunların kısa bir açıklaması aşağıdadır:
| Sütun | Açıklama |
|---|---|
| TollID | Ücretli bir standı benzersiz olarak tanımlayan ücretli stand kimliği |
| EntryTime | Utc'de aracın ücretli standa giriş tarihi ve saati |
| LicensePlate | Aracın plaka numarası |
| Durum | Birleşik Devletler'da bir durum |
| Oluşturma | Otomobil üreticisi |
| Model | Otomobilin model numarası |
| VehicleType | Binek araçlar için 1 veya ticari araçlar için 2 |
| WeightType | Tonlarca araç ağırlığı; Binek araçlar için 0 |
| Bize | ABD doları olarak ücretli değer |
| Etiket | Otomobilde ödemeyi otomatik hale getiren e-Etiket; ödemenin el ile yapıldığı boş |
Veri akışında çıkma
Çıkış veri akışı, ücretli istasyondan ayrılan otomobiller hakkında bilgi içerir. Çıkış verileri olayları, örnek uygulamaya dahil edilen bir Web Uygulamasından bir olay hub'ına canlı akışla aktarılır.
| TollId | ExitTime | LicensePlate |
|---|---|---|
| 1 | 2014-09-10T12:03:00.0000000Z | JNB 7001 |
| 1 | 2014-09-10T12:03:00.0000000Z | YXZ 1001 |
| 3 | 2014-09-10T12:04:00.0000000Z | ABC 1004 |
| 2 | 2014-09-10T12:07:00.0000000Z | XYZ 1003 |
| 1 | 2014-09-10T12:08:00.0000000Z | BNJ 1007 |
| 2 | 2014-09-10T12:07:00.0000000Z | CDE 1007 |
Sütunların kısa bir açıklaması aşağıdadır:
| Sütun | Açıklama |
|---|---|
| TollID | Ücretli bir standı benzersiz olarak tanımlayan ücretli stand kimliği |
| ExitTime | UTC'de ücretli standdan aracın çıkış tarihi ve saati |
| LicensePlate | Aracın plaka numarası |
Ticari araç kayıt verileri
Çözüm, ticari araç kayıt veritabanının statik anlık görüntüsünü kullanır. Bu veriler, örnekteki Azure blob depolama alanına JSON dosyası olarak kaydedilir.
| LicensePlate | RegistrationId | Süresi doldu |
|---|---|---|
| SVT 6023 | 285429838 | 1 |
| XLZ 3463 | 362715656 | 0 |
| BAC 1005 | 876133137 | 1 |
| RIV 8632 | 992711956 | 0 |
| SNY 7188 | 592133890 | 0 |
| ELH 9896 | 678427724 | 1 |
Sütunların kısa bir açıklaması aşağıdadır:
| Sütun | Açıklama |
|---|---|
| LicensePlate | Aracın plaka numarası |
| RegistrationId | Aracın kayıt kimliği |
| Süresi doldu | Aracın kayıt durumu: Araç kaydı etkinse 0, kayıt süresi dolmuşsa 1 |
Azure Stream Analytics için ortamı ayarlama
Bu çözümü tamamlamak için bir Microsoft Azure aboneliğiniz olmalıdır. Azure hesabınız yoksa ücretsiz deneme sürümü isteyebilirsiniz.
Azure kredinizi en iyi şekilde kullanabilmeniz için bu makalenin sonundaki "Azure hesabınızı temizleme" bölümündeki adımları izlediğinizden emin olun.
Örneği dağıtma
Bir kaynak grubunda birkaç tıklamayla kolayca dağıtılabilir birkaç kaynak vardır. Çözüm tanımı, konumundaki https://github.com/Azure/azure-stream-analytics/tree/master/Samples/TollAppGitHub deposunda barındırılır.
Azure portalında TollApp şablonunu dağıtma
TollApp ortamını Azure'a dağıtmak için bu bağlantıyı kullanarak TollApp Azure Şablonunu Dağıtın.
İstenirse Azure portalında oturum açın.
Çeşitli kaynakların faturalandırıldığı aboneliği seçin.
Benzersiz bir adla yeni bir kaynak grubu belirtin, örneğin
MyTollBooth.Bir Azure konumu seçin.
Saniye sayısı olarak bir Aralık belirtin. Bu değer, bir olay hub'ına veri gönderme sıklığı için örnek web uygulamasında kullanılır.
Hüküm ve koşulları kabul etmeyi kontrol edin .
Kaynakları daha sonra kolayca bulabilmek için Panoya sabitle'yi seçin.
Örnek şablonu dağıtmak için Satın Al'ı seçin.
Birkaç dakika sonra Dağıtımın başarılı olduğunu onaylayan bir bildirim görüntülenir.
Azure Stream Analytics TollApp kaynaklarını gözden geçirin
Azure Portal’ında oturum açın.
Önceki bölümde adlandırdığınız Kaynak Grubunu bulun.
Kaynak grubunda aşağıdaki kaynakların listelendiğini doğrulayın:
- Bir Azure Cosmos DB Hesabı
- Bir Azure Stream Analytics İşi
- Bir Azure Depolama Hesabı
- Bir Azure olay hub'ı
- İki Web Uygulaması
Örnek TollApp işini inceleme
Önceki bölümdeki kaynak grubundan başlayarak, adıyla başlayan Stream Analytics akış işini seçin (ad
tollappbenzersizlik için rastgele karakterler içerir).İşin Genel Bakış sayfasında, sorgu söz dizimini görüntülemek için Sorgu kutusuna dikkat edin.
SELECT TollId, System.Timestamp AS WindowEnd, COUNT(*) AS Count INTO CosmosDB FROM EntryStream TIMESTAMP BY EntryTime GROUP BY TUMBLINGWINDOW(minute, 3), TollIdSorgunun amacını ifade etmek için ücretli standa giren araç sayısını saymanız gerektiğini varsayalım. Otoyol gişesinde sürekli araç girişi yapılan bir dere olduğundan, bunlar hiç durmayan bir dereye benzer giriş olaylarıdır. Akışı ölçmek için ölçülecek bir "zaman aralığı" tanımlamanız gerekir. Şimdi soruyu daha da geliştirelim: "Her üç dakikada bir gişeye kaç araç giriyor?" Bu genellikle atlayan sayı olarak adlandırılır.
Gördüğünüz gibi Azure Stream Analytics, SQL gibi bir sorgu dili kullanır ve sorgunun zaman ile ilgili yönlerini belirtmek için birkaç uzantı ekler. Daha fazla ayrıntı için sorguda kullanılan Zaman Yönetimi ve Pencere oluşturma yapıları hakkında bilgi edinin.
TollApp örnek işinin Girişlerini inceleyin. Geçerli sorguda yalnızca EntryStream girişi kullanılır.
- EntryStream girişi, otoyolda bir araba her geçiş gişesine girdiğinde verileri temsil eden bir olay hub'ı bağlantısıdır. Örneğin parçası olan bir web uygulaması olayları oluşturur ve bu veriler bu olay hub'ında kuyruğa alınır. Bu girişin akış sorgusunun FROM yan tümcesinde sorgulandığını unutmayın.
- ExitStream girişi, bir araba otoyolda bir gişeden her çıkışta verileri temsil eden bir olay hub'ı bağlantısıdır. Bu akış girişi, sorgu söz diziminin sonraki varyasyonlarında kullanılır.
- Kayıt girişi, gerektiğinde aramalar için kullanılan statik bir registration.json dosyasına işaret eden bir Azure Blob depolama bağlantısıdır. Bu başvuru veri girişi, sorgu söz diziminin sonraki varyasyonlarında kullanılır.
TollApp örnek işinin Çıkışlarını inceleyin.
- Azure Cosmos DB çıkışı, çıkış havuzu olaylarını alan bir Azure Cosmos DB veritabanı kapsayıcısıdır. Bu çıkışın akış sorgusunun INTO yan tümcesinde kullanıldığını unutmayın.
TollApp akış işini başlatma
Akış işini başlatmak için şu adımları izleyin:
İşin Genel Bakış sayfasında Başlat'ı seçin.
İşi başlat bölmesinde Şimdi'yi seçin.
Birkaç dakika sonra, iş çalıştırıldıktan sonra akış işinin Genel Bakış sayfasında İzleme grafiğini görüntüleyin. Grafikte birkaç bin giriş olayı ve onlarca çıkış olayı gösterilmelidir.
Azure Cosmos DB çıkış verilerini gözden geçirin
TollApp kaynaklarını içeren kaynak grubunu bulun.
Random-cosmos adlı ada <>sahip Azure Cosmos DB Hesabını seçin.
Veri Gezgini sayfasını açmak için Veri Gezgini başlığını seçin.
tollAppDatabase>tollAppCollection>Belgeleri'ni genişletin.
Kimlik listesinde, çıktı kullanılabilir olduğunda birkaç belge gösterilir.
JSON belgesini gözden geçirmek için her kimliği seçin. Bu penceredeki her
tollid,windowend timeve öğesinecount of carsdikkat edin.Ek üç dakika sonra, her
tollidbiri bir belge olmak üzere dört belgeden oluşan başka bir küme kullanılabilir.
Her araba için toplam süreyi raporla
Bir arabanın geçiş ücretinden geçmesi için gereken ortalama süre, sürecin verimliliğini ve müşteri deneyimini değerlendirmeye yardımcı olur.
Toplam süreyi bulmak için EntryTime akışına ExitTime akışıyla katılın. Eşit eşleşen TollId ve LicensePlate sütunlarında iki giriş akışına katılın. JOIN işleci, birleştirilen olaylar arasındaki kabul edilebilir zaman farkını açıklayan geçici bir yol belirtmenizi gerektirir. Olayların birbirinden en fazla 15 dakika uzakta olması gerektiğini belirtmek için DATEDIFF işlevini kullanın. Ayrıca, bir arabanın ücretli istasyonda harcadığı zamanı hesaplamak için çıkış ve giriş zamanları için DATEDIFF işlevini uygulayın. JOIN koşulu yerine SELECT deyiminde kullanıldığında DATEDIFF kullanımı arasındaki farka dikkat edin.
SELECT EntryStream.TollId, EntryStream.EntryTime, ExitStream.ExitTime, EntryStream.LicensePlate, DATEDIFF (minute, EntryStream.EntryTime, ExitStream.ExitTime) AS DurationInMinutes
INTO CosmosDB
FROM EntryStream TIMESTAMP BY EntryTime
JOIN ExitStream TIMESTAMP BY ExitTime
ON (EntryStream.TollId= ExitStream.TollId AND EntryStream.LicensePlate = ExitStream.LicensePlate)
AND DATEDIFF (minute, EntryStream, ExitStream ) BETWEEN 0 AND 15
TollApp akış işi sorgu söz dizimini güncelleştirmek için:
İşin Genel Bakış sayfasında Durdur'u seçin.
İşin durdurulduğunu belirten bildirim için birkaç dakika bekleyin.
İş TOPOLOJİsi başlığının altında Sorgu'yu seçin <>
Ayarlanmış akış SQL sorgusunu yapıştırın.
Sorguyu kaydetmek için Kaydet'i seçin. Değişiklikleri kaydetmek için Evet'i onaylayın.
İşin Genel Bakış sayfasında Başlat'ı seçin.
İşi başlat bölmesinde Şimdi'yi seçin.
Çıktıdaki toplam süreyi gözden geçirme
Akış işinden Azure Cosmos DB çıkış verilerini gözden geçirmek için önceki bölümdeki adımları yineleyin. En son JSON belgelerini gözden geçirin.
Örneğin, bu belgede belirli bir plakaya sahip örnek bir araba, entrytime ve ve exit timeve ücretli stand süresini iki dakika olarak gösteren DATEDIFF hesaplanan durationinminutes alanı gösterilmektedir:
{
"tollid": 4,
"entrytime": "2018-04-05T06:51:39.0491173Z",
"exittime": "2018-04-05T06:53:09.0491173Z",
"licenseplate": "JVR 9425",
"durationinminutes": 2,
"id": "ff52eb25-d580-7566-2879-1f52bba6601e",
"_rid": "+8E4AI1DZgBjAAAAAAAAAA==",
"_self": "dbs/+8E4AA==/colls/+8E4AI1DZgA=/docs/+8E4AI1DZgBjAAAAAAAAAA==/",
"_etag": "\"ad02f6b8-0000-0000-0000-5ac5c8330000\"",
"_attachments": "attachments/",
"_ts": 1522911283
}
Süresi dolan kayıtlara sahip araçları bildirme
Azure Stream Analytics, zamansal veri akışlarına katılmak için başvuru verilerinin statik anlık görüntülerini kullanabilir. Bu özelliği göstermek için aşağıdaki örnek soruyu kullanın. Kayıt girişi, lisans etiketlerinin süre sonunu listeleyen statik bir blob json dosyasıdır. Referans verileri, plakaya katılarak hem ücretli hem de ücretli araçlardan geçen her araçla karşılaştırılır.
Ücretli şirkete kayıtlı bir ticari araç, denetim için durdurulmadan ücretli standdan geçebilir. Süresi dolmuş olan tüm ticari araçları tanımlamak için kayıt arama tablosunu kullanın.
SELECT EntryStream.EntryTime, EntryStream.LicensePlate, EntryStream.TollId, Registration.RegistrationId
INTO CosmosDB
FROM EntryStream TIMESTAMP BY EntryTime
JOIN Registration
ON EntryStream.LicensePlate = Registration.LicensePlate
WHERE Registration.Expired = '1'
TollApp akış işi sorgu söz dizimini güncelleştirmek için önceki bölümdeki adımları yineleyin.
Akış işinden Azure Cosmos DB çıkış verilerini gözden geçirmek için önceki bölümdeki adımları yineleyin.
Örnek çıkış:
{
"entrytime": "2018-04-05T08:01:28.0252168Z",
"licenseplate": "GMT 3221",
"tollid": 1,
"registrationid": "763220582",
"id": "47db0535-9716-4eb2-db58-de7886966cbf",
"_rid": "y+F8AJ9QWACSAQAAAAAAAA==",
"_self": "dbs/y+F8AA==/colls/y+F8AJ9QWAA=/docs/y+F8AJ9QWACSAQAAAAAAAA==/",
"_etag": "\"88007d8d-0000-0000-0000-5ac5d7e20000\"",
"_attachments": "attachments/",
"_ts": 1522915298
}
İşin ölçeğini genişletme
Azure Stream Analytics, büyük hacimli verileri işleyebilmesi için esnek bir şekilde ölçeklendirilecek şekilde tasarlanmıştır. Azure Stream Analytics sorgusu, sisteme bu adımın ölçeği genişletildiğini bildirmek için PARTITION BY yan tümcesini kullanabilir. PartitionId , sistemin girişin bölüm kimliğiyle (olay hub'ı) eşleşecek şekilde eklediği özel bir sütundur.
Sorgunun ölçeğini bölümlere genişletmek için sorgu söz dizimini aşağıdaki kodla düzenleyin:
SELECT TollId, System.Timestamp AS WindowEnd, COUNT(*)AS Count
INTO CosmosDB
FROM EntryStream
TIMESTAMP BY EntryTime
PARTITION BY PartitionId
GROUP BY TUMBLINGWINDOW(minute,3), TollId, PartitionId
Akış işinin ölçeğini daha fazla akış birimine genişletmek için:
Geçerli işi durdurun .
Sorgu sayfasında sorgu söz dizimini güncelleştirin><ve değişiklikleri kaydedin.
Akış işinin YAPıLANDıR başlığının altında Ölçeklendir'i seçin.
Akış birimleri kaydırıcısını 1'den 6'ya kaydırın. Akış birimleri, işin alabileceği işlem gücü miktarını tanımlar. Kaydet'i seçin.
Ek ölçeği göstermek için akış işini başlatın . Azure Stream Analytics, işi daha fazla işlem kaynağı arasında dağıtır ve daha iyi aktarım hızı elde eder ve PARTITION BY yan tümcesinde belirlenen sütunu kullanarak işi kaynaklar arasında bölümlere ayırır.
İş izleme
İzleyici alanı, çalışan iş hakkındaki istatistikleri içerir. Depolama hesabını aynı bölgede kullanmak için ilk kez yapılandırma gerekir (bu belgenin geri kalanı gibi ad ücreti).
Etkinlik Günlüklerine iş panosu Ayarlar alanından da erişebilirsiniz.
TollApp kaynaklarını temizleme
Azure portalında Stream Analytics işini durdurun.
TollApp şablonuyla ilgili sekiz kaynak içeren kaynak grubunu bulun.
Kaynak grubunu sil'i seçin. Silme işlemini onaylamak için kaynak grubunun adını yazın.
Sonuç
Bu çözüm sizi Azure Stream Analytics hizmetine tanıttı. Stream Analytics işi için girişlerin ve çıkışların nasıl yapılandırıldığını gösterdi. Toll Data senaryosu kullanılarak çözüm, hareket halindeki verilerin alanında ortaya çıkan yaygın sorun türlerini ve Bunların Azure Stream Analytics'teki basit SQL benzeri sorgularla nasıl çözülebileceğini açıkladı. Çözümde, zamansal verilerle çalışmaya yönelik SQL uzantısı yapıları açıklanmıştır. Veri akışlarını birleştirmeyi, veri akışını statik başvuru verileriyle zenginleştirmeyi ve daha yüksek aktarım hızı elde etmek için sorgunun ölçeğini genişletmeyi gösterdi.
Bu çözüm iyi bir giriş sağlasa da, hiçbir şekilde tamamlanmadı. Yaygın Stream Analytics kullanım desenleri için sorgu örnekleri bölümünde SAQL dilini kullanarak daha fazla sorgu deseni bulabilirsiniz.