İş .NET Standard için kullanıcı tanımlı işlevler geliştirme Azure Stream Analytics (Önizleme)
Azure Stream Analytics, olay SQL akışları üzerinde dönüştürmeler ve hesaplamalar gerçekleştirmek için benzer bir sorgu dili sunar. Birçok yerleşik işlev vardır, ancak bazı karmaşık senaryolar ek esneklik gerektirir. Kullanıcı .NET Standard (UDF) ile, herhangi bir .NET standart dilinde (C#, F# vb.) yazılmış kendi işlevlerinizi çağırarak sorgu dilinin Stream Analytics çağırabilirsiniz. UFS'ler karmaşık matematik hesaplamaları gerçekleştirmenizi, ML.NET kullanarak özel ML modellerini içeri aktarmanızı ve eksik veriler için özel imputation mantığını kullanmanızı sağlar. İş yüklerinin UDF Stream Analytics şu anda önizlemededir ve üretim iş yüklerinde kullanılmaması gerekir.
Bulut işleri için .NET user-defined-function şu içinde kullanılabilir:
- Orta Batı ABD
- Kuzey Avrupa
- Doğu ABD
- Batı ABD
- Doğu ABD 2
- West Europe
Bu özelliği başka bir bölgede kullanmak ilginizi çekiyorsa, erişim isteğinde bulundurabilirsiniz. Ancak, kümelerini kullanırken böyle bir Stream Analytics yoktur.
Paket yolu
Herhangi bir UDF paketinin biçiminde yolu /UserCustomCode/CLR/* vardır. Dinamik Bağlantı Kitaplıkları (DLL'ler) ve kaynaklar klasörün altına kopyalanır. Bu, kullanıcı URL'lerini sistemden ve sanal Azure Stream Analytics /UserCustomCode/CLR/* yardımcı olur. Bu paket yolu, bunları kullanırken kullanılan yöntemden bağımsız olarak tüm işlevler için kullanılır.
Desteklenen türler ve eşleme
C# Azure Stream Analytics kullanılacak tüm değerlerin bir ortamdan diğer ortama sıralanları gerekir. Sıralama, UDF'nin tüm giriş parametreleri için gerçekleşir. Her Azure Stream Analytics türü, aşağıdaki tabloda gösterilen C# ile karşılık gelen bir türe sahip:
| Azure Stream Analytics türü | C# türü |
|---|---|
| bigint | long |
| float | double |
| nvarchar(max) | string |
| datetime | DateTime |
| Kayıt | Sözlük<string, object> |
| Dizi | Nesne[] |
Aynı durum, verilerin bir UDF'nin çıkış değerinde olan C# Azure Stream Analytics için sıralandır yapılması gereken durumlarda da aynıdır. Aşağıdaki tabloda desteklenen türler gösterilmiştir:
| C# türü | Azure Stream Analytics türü |
|---|---|
| long | bigint |
| double | float |
| string | nvarchar(max) |
| DateTime | tarih saat |
| struct | Kayıt |
| object | Kayıt |
| Nesne[] | Dizi |
| Sözlük<string, object> | Kayıt |
Visual Studio Code'de UDF geliştirme
Visual Studio Code araçları Azure Stream Analytics UFS yazmanızı, işlerinizi yerel olarak (çevrimdışı bile) test edin ve işlerinizi Azure'Stream Analytics yayımlamanızı kolaylaştırır.
.NET standart UFS'lerini uygulamanın iki yolu vardır Visual Studio Code vardır.
- Yerel URL'lerden UDF
- Yerel bir projeden UDF
Yerel proje
Kullanıcı tanımlı işlevler, daha sonra bir sorguda daha sonra başvurulan bir derlemede Azure Stream Analytics olabilir. Bu, bir dilin ifade dilinin ötesindeki yordam mantığı veya .NET Standard tam gücünü gerektiren karmaşık işlevler için önerilen seçenektir. Yerel bir projeden gelen UFS'ler, işlev mantığını birkaç farklı sorguda paylaşma Azure Stream Analytics kullanılabilir. Yerel projenize UFS eklemek, işlevlerinizin hata ayıklama ve test etme işlevlerini yerel olarak test etme olanağı sağlar.
Yerel projeye başvuru yapmak için:
- Yerel makineniz üzerinde yeni bir .NET standart sınıf kitaplığı oluşturun.
- Sınıfınıza kodu yazın. Sınıfların genel olarak, nesnelerin de statik genel olarak tanımlanmalıdır.
- Azure Stream Analytics projenize yeni bir CSharp İşlevi yapılandırma dosyası ekleyin ve CSharp sınıf kitaplığı projesine bakın.
- İş yapılandırma dosyasında,
JobConfig.jsonCustomCodeStorage bölümünde derleme yolunu yapılandırma. Bu adım yerel test için gerekli değildir.
Yerel URL'ler
Kullanıcı tanımlı işlevleri içeren yerel URL'lere de başvurabilirsiniz.
Örnek
Bu örnekte CSharpUDFProject bir C# sınıf kitaplığı projesidir ve ASAUDFDemo, CSharpUDFProject'e başvuracak olan Azure Stream Analytics projesidir.
Aşağıdaki UDF,tamsayının karesi üretmek için bir tamsayıyı kendisiyle çarpan bir işleve sahiptir. Sınıflar genel olarak, nesneler ise statik genel olarak tanımlanmalıdır.
using System;
namespace CSharpUDFProject
{
//
public class Class1
{
public static Int64 SquareFunction(Int64 a)
{
return a * a;
}
}
}
Aşağıdaki adımlarda, C# UDF işlevini projenize nasıl Stream Analytics gösterir.
İşlevler klasörüne sağ tıklayın ve Öğe Ekle'yi seçin.
Yeni projenize bir C# işlevi SquareFunction Azure Stream Analytics ekleyin.
C# işlev yapılandırmasında, açılan listeden C# projenizi seçmek için kitaplık proje yolunu seçin'i seçin ve projenizi derlemek için Projeyi derleme'yi seçin. Ardından Sınıf seçin'i ve Yöntem seçin'i seçerek açılan listeden ilgili sınıf ve yöntem adını seçin. Stream Analytics sorgudaki yöntemlere, türlere ve işlevlere başvurmak için sınıfların genel olarak, nesnelerin ise statik genel olarak tanımlanmalıdır.
BIR DLL'den C# UDF'yi kullanmak için DLL'yi seçmek için Kitaplık dll yolunu seçin'i seçin. Ardından Sınıf seçin'i ve Yöntem seçin'i seçerek açılan listeden ilgili sınıf ve yöntem adını seçin.
Sorgunuza UDF'yi Azure Stream Analytics.
SELECT price, udf.SquareFunction(price) INTO Output FROM Inputİş Azure'a göndermeden önce, paket yolunu iş yapılandırma dosyasında ,
JobConfig.jsonCustomCodeStorage bölümünde yapılandırın. CodeLens'te aboneliğinizi seçin'i kullanarak Aboneliğinizi seçin ve açılan listeden depolama hesabını ve kapsayıcı adını seçin. Yol'da varsayılan olarak bırakın. Bu adım yerel test için gerekli değildir.
Visual Studio 'da UDF geliştirin
Visual Studio araçlarında udf 'leri uygulamak için üç yol vardır.
- Bir ASA projesindeki CodeBehind dosyaları
- Yerel projeden UDF
- Azure Storage hesabından mevcut bir paket
CodeBehind
Kullanıcı tanımlı işlevleri Script. ASQL codebehind içinde yazabilirsiniz. Visual Studio araçlar, CodeBehind dosyasını otomatik olarak derleme dosyasına derler. Derlemeler bir zip dosyası olarak paketlenir ve işinizi Azure 'a gönderdiğinizde depolama hesabınıza yüklenir. Stream Analytics Edge işleri öğreticisi Için C# UDF 'Yi izleyerek codebehind kullanarak c# UDF yazma hakkında bilgi edinebilirsiniz.
Yerel proje
Visual Studio bir yerel projeye başvurmak için:
- Çözümünüzde yeni bir .NET Standard sınıf kitaplığı oluşturun
- Kodunuzu sınıfınıza yazın. Sınıfların ortak olarak tanımlanması gerektiğini ve nesnelerin statik ortak olarak tanımlanması gerektiğini unutmayın.
- Projenizi yapılandırın. Araçlar bin klasöründeki tüm yapıtları bir ZIP dosyasına paketler ve ZIP dosyasını depolama hesabına yükler. dış başvurular için NuGet paketi yerine derleme başvurusunu kullanın.
- Azure Stream Analytics projenizdeki yeni sınıfa başvurun.
- Azure Stream Analytics projenize yeni bir işlev ekleyin.
- Derleme yolunu iş yapılandırma dosyasında yapılandırın
JobConfig.json. derleme yolunu yerel Project Reference veya CodeBehind olarak ayarlayın. - Hem işlev projesini hem de Azure Stream Analytics projeyi yeniden derleyin.
Örnek
Bu örnekte, udftest bir C# sınıf kitaplığı projem ve Asaudfdemo , udftest'e başvuracaktır Azure Stream Analytics projem.
C# projenizi oluşturun, bu, Azure Stream Analytics sorgusundan C# UDF 'nize bir başvuru eklemenize olanak sağlar.
Başvuruyu ASA projesindeki C# projesine ekleyin. Başvurular düğümüne sağ tıklayın ve başvuru Ekle ' yi seçin.
Listeden C# proje adını seçin.
Çözüm Gezgini Başvurular altında listelenen udftest ' i görmeniz gerekir.
İşlevler klasörüne sağ tıklayın ve Yeni öğe' yi seçin.
Azure Stream Analytics projenize bir C# işlevi SquareFunction.js ekleyin.
Yapılandırma iletişim kutusunu açmak için Çözüm Gezgini işlevine çift tıklayın.
C# işlev yapılandırmasında, açılan listeden bir Project başvurusunu ve ilgili derlemeyi, sınıfı ve yöntem adlarını yükle ' yi seçin. Stream Analytics sorgusundaki yöntemlere, türlere ve işlevlere başvurmak için sınıfların ortak olarak tanımlanması ve nesnelerin statik ortak olarak tanımlanması gerekir.
Mevcut paketler
.NET Standard UDF 'Leri dilediğiniz IDE 'de yazabilir ve Azure Stream Analytics sorgınızdan çağırabilirsiniz. İlk olarak kodunuzu derleyin ve tüm dll 'Leri paketleyin. Paketin biçimi yolu vardır /UserCustomCode/CLR/* . Ardından, UserCustomCode.zip Azure Depolama hesabınızdaki kapsayıcının köküne yükleyin.
Azure depolama hesabınıza derleme ZIP paketleri yüklendikten sonra, Azure Stream Analytics sorgulardaki işlevleri kullanabilirsiniz. Tüm yapmanız gereken Stream Analytics iş yapılandırmasındaki depolama bilgilerini içerir. Visual Studio araçları paketinizi indirmediği için işlevi bu seçenekle yerel olarak test edebilirsiniz. Paket yolu doğrudan hizmete ayrıştırılır.
İş yapılandırma dosyasında derleme yolunu yapılandırmak için JobConfig.json :
Kullanıcı Tanımlı Kod Yapılandırması bölümünü genişletin ve yapılandırmaya aşağıdaki önerilen değerleri ekleyin:
| Ayar | Önerilen değer |
|---|---|
| genel Depolama Ayarlar kaynağı | Geçerli hesaptaki veri kaynağını seçin |
| genel Depolama Ayarlar aboneliği | Aboneliğinizi < > |
| genel Depolama Ayarlar Depolama hesabı | Depolama hesabınızı < > |
| özel kod Depolama Ayarlar kaynağı | Geçerli hesaptaki veri kaynağını seçin |
| özel kod Depolama Ayarlar Depolama hesabı | Depolama hesabınızı < > |
| özel kod Depolama Ayarlar kapsayıcısı | Depolama kapsayıcınızı < > |
| Özel kod derleme kaynağı | Buluttan mevcut derleme paketleri |
| Özel kod derleme kaynağı | UserCustomCode.zip |
Kullanıcı günlüğü
Günlüğe kaydetme mekanizması, bir iş çalışırken özel bilgileri yakalamanızı sağlar. Hata ayıklamak veya gerçek zamanlı olarak özel kodun doğruluğunu değerlendirmek için günlük verilerini kullanabilirsiniz.
StreamingContextSınıfı, işlevini kullanarak tanılama bilgilerini yayımlamanıza olanak sağlar StreamingDiagnostics.WriteError . Aşağıdaki kodda Azure Stream Analytics tarafından sunulan arabirim gösterilmektedir.
public abstract class StreamingContext
{
public abstract StreamingDiagnostics Diagnostics { get; }
}
public abstract class StreamingDiagnostics
{
public abstract void WriteError(string briefMessage, string detailedMessage);
}
StreamingContext , UDF yöntemine bir giriş parametresi olarak geçirilir ve özel günlük bilgilerini yayımlamak için UDF içinde kullanılabilir. Aşağıdaki örnekte, MyUdfMethod sorgu tarafından belirtilen bir veri girişi ve StreamingContext çalışma zamanı altyapısı tarafından sağlanmış olan olarak bir bağlam girişi tanımlanmaktadır.
public static long MyUdfMethod(long data, StreamingContext context)
{
// write log
context.Diagnostics.WriteError("User Log", "This is a log message");
return data;
}
StreamingContextdeğerin SQL sorgu tarafından geçirilmesi gerekmez. Azure Stream Analytics bir giriş parametresi varsa otomatik olarak bir bağlam nesnesi sağlar. MyUdfMethodAşağıdaki sorguda gösterildiği gibi, öğesinin kullanımı değişmez:
SELECT udf.MyUdfMethod(input.value) as udfValue FROM input
Günlük iletilerine tanılama günlükleriaracılığıyla erişebilirsiniz.
Sınırlamalar
UDF önizlemesi Şu anda aşağıdaki sınırlamalara sahiptir:
.NET Standard udf 'ler yalnızca Visual Studio Code veya Visual Studio yazılabilir ve Azure 'da yayımlanabilir. .NET Standard UDF 'Leri salt okuma sürümleri Azure portal işlevler altında görüntülenebilir. .NET Standard işlevlerinin yazılması Azure portal desteklenmez.
Azure portal sorgu Düzenleyicisi portalda .NET Standard UDF kullanırken bir hata gösterir.
Dış REST uç noktalarını çağırma, örneğin ters IP araması yapma veya bir dış kaynaktan başvuru verileri çekme
Özel kod Azure Stream Analytics altyapısı ile bağlam paylaştığından, özel kod Azure Stream Analytics kodla çakışan bir ad alanı/dll_name olan herhangi bir şeye başvuramaz. Örneğin, Newtonsoft JSON öğesine başvurulamıyor.
Projeye dahil olan destekleyici dosyalar, işi buluta yayımladığınızda kullanılan Kullanıcı özel kod ZIP dosyasına kopyalanır. Alt klasörlerdeki tüm dosyalar, daraltılmış durumda, bulutta bulunan Kullanıcı özel kod klasörünün köküne doğrudan kopyalanır. ZIP açıldığında "düzleştirilmiş" olur.
Kullanıcı özel kodu boş klasörleri desteklemez. Projedeki destekleyici dosyalara boş klasörler eklemeyin.