Vývoj uživatelsky definovaných funkcí .NET Standard pro úlohy Azure Stream Analytics (Vyřazeno)

Důležité

Uživatelské definované funkce .NET Standard pro Azure Stream Analytics byly ukončeny 30. září 2024. Tato funkce již není dostupná. Přechod na uživatelsky definované funkce v JavaScriptu pro Azure Stream Analytics.

Azure Stream Analytics nabízí dotazovací jazyk podobný JAZYKu SQL pro provádění transformací a výpočtů v datových proudech událostí. Jazyk obsahuje mnoho vestavěných funkcí, ale některé složitější scénáře vyžadují větší flexibilitu. Použitím uživatelsky definovaných funkcí (UDF) standardu .NET můžete volat vlastní funkce napsané v jakémkoli jazyce .NET Standard (například C# nebo F#) a rozšířit dotazovací jazyk Stream Analytics. Používejte UDF k provádění složitých matematických výpočtů, importujte vlastní ML modely pomocí ML.NET a používejte vlastní logiku imputace pro chybějící data.

Protože tato funkce je vyřazena, použijte tento článek k pochopení, jak fungovaly standardní UDF .NET, a k plánování migrace na uživatelsky definované funkce v JavaScriptu.

O .NET Standardních uživatelsky definovaných funkcích

.NET Standard UDF rozšiřují dotazovací jazyk Stream Analytics o vlastní logiku. Než postavíte UDF, zkontrolujte regiony, kde funkce běží, cestu balíčku, kterou používá, podporované mapování typů a omezení funkcí.

Azure Stream Analytics umožňuje funkci .NET uživatelsky definované funkce pro cloudové úlohy běžící na clusterech Stream Analytics. Úlohy běžící na standardním multitenant SKU mohou tuto funkci využívat v následujících veřejných regionech:

  • Středozápadní USA
  • Severní Evropa
  • USA – východ​
  • USA – západ
  • USA – východ 2
  • Západní Evropa

Pro použití této funkce v jiné oblasti požádejte o přístup.

Formát libovolného balíčku UDF má cestu /UserCustomCode/CLR/*. Azure Stream Analytics kopíruje dynamické knihovny odkazů (DLL) a zdroje pod složkou/UserCustomCode/CLR/*, což pomáhá izolovat uživatelské DLL od systémových a Azure Stream Analytics DLL. Všechny funkce používají tuto cestu balíčku, bez ohledu na to, jak je použijete.

Aby se hodnoty Azure Stream Analytics používaly v jazyce C#, je potřeba je zařazovat z jednoho prostředí do druhého. Zařazování probíhá pro všechny vstupní parametry UDF. Každý typ Azure Stream Analytics má odpovídající typ v C#, který je zobrazen v následující tabulce:

typ služby Azure Stream Analytics Typ jazyka C#
bigint long
float dvojitý
nvarchar(max) řetězec
datetime DateTime
Záznam Slovník<string, object>
Array Objekt[]

Totéž platí v případě, že je potřeba data přenášet z C# do Azure Stream Analytics, což se děje s výstupní hodnotou uživatelsky definované funkce. Následující tabulka ukazuje podporované typy:

Typ jazyka C# typ Azure Stream Analytics
long bigint
dvojitý float
řetězec nvarchar(max)
DateTime datum a čas
struktura Záznam
objekt Záznam
Objekt[] Array
Slovník<string, object> Záznam

Funkce UDF má následující omezení:

  • .NET Standard UDF můžete vytvářet pouze ve Visual Studio Code nebo Visual Studio a pak je publikovat do Azure. Verze .NET Standard UDF pouze pro čtení si můžete prohlédnout v sekci Funkce v portálu Azure. Portál Azure nepodporuje tvorbu funkcí ve standardu .NET.
  • Editor dotazů portálu Azure ukazuje chybu, když použijete standardní .NET UDF v portálu.
  • Nemůžete volat na externí REST endpointy, například při zpětném vyhledávání IP nebo stahování referenčních dat z externího zdroje.
  • Protože vlastní kód sdílí kontext s enginem Azure Stream Analytics, vlastní kód nemůže odkazovat na nic, co má konfliktní název jmenného prostoru nebo DLL s kódem Azure Stream Analytics. Například nemůžete odkazovat na Newtonsoft.Json.
  • Azure Stream Analytics kopíruje podpůrné soubory v projektu do uživatelského vlastního zip kódu, který používá při publikování úlohy do cloudu. Během dekomprese se všechny soubory v podsložkách přesunou do kořene složky User Custom Code v cloudu. Dekomprese zploští zip soubor.
  • Vlastní kód uživatele nepodporuje prázdné složky. Nepřidávejte do podpůrných souborů v projektu prázdné složky.

Vývoj uživatelsky definované funkce v editoru Visual Studio Code

Nástroje Visual Studio Code pro Azure Stream Analytics usnadňují psaní UDFs (funkcí definovaných uživatelem), místní testování úloh (i offline) a publikování úlohy Stream Analytics na Azure. .NET Standard UDF můžete implementovat ve Visual Studio Code z lokálního projektu nebo z lokálních DLL. Můžete také odkazovat na místní knihovny DLL, které obsahují uživatelem definované funkce.

Použijte lokální projekt pro složité funkce, které vyžadují plný výkon jazyka .NET Standard nad rámec jeho výrazového jazyka, například procedurální logiku nebo rekurzi. Lokální projekt také pomáhá, když potřebujete sdílet logiku funkcí napříč několika dotazy Azure Stream Analytics, a můžete své funkce ladit a testovat lokálně. V následujícím příkladu je CSharpUDFProject projekt knihovny tříd v C# a ASAUDFDemo je projekt Azure Stream Analytics, který odkazuje na CSharpUDFProject.

  1. Vytvořte novou knihovnu tříd .NET Standard na svém lokálním počítači.

    Snímek obrazovky projektu Azure Stream Analytics ve Visual Studio Code.

  2. Napište kód ve třídě. Definujte třídy jako veřejné a objekty jako statické veřejné. Následující UDF násobí celé číslo samo se sebou, čímž vznikne druhá mocnina celého čísla.

    using System;
    
    namespace CSharpUDFProject
    {
       //
        public class Class1
        {
            public static Int64 SquareFunction(Int64 a)
            {
                return a * a;
            }
        }
    }
    
  3. Přidejte nový konfigurační soubor funkce v C# do vašeho projektu Azure Stream Analytics a odkazujte na projekt knihovny tříd v C#. Pro přidání funkce vyberte a podržte (nebo klikněte pravým tlačítkem) na složku Funkce a poté zvolte Přidat položku.

    Screenshot přidávání nové funkce v projektu Azure Stream Analytics.

  4. Přidejte funkci C# SquareFunction do projektu Azure Stream Analytics.

    Screenshot výběru funkce v C# z projektu Stream Analytics ve VS Code.

  5. Zadejte název funkce v C#.

    Screenshot zadávání názvu funkce v C# ve Visual Studio Code.

  6. V konfiguraci funkce C# vyberte Choose library project path pro výběr C# projektu z rozbalovacího seznamu a vyberte Build project pro vytvoření projektu. Pak v rozevíracím seznamu zvolte Vybrat třídu a vybrat metodu . Pro odkaz na metody, typy a funkce v dotazu Stream Analytics definujte třídy jako veřejné a objekty jako statické veřejné.

    Screenshot konfigurace funkce C# v Stream Analytics ve VS Code.

  7. Chcete-li místo toho použít C# UDF z knihovny DLL, vyberte možnost Vybrat cestu ke knihovně DLL a zvolte DLL, potom vyberte Vybrat třídu a Vybrat metodu.

    Screenshot konfigurace funkce Stream Analytics v C# pro knihovní DLL.

  8. V dotazu Azure Stream Analytics vyvolejte UDF.

     SELECT price, udf.SquareFunction(price)
     INTO Output
     FROM Input 
    
  9. Nakonfigurujte cestu k assembleru v konfiguračním souboru úlohy JobConfig.json , v sekci CustomCodeStorage . Tento krok není potřeba pro lokální testování.

  10. Před odesláním úlohy do Azure nakonfigurujte cestu balíčku v konfiguračním souboru úlohy JobConfig.json v sekci CustomCodeStorage. Použijte Select ze svého předplatného v CodeLens k výběru předplatného a vyberte si účet úložiště a název kontejneru z rozbalovacího seznamu. Nechejte cestu jako výchozí. Tento krok není potřeba pro lokální testování.

    Screenshot konfigurace úložného účtu pro funkci C# v Stream Analytics.

Vytvářejte UDF ve Visual Studio

UDF můžete implementovat ve Visual Studio pomocí souborů CodeBehind v ASA projektu, UDF z lokálního projektu nebo existujícího balíčku z Azure úložného účtu. V následujícím příkladu je UDFTest projekt knihovny tříd v C# a ASAUDFDemo je projekt Azure Stream Analytics, který odkazuje na UDFTest.

Pro možnost CodeBehind zapisujte uživatelsky definované funkce do souboru Script.asql CodeBehind. Nástroje Visual Studio automaticky kompilují soubor CodeBehind do assembleru. Nástroje zabalí sestavení do souboru ZIP a nahrají je do vašeho účtu úložiště, když odešlete úlohu do Azure. Chcete-li se naučit, jak napsat C# UDF pomocí CodeBehind, postupujte podle tutoriálu C# UDF pro Stream Analytics Edge jobs .

  1. Vytvořte novou knihovnu tříd .NET Standard ve svém řešení.

    Snímek obrazovky projektu Azure Stream Analytics IoT Edge ve Visual Studiu.

  2. Napište kód ve třídě. Definujte třídy jako veřejné a objekty jako statické veřejné.

  3. Sestavte svůj projekt. Nástroje zabalí všechny artefakty ze složky bin do zip souboru a nahrají zip soubor do úložného účtu. Pro externí reference použijte assemblerovou referenci místo balíčku NuGet.

  4. Zařaďte novou třídu do projektu Azure Stream Analytics.

  5. Přidejte do projektu Azure Stream Analytics novou funkci.

  6. Nakonfigurujte cestu k assembleru v konfiguračním souboru úlohy JobConfig.json . Nastavte cestu assembleru na Local Project Reference nebo CodeBehind.

  7. Znovu sestavte projekt funkce i projekt Azure Stream Analytics.

  8. Sestavte svůj C# projekt tak, abyste mohli přidat odkaz na svůj C# UDF z dotazu Azure Stream Analytics.

    Snímek obrazovky z vytváření projektu Azure Stream Analytics IoT Edge v aplikaci Visual Studio.

  9. Přidejte odkaz na projekt C# v projektu ASA. Vyberte a podržte (nebo klikněte pravým tlačítkem) na uzel Reference , a poté zvolte Přidat referenci.

    Screenshot přidávání odkazu na projekt v C# ve Visual Studio.

  10. V seznamu zvolte název projektu C#.

    Screenshot výběru názvu projektu v C# ze seznamu referencí ve Visual Studiu.

  11. Potvrďte, že UDFTest se objevuje v sekci Reference v Průzkumník řešení.

    Snímek obrazovky odkazu na uživatelsky definovanou funkci v okně Průzkumník řešení v aplikaci Visual Studio.

  12. Vyberte a podržte (nebo klikněte pravým tlačítkem) na složku Functions a poté vyberte Nový předmět.

    Screenshot přidávání nové položky do Functions v řešení Azure Stream Analytics Edge.

  13. Přidejte funkci jazyka C# SquareFunction.json do svého projektu Azure Stream Analytics.

    Screenshot výběru funkce v C# z položek Stream Analytics Edge ve Visual Studio.

  14. Otevřete funkci v Průzkumník řešení pro zobrazení konfiguračního dialogu.

    Screenshot dialogu konfigurace funkce C# ve Visual Studio.

  15. V konfiguraci funkce jazyka C# zvolte Načíst z odkazu na projekt ASA a související sestavení, třídu a názvy metod z rozevíracího seznamu. Pro odkaz na metody, typy a funkce v dotazu Stream Analytics definujte třídy jako veřejné a objekty jako statické veřejné.

    Screenshot konfigurace funkce Stream Analytics v C# s odkazem na projekt ASA ve Visual Studio.

Konfigurace existujících .NET Standardních UDF balíčků

Můžete vytvářet .NET standardní UDF v jakémkoli IDE a volat je z dotazu Azure Stream Analytics. Po nahrání zip balíčků assembleru do svého Azure úložného účtu můžete funkce v dotazech Azure Stream Analytics použít zahrnutím informací o úložišti do konfigurace úlohy Stream Analytics. S touto možností nelze funkci testovat lokálně, protože nástroje Visual Studio váš balíček nestahují. Služba analyzuje cestu balíčku přímo. Pro použití existujícího balíčku:

  1. Zkompilujte svůj kód a zabalte všechny DLL pomocí cesty /UserCustomCode/CLR/*.

  2. Nahrajte UserCustomCode.zip do kořenové složky kontejneru v účtu Azure Storage.

  3. V JobConfig.json souboru konfigurace úlohy rozbalte sekci User-Defined Code Configuration .

  4. Vyplňte konfiguraci s následujícími doporučenými hodnotami.

    Setting Navrhovaná hodnota
    Prostředek globálního nastavení úložiště Volba zdroje dat z aktuálního účtu
    Předplatné globálního nastavení úložiště < vaše předplatné >
    Globální nastavení úložiště Účet úložiště < váš účet pro úložiště >
    Prostředek vlastního nastavení úložiště kódu Volba zdroje dat z aktuálního účtu
    Nastavení úložiště vlastního kódu Účet úložiště < váš účet pro úložiště >
    Kontejner nastavení úložiště vlastního kódu < váš kontejner úložiště >
    Zdroj sestavení vlastního kódu Existující balíčky sestavení z cloudu
    Zdroj sestavení vlastního kódu UserCustomCode.zip

Logujte vlastní informace pomocí třídy StreamingContext

Použitím logovacího mechanismu můžete během běhu úkolu zachytávat vlastní informace. Použijte logová data k ladění nebo posouzení správnosti vlastního kódu v reálném čase. Použijte následující kroky pro publikování a přístup k logovacím zprávám:

  1. Použijte tuto třídu StreamingContext k publikování diagnostických informací pomocí StreamingDiagnostics.WriteError funkce. Následující kód ukazuje rozhraní, které Azure Stream Analytics zpřístupňuje.

    public abstract class StreamingContext
    {
        public abstract StreamingDiagnostics Diagnostics { get; }
    }
    
    public abstract class StreamingDiagnostics
    {
        public abstract void WriteError(string briefMessage, string detailedMessage);
    }
    
  2. Předat StreamingContext jako vstupní parametr metodě UDF a použít jej v rámci UDF k publikování vlastních logovacích informací. V následujícím příkladu MyUdfMethod definuje vstup data, který poskytuje dotaz, a vstup context jako StreamingContext, který poskytuje modul runtime.

    public static long MyUdfMethod(long data, StreamingContext context)
    {
        // write log
        context.Diagnostics.WriteError("User Log", "This is a log message");
    
        return data;
    }
    
  3. Zavolejte UDF ze svého dotazu. Nemusíte předávat StreamingContext hodnotu do SQL dotazu, protože Azure Stream Analytics automaticky poskytuje kontextový objekt, pokud je přítomen vstupní parametr. Použití MyUdfMethod se nemění, jak ukazuje následující dotaz.

    SELECT udf.MyUdfMethod(input.value) as udfValue FROM input
    
  4. Přístup k logovým zprávám přes diagnostické logy.