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
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.
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.
Timestamp By kullanıyorsanız, olayların iş başlangıç zamanından daha uzun zaman damgalarına sahip olduğunu doğrulayın.
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.
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.
Etkinlik ve kaynak günlüklerini kullanarak hata ayıklama:
- Etkinlik Günlükleri'ni kullanın ve hataları tanımlamak ve hatalarını ayıklamak için filtreleyin.
- Hataları tanımlamak ve hatalarını ayıklamak için iş kaynak günlüklerini kullanın.
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:
İş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.
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:
Ardından sorguyu şu şekilde yeniden yazabilirsiniz:
Ş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 tablosu
temp2 tablosu
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:
Verileri örneklemek için sorunun ikinci JOIN ile ilgili olduğundan neredeyse emin olabilirsiniz. Blobdan başvuru verilerini indirebilir ve bir göz atabilirsiniz:
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:
Bu kez, çıktıdaki veriler beklendiği gibi biçimlendirilir ve doldurulur.
Yardım alın
Daha fazla yardım için Azure Stream Analytics için Microsoft Soru-Cevap soru sayfamızı deneyin.