Azure Stream Analytics sorgularında sorun giderme

Bu makalede, Stream Analytics sorguları geliştirmeyle ilgili yaygın sorunlar ve bunların nasıl giderilir açıklanmaktadır.

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üklerinin etkinleştirilmesini gerektirir. Kaynak günlükleriniz etkin değilse bkz . Kaynak günlüklerini kullanarak Azure Stream Analytics sorunlarını giderme.

Sorgu beklenen çıkışı üretmiyor

  1. Yerel olarak test ederek hataları inceleyin:

    • Azure portalında, Sorgu sekmesinde Test'i seçin. sorguyu test etmek için indirilen örnek verileri kullanın. Hataları inceleyin ve düzeltmeyi deneme.
    • Ayrıca Visual Studio veya Visual Studio Code için Azure Stream Analytics araçlarını kullanarak sorgunuzu yerel olarak test edebilirsiniz.
  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ı, birden çok sorgu adımı aracılığıyla giriş kaynaklarından (Event Hub, IoT Hub vb.) ve son olarak çıkış havuzlarına veri akışını gösterir. Her sorgu adımı, WITH deyimi kullanılarak betikte tanımlanan geçici bir sonuç kümesine eşlenir. Sorunun kaynağını bulmak için her ara sonuç kümesinde verileri ve ölçümleri görüntüleyebilirsiniz.

    Job diagram preview result

  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 WHERE yan tümcesi tüm olayları filtreleyerek çıkışın oluşturulmasını engelledi.
    • CAST işlevi başarısız olur ve işin başarısız olmasına neden olur. Tür atama 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ı işin başlangıç saatinden önce gelip olaylar bırakılır.
    • JOIN koşulları eşleşmiyor. Eşleşme yoksa sıfır çıkış olur.
  5. Olay sıralama ilkelerinin beklendiği gibi yapılandırıldığından emin olun. Ayarlar gidin ve Olay Sıralama'ya tıklayın. Sorguyu test etmek için Test düğmesini kullandığınızda ilke uygulanmaz. Bu sonuç, tarayıcıda test etme ile işi üretim ortamında çalıştırma arasındaki farklardan biridir.

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

Kaynak kullanımı yüksek

Azure Stream Analytics'te paralelleştirmeden yararlandığınızdan emin olun. Giriş bölümlerini yapılandırarak ve analiz sorgu tanımını ayarlayarak Stream Analytics işlerinin sorgu paralelleştirmesiyle ölçeklendirmeyi öğrenebilirsiniz.

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.

Sorgularda aşamalı olarak hata ayıklama

Gerçek zamanlı veri işlemede, verilerin sorgunun ortasında nasıl göründüğünü bilmek yararlı olabilir. Visual Studio'daki iş diyagramını kullanarak bunu görebilirsiniz. Visual Studio'nuz yoksa ara verilerin çıktısını almak için ek adımlar uygulayabilirsiniz.

Azure Stream Analytics işinin girişleri veya adımları birden çok kez okunabildiğinden, fazladan SELECT INTO deyimleri yazabilirsiniz. Bunun yapılması, ara verileri depolama alanına aktarır ve bir programda hata ayıklarken izleme değişkenlerinin yaptığı gibi verilerin doğruluğunu incelemenize olanak tanır.

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

Example Stream Analytics SELECT INTO query

İşin çalıştığını, ancak çıktıda hiçbir olay üretilmediğini unutmayın. Burada gösterilen İzleme kutucuğunda girişin veri ürettiğini görebilirsiniz, ancak JOIN'in hangi adımının tüm olayların bırakılmasına neden olduğunu bilmiyorsunuz.

The Stream Analytics Monitoring tile

Bu durumda, ara JOIN sonuçlarını ve girişten okunan verileri "günlüğe kaydetmek" için birkaç ek SELECT INTO deyimi ekleyebilirsiniz.

Bu örnekte iki yeni "geçici çıkış" ekledik. İstediğiniz herhangi bir lavabo olabilir. Burada örnek olarak Azure Depolama kullanıyoruz:

Adding extra SELECT INTO statements to Stream Analytics query

Ardından sorguyu şu şekilde yeniden yazabilirsiniz:

Rewritten SELECT INTO Stream Analytics query

Ş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 Visual Studio Cloud Explorer ile temp1 ve temp2 sorgusunu yapın:

temp1 tablosuSELECT INTO temp1 table Stream Analytics query

temp2 tablosuSELECT INTO temp2 table Stream Analytics query

Gördüğünüz gibi, temp1 ve temp2'nin her ikisi de veriye sahiptir ve ad sütunu temp2'de doğru şekilde doldurulur. Ancak, çıktıda hala veri olmadığından bir sorun vardır:

SELECT INTO output1 table with no data Stream Analytics query

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

SELECT INTO ref table Stream Analytics query

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

Veri biçimini düzeltebilir, başvuru blobuna yükleyebilir ve yeniden deneyebilirsiniz:

SELECT INTO temp table Stream Analytics query

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

SELECT INTO final table Stream Analytics query

Yardım alın

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

Sonraki adımlar