İş .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:

  1. Yerel makineniz üzerinde yeni bir .NET standart sınıf kitaplığı oluşturun.
  2. Sınıfınıza kodu yazın. Sınıfların genel olarak, nesnelerin de statik genel olarak tanımlanmalıdır.
  3. Azure Stream Analytics projenize yeni bir CSharp İşlevi yapılandırma dosyası ekleyin ve CSharp sınıf kitaplığı projesine bakın.
  4. İş yapılandırma dosyasında, JobConfig.json CustomCodeStorage 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.

Azure Stream Analytics projesini Visual Studio Code

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.

  1. İşlevler klasörüne sağ tıklayın ve Öğe Ekle'yi seçin.

    Azure Stream Analytics projesine yeni işlev ekleme

  2. Yeni projenize bir C# işlevi SquareFunction Azure Stream Analytics ekleyin.

    VS Code'daki bir projeden CSharp Stream Analytics işlevini VS Code

    İşleve CSharp işlev adını VS Code

  3. 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.

    Stream Analytics C sharp işlevi yapılandırma VS Code

    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.

    Stream Analytics C sharp işlev yapılandırması

  4. Sorgunuza UDF'yi Azure Stream Analytics.

     SELECT price, udf.SquareFunction(price)
     INTO Output
     FROM Input 
    
  5. İş Azure'a göndermeden önce, paket yolunu iş yapılandırma dosyasında , JobConfig.json CustomCodeStorage 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.

    Kitaplık yolu seçin

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:

  1. Çözümünüzde yeni bir .NET Standard sınıf kitaplığı oluşturun
  2. 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.
  3. 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.
  4. Azure Stream Analytics projenizdeki yeni sınıfa başvurun.
  5. Azure Stream Analytics projenize yeni bir işlev ekleyin.
  6. Derleme yolunu iş yapılandırma dosyasında yapılandırın JobConfig.json . derleme yolunu yerel Project Reference veya CodeBehind olarak ayarlayın.
  7. 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.

Visual Studio Azure Stream Analytics IoT Edge projesi

  1. C# projenizi oluşturun, bu, Azure Stream Analytics sorgusundan C# UDF 'nize bir başvuru eklemenize olanak sağlar.

    Visual Studio içinde Azure Stream Analytics IoT Edge projesi oluşturma

  2. Başvuruyu ASA projesindeki C# projesine ekleyin. Başvurular düğümüne sağ tıklayın ve başvuru Ekle ' yi seçin.

    Visual Studio bir C# projesine başvuru ekleme

  3. Listeden C# proje adını seçin.

    Başvuru listesinden C# proje adınızı seçin

  4. Çözüm Gezgini Başvurular altında listelenen udftest ' i görmeniz gerekir.

    Çözüm Gezgini 'nde Kullanıcı tanımlı işlev başvurusunu görüntüleme

  5. İşlevler klasörüne sağ tıklayın ve Yeni öğe' yi seçin.

    Azure Stream Analytics Edge çözümünde IŞLEVLERE yeni öğe ekleme

  6. Azure Stream Analytics projenize bir C# işlevi SquareFunction.js ekleyin.

    Visual Studio Stream Analytics Edge öğelerinden CSharp Function 'ı seçin

  7. Yapılandırma iletişim kutusunu açmak için Çözüm Gezgini işlevine çift tıklayın.

    Visual Studio ' de C Sharp işlev yapılandırması

  8. 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.

    Stream Analytics C diyez işlevi yapılandırma Visual Studio

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.

Sonraki adımlar