Azure Stream Analytics sorgularında sorun giderme

Bu makalede Azure Stream Analytics sorguları geliştirme, sorgu sorunlarını giderme ve sorunları düzeltme ile ilgili yaygın sorunlar açıklanmaktadır. Birçok sorun giderme adımı, Stream Analytics işiniz için kaynak günlüklerini etkinleştirmenizi gerektirir. Kaynak günlükleriniz etkin değilse bkz. Kaynak günlüklerini kullanarak Azure Stream Analytics sorunlarını giderme.

Sorgu beklenen çıktıyı üretmiyor

  1. Yerel olarak test ederek hataları inceleyin:

    • Azure portalında, Sorgu sekmesinde Test seçeneğini seçin. sorguyu test etmek için indirilen örnek verileri kullanın. Hataları inceleyin ve düzeltmeyi deneme.
    • Ayrıca sorgunuzu yerel olarak Visual Studio veya Visual Studio Code için Azure Stream Analytics araçlarıyla testedebilirsiniz.
  2. Visual Studio Code için Azure Stream Analytics araçlarındaki iş diyagramını kullanarak sorguların hatalarını yerel olarak adım adım ayıklayın. İş diyagramı, verinin örneğin Azure Event Hubs ve Azure IoT Hub gibi giriş kaynaklarından birden çok sorgu adımından geçerek ve son olarak çıktı havuzlarına nasıl aktığını gösterir. Script, her sorgu adımını, WITH ifadesi kullanarak tanımladığınız geçici bir sonuç kümesine eşler. Sorunun kaynağını bulmak için her ara sonuç setindeki verileri ve metrikleri inceleyin.

    Visual Studio Code'daki iş diyagramının ekran görüntüsü, bir sorgu adımı için önizleme sonucunu gösteriyor.

  3. Timestamp By kullanıyorsanız, olayların iş başlangıç zamanından daha uzun zaman damgalarına sahip olduğunu doğrulayın.

  4. Aşağıdakiler gibi yaygın tuzakları ortadan kaldırın:

    • Sorgudaki bir WHERE cümlesi tüm olayları filtreler, böylece sorgu çıktı üretmez.
    • CAST işlevi başarısız olur ve işin başarısız olmasına neden olur. Tür dönüştürme hatalarını önlemek için bunun yerine TRY_CAST kullanın.
    • Pencere işlevlerini kullandığınızda, sorgunun çıkışını görmek için tüm pencere süresini bekleyin.
    • Olayların zaman damgası, görevin başlangıç zamanından öncesine denk gelir; bu yüzden görev olayları yok sayar.
    • JOIN koşulları eşleşmiyor. Eşleşme yoksa, sorgu çıktı üretmez.
  5. Olay sıralama politikalarını beklenildiği gibi yapılandırdığınızdan emin olun. Ayarlar'a gidin ve Olay Sıralama'ya tıklayın. Test butonu sorguyu test ederken politika uygulanmaz. Bu sonuç, tarayıcı içinde test ile işi üretimde çalıştırmak arasındaki farklardan biridir.

  6. Etkinlik ve kaynak günlüklerini kullanarak hata ayıklama:

Sorgularda aşamalı olarak hata ayıklama

Gerçek zamanlı veri işlemede, sorgu ortasında verinin nasıl göründüğünü bilmek faydalıdır. Ara verileri görüntülemek için Visual Studio'daki iş diyagramını kullanın. Eğer Visual Studio'n yoksa, ara veri çıkarmak için ekstra adımlar atabilirsin.

Azure Stream Analytics bir işin girdilerini veya adımlarını birden fazla kez okuyabildiği için ekstra SELECT INTO ifadeler yazabilirsiniz. Bunu yapmak, ara veri akışını depoya çıkarır ve verinin doğruluğunu kontrol etmenizi sağlar; tıpkı programı hata ayıkladığınızda izleme değişkenlerinin yaptığı gibi.

Azure Stream Analytics işinde aşağıdaki örnek sorguda bir akış girişi, iki başvuru veri girişi ve Azure Tablo Depolama'ya yönelik bir çıkış vardır. Sorgu, ad ve kategori bilgilerini almak için olay hub'ından verileri ve iki başvuru blobunu birleştirir:

SELECT INTO kullanan ve bir Event Hub girdisini iki referans blobuyla birleştiren örnek bir Stream Analytics sorgusunun ekran görüntüsü.

İş çalışıyor, ancak çıktıda hiçbir olay oluşturmuyor. Burada gösterilen İzleme tipinde, girdinin veri ürettiğini görebilirsiniz, ancak JOIN'in hangi adımında tüm olayları düşürdüğünü bilmiyorsunuz.

Stream Analytics Monitoring tile ekran görüntüsü, alınan giriş olaylarını gösterirken hiçbir çıktı olayı üretilmemiştir.

Bu durumda, ara JOIN sonuçları ve girdiden okunan verileri "log" etmek için birkaç ek SELECT INTO ifade ekleyebilirsiniz.

Bu örnekte, iki yeni "geçici çıktı" ekledik. İstediğiniz herhangi bir sink olabilirler. Burada örnek olarak Azure Depolama'yı kullanacağız:

Ara sonuçları depoya kaydetmek için ekstra SELECT INTO ifadeleri eklenen bir Stream Analytics sorgusunun ekran görüntüsü.

Ardından sorguyu şu şekilde yeniden yazabilirsiniz:

Ara JOIN sonuçlarını geçici çıktılara çıkaran yeniden yazılmış Stream Analytics sorgusunun ekran görüntüsü.

Şimdi işi yeniden başlatın ve birkaç dakika boyunca çalışmasına izin verin. Ardından, aşağıdaki tabloları oluşturmak için temp1 ve temp2 öğelerini Visual Studio Cloud Explorer ile sorgulayın:

temp1 tablosuStream Analytics sorgusundaki ara JOIN sonuçlarını gösteren ekran görüntüsü.

temp2tablosu Stream Analytics sorgusundan doğru şekilde doldurulmuş ad sütununu gösteren temp2 tablosunun ekran görüntüsü.

Gördüğünüz gibi, temp1 ve temp2 öğelerinin her ikisinde de veri var ve temp2 içinde name sütunu doğru şekilde doldurulmuş. Ancak, çıktıda hâlâ veri olmadığı için bir şeyler yanlış:

Stream Analytics sorgusuyla veri döndürilmediğini gösteren output1 tablosunun ekran görüntüsü.

Verileri örnekleyerek, sorunun ikinci JOIN ile ilgili olduğundan neredeyse emin olabilirsiniz. Blobdan başvuru verilerini indirebilir ve bir göz atabilirsiniz:

Referans veri tablosunun ekran görüntüsü, temp2'deki from sütunundan farklı bir GUID formatını gösteriyor.

Gördüğünüz gibi, bu başvuru verilerindeki GUID biçimi, [from] içindeki temp2 sütununun biçiminden farklıdır. Bu yüzden veriler beklendiği gibi output1 içine ulaşmadı.

Veri formatını düzeltin, referans blob'a yükleyin ve tekrar deneyin:

GUID formatı düzeltilip referans blob'a yüklendikten sonra referans veri tablosunun ekran görüntüsü.

Bu kez, çıktıdaki veriler beklendiği gibi biçimlendirilir ve doldurulur.

Stream Analytics sorgusunda beklendiği gibi biçimlendirilmiş ve doldurulmuş veri gösteren çıktı tablosunun ekran görüntüsü.

Kaynak kullanımı yüksek

Azure Stream Analytics'te paralelleştirmeden yararlandığınızdan emin olun. Akış Analizi işlerinin sorgu paralelleştirilmesiyle ölçeklendirmeyi öğrenmek için giriş bölümlerini yapılandırıp analitik sorgu tanımını ayarlayın.

Kaynak kullanımı tutarlı olarak %80'in üzerindeyse, filigran gecikmesi artıyor ve geri yüklenen olay sayısı artıyorsa akış birimlerini artırmayı göz önünde bulundurun. Yüksek kullanım, işin ayrılan kaynak üst sınırına yakın bir değer kullandığını gösterir.

Yardım alın

Daha fazla yardım için Azure Stream Analytics için Microsoft Soru-Cevap soru sayfamızı deneyin.