Memecahkan masalah permintaan Azure Stream Analytics

Artikel ini menjelaskan masalah umum dalam mengembangkan kueri Azure Stream Analytics dan cara memecahkan masalahnya.

Artikel ini menjelaskan masalah umum dalam mengembangkan kueri Azure Stream Analytics, cara memecahkan masalah kueri, dan cara memperbaiki masalah tersebut. Banyak langkah pemecahan masalah yang mengharuskan log sumber daya diaktifkan untuk pekerjaan Azure Stream Analytics Anda. Jika Anda tidak mengaktifkan log sumber daya, lihat Memecahkan masalah Azure Stream Analytics dengan menggunakan log sumber daya.

Kueri tidak menghasilkan output yang diharapkan

  1. Periksa kesalahan dengan menguji secara lokal:

    • Di portal Microsoft Azure, pada tab Kueri. pilih Uji. Gunakan sampel data yang diunduh untuk menguji kueri. Periksa setiap kesalahan dan coba untuk memperbaikinya.
    • Anda juga dapat menguji kueri secara lokal menggunakan alat Azure Stream Analytics untuk Visual Studio atau Visual Studio Code.
  2. Proses debug langkah demi langkah secara lokal menggunakan diagram pekerjaan di alat Azure Stream Analytics untuk Visual Studio Code. Diagram pekerjaan menunjukkan bagaimana data mengalir dari sumber input (Pusat Aktivitas, IoT Hub, dll.) melalui beberapa langkah kueri dan, akhirnya, ke sink output. Setiap langkah kueri dipetakan ke set hasil sementara yang ditentukan dalam skrip menggunakan pernyataan WITH. Anda dapat menampilkan data, serta metrik, di setiap set hasil antara untuk menemukan sumber masalah.

    Job diagram preview result

  3. Jika Anda menggunakan Cap Waktu Menurut, pastikan peristiwa memiliki cap waktu yang lebih besar dari waktu mulai pekerjaan.

  4. Hilangkan perangkap umum, seperti:

    • Klausa WHERE dalam kueri memfilter semua peristiwa, mencegah output apa pun dihasilkan.
    • Fungsi CAST gagal, menyebabkan pekerjaan gagal. Untuk menghindari kegagalan cast, gunakan TRY_CAST sebagai gantinya.
    • Saat Anda menggunakan fungsi jendela, tunggu hingga seluruh durasi jendela untuk melihat output dari kueri.
    • Cap waktu untuk peristiwa mendahului waktu mulai pekerjaan dan peristiwa dilepaskan.
    • Kondisi JOIN tidak cocok. Jika tidak ada kecocokan, akan ada output nol.
  5. Pastikan kebijakan pengurutan peristiwa dikonfigurasi seperti yang diharapkan. Buka Pengaturan dan pilih Pengurutan Peristiwa. Kebijakan tidak diterapkan saat Anda menggunakan tombol Uji untuk menguji kueri. Hasil ini adalah salah satu perbedaan antara pengujian di browser versus menjalankan pekerjaan dalam produksi.

  6. Proses debug menggunakan log aktivitas dan sumber daya:

Pemanfaatan sumber daya tinggi

Pastikan Anda memanfaatkan paralelisasi di Azure Stream Analytics. Anda dapat belajar menskalakan dengan paralelisasi kueri pekerjaan Azure Stream Analytics dengan mengonfigurasi partisi input dan menyetel definisi kueri analitik.

Jika pemanfaatan sumber daya secara konsisten lebih dari 80%, tunda watermark meningkat, dan jumlah peristiwa backlog meningkat, pertimbangkan untuk memperbesar unit streaming. Pemanfaatan tinggi menunjukkan bahwa pekerjaan menggunakan sumber daya yang mendekati alokasi maksimum.

Kueri debug secara progresif

Dalam pemrosesan data real-time, mengetahui seperti apa data di tengah kueri bisa membantu. Anda dapat melihat ini menggunakan diagram pekerjaan di Visual Studio. Jika tidak memiliki Visual Studio, Anda dapat mengambil langkah tambahan untuk menghasilkan data antara.

Karena input atau langkah-langkah pekerjaan Azure Stream Analytics dapat dibaca beberapa kali, Anda dapat menulis pernyataan SELECT INTO tambahan. Melakukannya akan mengeluarkan data antara ke dalam penyimpanan dan memungkinkan Anda memeriksa kebenaran data, seperti yang dilakukan lihat variabel saat Anda men-debug program.

Contoh kueri berikut dalam pekerjaan Azure Stream Analytics memiliki satu input aliran, dua input data referensi, dan output ke Azure Table Storage. Kueri menggabungkan data dari pusat aktivitas dan dua blob referensi untuk mendapatkan informasi nama dan kategori:

Example Stream Analytics SELECT INTO query

Perhatikan bahwa pekerjaan sedang berjalan, tetapi tidak ada peristiwa yang diproduksi dalam output. Pada petak Pemantauan, yang diperlihatkan di sini, Anda dapat melihat bahwa input menghasilkan data, tetapi Anda tidak tahu langkah JOIN mana yang menyebabkan semua peristiwa dilepaskan.

The Stream Analytics Monitoring tile

Dalam situasi ini, Anda dapat menambahkan beberapa pernyataan SELECT INTO tambahan untuk "mencatat" hasil JOIN antara dan data yang dibaca dari input.

Dalam contoh ini, kami telah menambahkan dua "output sementara" baru. Output ini bisa menjadi sink apa pun yang Anda suka. Di sini kita menggunakan Azure Storage sebagai contoh:

Adding extra SELECT INTO statements to Stream Analytics query

Anda kemudian bisa menulis ulang kueri seperti ini:

Rewritten SELECT INTO Stream Analytics query

Sekarang mulai pekerjaan lagi, dan biarkan berjalan selama beberapa menit. Lalu kueri temp1 dan temp2 dengan Visual Studio Cloud Explorer untuk menghasilkan tabel berikut:

tabel temp1SELECT INTO temp1 table Stream Analytics query

tabel temp2SELECT INTO temp2 table Stream Analytics query

Seperti yang Anda lihat, temp1 dan temp2 keduanya memiliki data, dan kolom nama diisi dengan benar di temp2. Namun, karena masih belum ada data dalam output, ada yang salah:

SELECT INTO output1 table with no data Stream Analytics query

Dengan mengambil sampel data, Anda dapat hampir yakin bahwa masalahnya adalah dengan JOIN kedua. Anda dapat mengunduh data referensi dari blob dan melihat:

SELECT INTO ref table Stream Analytics query

Seperti yang Anda lihat, format GUID dalam data referensi ini berbeda dari format kolom [from] di temp2. Itu sebabnya data tidak tiba di output1 seperti yang diharapkan.

Anda dapat memperbaiki format data, mengunggahnya ke blob referensi, dan mencoba lagi:

SELECT INTO temp table Stream Analytics query

Kali ini, data dalam output diformat dan diisi seperti yang diharapkan.

SELECT INTO final table Stream Analytics query

Dapatkan bantuan

Untuk bantuan lebih lanjut, coba halaman pertanyaan Microsoft Q&A untuk Azure Stream Analytics.

Langkah berikutnya