Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Fungsi yang ditentukan pengguna .Net Standard untuk Azure Stream Analytics akan dihentikan pada 30 September 2024. Setelah tanggal tersebut, tidak akan mungkin untuk menggunakan fitur tersebut. Silakan transisi ke fungsi yang ditentukan pengguna JavaScript untuk Azure Stream Analytics.
Azure Stream Analytics menawarkan bahasa kueri seperti SQL untuk melakukan transformasi dan komputasi melalui aliran data peristiwa. Ada banyak fungsi bawaan, tetapi beberapa skenario kompleks membutuhkan fleksibilitas tambahan. Dengan fungsi yang ditentukan pengguna (UDF) .NET Standard, Anda dapat memanggil fungsi Anda sendiri yang ditulis dalam bahasa standar .NET (C#, F#, dll.) untuk memperluas bahasa kueri Azure Stream Analytics. UDF memungkinkan Anda melakukan komputasi matematika yang kompleks, mengimpor model ML kustom menggunakan ML.NET, dan menggunakan logika imputasi kustom untuk data yang hilang. Fitur UDF untuk pekerjaan Stream Analytics saat ini dalam pratinjau dan tidak boleh digunakan dalam beban kerja produksi.
Wilayah
Fitur fungsi .NET yang ditentukan pengguna diaktifkan untuk tugas cloud yang berjalan pada kluster Azure Stream Analytics. Pekerjaan yang berjalan pada SKU multi-penyewa Standar dapat memanfaatkan fitur ini di wilayah publik berikut:
- Barat Sentral AS
- Eropa Utara
- US Timur
- US Barat
- US Timur 2
- Eropa Barat
Jika Anda tertarik menggunakan fitur ini di wilayah lain, Anda dapat meminta akses.
Jalur paket
Format paket UDF apa pun memiliki jalur /UserCustomCode/CLR/*. Pustaka Tautan Dinamis (DLL) dan sumber daya disalin dalam folder /UserCustomCode/CLR/*, yang membantu mengisolasi DLL pengguna dari DLL sistem dan DLL Azure Stream Analytics. Jalur paket ini digunakan untuk semua fungsi terlepas dari metode yang digunakan untuk menggunakannya.
Jenis dan pemetaan yang didukung
Agar nilai Azure Stream Analytics digunakan di C#, nilai tersebut perlu dinaungi dari satu lingkungan ke lingkungan lainnya. Marshaling terjadi untuk semua parameter input UDF. Setiap jenis Azure Stream Analytics memiliki jenis yang sesuai dalam C# yang ditunjukkan pada tabel di bawah ini:
| Jenis Azure Stream Analytics | Tipe C# |
|---|---|
| bigint | long |
| float | dua kali lipat |
| nvarchar(maks) | string |
| tanggalwaktu | DateTime |
| Rekaman | String kamus<, objek> |
| Array | Objek[] |
Hal yang sama berlaku ketika data perlu dipindahkan dari C# ke Azure Stream Analytics, yang terjadi pada saat pengolahan nilai output UDF. Tabel di bawah ini memperlihatkan jenis apa yang didukung:
| Tipe C# | Jenis Azure Stream Analytics |
|---|---|
| long | bigint |
| dua kali lipat | float |
| string | nvarchar(maks) |
| DateTime | tanggalWaktu |
| struct | Rekaman |
| objek | Rekaman |
| Objek[] | Array |
| String kamus<, objek> | Rekaman |
Mengembangkan UDF di Visual Studio Code
Alat Visual Studio Code untuk Azure Stream Analytics memudahkan Anda menulis UDF, menguji pekerjaan Anda secara lokal (bahkan offline), dan menerbitkan pekerjaan Azure Stream Analytics Anda ke Azure.
Ada dua cara untuk menerapkan UDF standar .NET di alat Visual Studio Code.
- UDF dari DLL lokal
- UDF dari proyek lokal
Proyek lokal
Fungsi yang ditentukan pengguna dapat ditulis dalam rakitan yang kemudian dirujuk dalam kueri Azure Stream Analytics. Ini adalah opsi yang direkomendasikan untuk fungsi kompleks yang memerlukan kekuatan penuh bahasa Standar .NET di luar bahasa ekspresinya, seperti logika prosedural atau rekursi. UDF dari proyek lokal mungkin juga digunakan saat Anda perlu berbagi logika fungsi di beberapa kueri Azure Stream Analytics. Menambahkan UDF ke proyek lokal memberi Anda kemampuan untuk men-debug dan menguji fungsi Anda secara lokal.
Untuk mereferensikan proyek lokal:
- Buat pustaka kelas standar .NET baru di komputer lokal Anda.
- Tulis kode di kelas Anda. Ingatlah bahwa kelas harus didefinisikan sebagai publik dan objek harus didefinisikan sebagai publik statis.
- Tambahkan file konfigurasi Fungsi CSharp baru di proyek Azure Stream Analytics Anda dan referensikan proyek pustaka kelas CSharp.
- Konfigurasikan jalur perakitan di file konfigurasi pekerjaan,
JobConfig.json, bagian CustomCodeStorage . Langkah ini tidak diperlukan untuk pengujian lokal.
DLL Lokal
Anda juga dapat mereferensikan DLL lokal yang menyertakan fungsi yang ditentukan pengguna.
Contoh
Dalam contoh ini, CSharpUDFProject adalah proyek pustaka kelas C# dan ASAUDFDemo adalah proyek Azure Stream Analytics, yang akan mereferensikan CSharpUDFProject.
UDF berikut memiliki fungsi yang mengalikan bilangan bulat dengan sendirinya untuk menghasilkan kuadrat bilangan bulat. Kelas harus didefinisikan sebagai publik dan objek harus didefinisikan sebagai publik statis.
using System;
namespace CSharpUDFProject
{
//
public class Class1
{
public static Int64 SquareFunction(Int64 a)
{
return a * a;
}
}
}
Langkah-langkah berikut menunjukkan cara menambahkan fungsi C# UDF ke proyek Azure Stream Analytics Anda.
Klik kanan pada folder Functions dan pilih Tambahkan Item.
Tambahkan fungsi C# SquareFunction ke proyek Azure Stream Analytics Anda.
Di konfigurasi fungsi C#, pilih Pilih jalur proyek pustaka untuk memilih proyek C# Anda dari daftar dropdown dan pilih Bangun proyek untuk membangun proyek Anda. Lalu pilih Pilih kelas dan Pilih metode untuk memilih kelas terkait dan nama metode dari daftar dropdown. Untuk merujuk ke metode, jenis, dan fungsi dalam kueri Azure Stream Analytics, kelas harus didefinisikan sebagai publik dan objek harus didefinisikan sebagai publik statis.
Jika Anda ingin menggunakan C# UDF dari DLL, pilih Pilih jalur pustaka DLL untuk memilih DLL. Lalu pilih Pilih kelas dan Pilih metode untuk memilih kelas terkait dan nama metode dari daftar dropdown.
Panggil UDF di kueri Azure Stream Analytics Anda.
SELECT price, udf.SquareFunction(price) INTO Output FROM InputSebelum mengirimkan pekerjaan ke Azure, konfigurasikan jalur paket di file konfigurasi pekerjaan,
JobConfig.json, bagian CustomCodeStorage . Gunakan Pilih dari langganan Anda di CodeLens untuk memilih Langganan Anda dan pilih akun penyimpanan dan nama kontainer dari daftar dropdown. Biarkan Jalur sebagai default. Langkah ini tidak diperlukan untuk pengujian lokal.
Mengembangkan UDF di Visual Studio
Ada tiga cara untuk menerapkan UDF di alat Visual Studio.
- File CodeBehind dalam proyek ASA
- UDF dari proyek lokal
- Paket yang sudah ada dari akun penyimpanan Azure
CodeBehind
Anda dapat menulis fungsi yang ditentukan pengguna di CodeBehind Script.asql . Alat Visual Studio akan secara otomatis mengkompilasi file CodeBehind ke dalam file rakitan. Rakitan dikemas sebagai file zip dan diunggah ke akun penyimpanan Anda ketika Anda mengirimkan pekerjaan Anda ke Azure. Anda dapat mempelajari cara menulis UDF C# menggunakan CodeBehind dengan mengikuti tutorial UDF C# untuk Stream Analytics Edge.
Proyek lokal
Untuk mereferensikan proyek lokal di Visual Studio:
- Membuat pustaka kelas standar .NET baru dalam solusi Anda
- Tulis kode di kelas Anda. Ingatlah bahwa kelas harus didefinisikan sebagai publik dan objek harus didefinisikan sebagai publik statis.
- Bangun proyek Anda. Alat ini akan mengemas semua artefak di folder bin ke file zip dan mengunggah file zip ke akun penyimpanan. Untuk referensi eksternal, gunakan referensi rakitan alih-alih paket NuGet.
- Referensikan kelas baru di proyek Azure Stream Analytics Anda.
- Tambahkan fungsi baru di proyek Azure Stream Analytics Anda.
- Konfigurasikan jalur perakitan dalam file konfigurasi pekerjaan,
JobConfig.json. Atur Jalur Rakitan ke Referensi Proyek Lokal atau CodeBehind. - Bangun kembali proyek fungsi dan proyek Azure Stream Analytics.
Contoh
Dalam contoh ini, UDFTest adalah proyek pustaka kelas C# dan ASAUDFDemo adalah proyek Azure Stream Analytics, yang akan mereferensikan UDFTest.
Bangun proyek C# Anda, yang akan memungkinkan Anda menambahkan referensi ke C# UDF Anda dari kueri Azure Stream Analytics.
Tambahkan referensi ke proyek C# di proyek ASA. Klik kanan simpul Referensi dan pilih Tambahkan Referensi.
Pilih nama proyek C# dari daftar.
Anda akan melihat UDFTest tercantum di bawah Referensi di Penjelajah Solusi.
Klik kanan pada folder Functions dan pilih Item Baru.
Tambahkan fungsi C# SquareFunction.json ke proyek Azure Stream Analytics Anda.
Pilih fungsi CSharp dari item Stream Analytics Edge di Visual Studio
Klik dua kali fungsi di Penjelajah Solusi untuk membuka dialog konfigurasi.
Dalam konfigurasi fungsi C#, pilih Muat dari Referensi Proyek ASA dan nama rakitan, kelas, dan metode terkait dari daftar dropdown. Untuk merujuk ke metode, jenis, dan fungsi dalam kueri Azure Stream Analytics, kelas harus didefinisikan sebagai publik dan objek harus didefinisikan sebagai publik statis.
Paket yang ada
Anda dapat menulis .NET Standard UDF di IDE pilihan Anda dan memanggilnya dari kueri Azure Stream Analytics Anda. Pertama-tama kompilasi kode Anda dan kemas semua DLL. Format paket memanfaatkan jalur /UserCustomCode/CLR/*. Kemudian, unggah UserCustomCode.zip ke akar kontainer di akun penyimpanan Azure Anda.
Setelah paket zip rakitan diunggah ke akun penyimpanan Azure, Anda dapat menggunakan fungsi di kueri Azure Stream Analytics. Yang perlu Anda lakukan adalah menyertakan informasi penyimpanan dalam konfigurasi pekerjaan Azure Stream Analytics. Anda tidak dapat menguji fungsi secara lokal dengan opsi ini karena alat Visual Studio tidak akan mengunduh paket Anda. Jalur paket diurai langsung ke layanan.
Untuk mengonfigurasi jalur perakitan dalam file konfigurasi pekerjaan, JobConfig.json:
Buka bagian Konfigurasi Kode Didefinisikan Pengguna, dan isi konfigurasi dengan nilai-nilai berikut yang disarankan:
| Pengaturan | Nilai yang Disarankan |
|---|---|
| Sumber Daya Pengaturan Penyimpanan Global | Pilih sumber data dari akun saat ini |
| Langganan Pengaturan Penyimpanan Global | < langganan Anda > |
| Pengaturan Penyimpanan Global Akun Penyimpanan | < akun penyimpanan Anda > |
| Sumber Daya Pengaturan Penyimpanan Kode Kustom | Pilih sumber data dari akun saat ini |
| Pengaturan Penyimpanan Akun Penyimpanan Kode Kustom | < akun penyimpanan Anda > |
| Wadah Pengaturan Penyimpanan Kode Kustom | < kontainer penyimpanan Anda > |
| Sumber Rakitan Kode Kustom | Paket perakitan yang ada dari cloud |
| Sumber Rakitan Kode Kustom | UserCustomCode.zip |
Pengelogan pengguna
Mekanisme pengelogan memungkinkan Anda untuk mengambil informasi kustom saat pekerjaan sedang berjalan. Anda dapat menggunakan data log untuk men-debug atau menilai kebenaran kode kustom secara real time.
Kelas StreamingContext memungkinkan Anda untuk menerbitkan informasi diagnostik menggunakan fungsi StreamingDiagnostics.WriteError. Kode di bawah ini menunjukkan antarmuka yang diekspos oleh Azure Stream Analytics.
public abstract class StreamingContext
{
public abstract StreamingDiagnostics Diagnostics { get; }
}
public abstract class StreamingDiagnostics
{
public abstract void WriteError(string briefMessage, string detailedMessage);
}
StreamingContext diteruskan sebagai parameter input ke metode UDF dan dapat digunakan dalam UDF untuk menerbitkan informasi log kustom. Dalam contoh di bawah ini, MyUdfMethod mendefinisikan input data , yang disediakan oleh kueri, dan input konteks sebagai StreamingContext, yang disediakan oleh mesin runtime.
public static long MyUdfMethod(long data, StreamingContext context)
{
// write log
context.Diagnostics.WriteError("User Log", "This is a log message");
return data;
}
Nilai StreamingContext tidak perlu diteruskan oleh kueri SQL. Azure Stream Analytics menyediakan objek konteks secara otomatis jika parameter input ada. Penggunaan MyUdfMethod tidak berubah, seperti yang digambarkan dalam kueri berikut:
SELECT udf.MyUdfMethod(input.value) as udfValue FROM input
Anda dapat mengakses pesan log melalui log diagnostik.
Keterbatasan
Pratinjau UDF saat ini memiliki batasan berikut:
.NET Standard UDF hanya dapat ditulis di Visual Studio Code atau Visual Studio dan diterbitkan ke Azure. Versi baca-saja dari .NET Standard UDF dapat dilihat di bawah Functions di portal Microsoft Azure. Penulisan fungsi Standar .NET tidak didukung di portal Microsoft Azure.
Editor kueri portal Microsoft Azure menunjukkan kesalahan saat menggunakan .NET Standard UDF di portal.
Memanggil titik akhir REST eksternal, misalnya, melakukan pencarian IP terbalik atau menarik data referensi dari sumber eksternal
Karena kode kustom berbagi konteks dengan mesin Azure Stream Analytics, kode kustom tidak dapat mereferensikan apa pun yang memiliki namespace layanan/dll_name yang bertentangan dengan kode Azure Stream Analytics. Misalnya, Anda tidak dapat mereferensikan Newtonsoft Json.
File pendukung yang disertakan dalam proyek disalin ke file zip Kode Kustom Pengguna yang digunakan saat Anda menerbitkan pekerjaan ke cloud. Semua file dalam subfolder disalin langsung ke akar folder Kode Kustom Pengguna di cloud saat di-zip. File zip menjadi "datar" ketika didekompresi.
Kode Kustom Pengguna tidak mendukung folder kosong. Jangan tambahkan folder kosong ke file pendukung dalam proyek.