Dela via


Självstudie: Skriva en användardefinierad C#-funktion för Azure Stream Analytics-jobb (förhandsversion)

Viktigt!

.Net Standard-användardefinierade funktioner för Azure Stream Analytics dras tillbaka den 30 september 2024. Efter det datumet går det inte att använda funktionen. Övergå till användardefinierade JavaScript-funktioner för Azure Stream Analytics.

Med användardefinierade funktioner med C# (UDF skapas i Visual Studio) kan du utöka Azure Stream Analytics-frågespråket med dina egna funktioner. Du kan återanvända befintlig kod (inklusive DLL-filer) och använda matematiska eller komplex logik med C#. Det finns tre sätt att implementera UDF:er:

  • CodeBehind-filer i ett Stream Analytics-projekt
  • UDF:er från ett lokalt C#-projekt
  • UDF:er från ett befintligt paket från ett lagringskonto.

Den här självstudien använder metoden CodeBehind för att implementera en grundläggande C#-funktion. UDF-funktionen för Stream Analytics-jobb är för närvarande i förhandsversion och bör inte användas i produktionsarbetsbelastningar.

I den här självstudien lär du dig att:

  • Skapa en användardefinierad funktion i C# med CodeBehind.
  • Testa Stream Analytics-jobbet lokalt.
  • Publicera ditt jobb till Azure.

Förutsättningar

Innan du börjar bör du kontrollera att du har slutfört följande krav:

Skapa en container i ditt Azure Storage-konto

Containern som du skapar används för att lagra det kompilerade C#-paketet. Om du skapar ett Edge-jobb används det här lagringskontot också för att distribuera paketet till din IoT Edge-enhet. Använd en särskild container för varje Stream Analytics-jobb. Återanvändning av samma container för flera Stream Analytics Edge-jobb stöds inte. Om du redan har ett lagringskonto med befintliga containrar kan du använda dem. Annars måste du skapa en ny container.

Skapa ett Stream Analytics-projekt i Visual Studio

  1. Starta Visual Studio.

  2. Välj Fil > nytt > projekt.

  3. I malllistan till vänster väljer du Stream Analytics och sedan Azure Stream Analytics Edge-program eller Azure Stream Analytics-program.

  4. Ange projektets namn, plats och lösningsnamn. Välj sedan OK.

    Create an Azure Stream Analytics Edge project in Visual Studio

Konfigurera sökvägen för sammansättningspaketet

  1. Öppna Visual Studio och navigera till Solution Explorer.

  2. Dubbelklicka på jobbets konfigurationsfil, JobConfig.json.

  3. Expandera avsnittet användardefinierade kod Configuration avsnittet och fyll i konfigurationen med följande föreslagna värden:

    Inställning Föreslaget värde
    Global lagringsresurs Inställningar Välj datakälla från det aktuella kontot
    Global Storage Inställningar-prenumeration < din prenumeration >
    Globalt lagringskonto Inställningar lagring < ditt lagringskonto >
    Anpassad kodlagring Inställningar resurs Välj datakälla från det aktuella kontot
    Lagringskonto för anpassad kod Inställningar < ditt lagringskonto >
    Anpassad kodlagring Inställningar container < din lagringscontainer >

Skriv en C#-UDF med CodeBehind

En CodeBehind-fil är en C#-fil som är associerad med ett enda ASA-frågeskript. Visual Studio-verktyg zippar automatiskt CodeBehind-filen och laddar upp den till ditt Azure Storage-konto när den skickas in. Alla klasser måste definieras som offentliga och alla objekt måste definieras som statiska offentliga.

  1. I Solution Explorer, expandera Script.asql för att hitta CodeBehind-filen Script.asaql.cs.

  2. Ersätt koden med följande exempel:

        using System; 
        using System.Collections.Generic; 
        using System.IO; 
        using System.Linq; 
        using System.Text; 
    
        namespace ASAEdgeUDFDemo 
        { 
            public class Class1 
            { 
                // Public static function 
                public static Int64 SquareFunction(Int64 a) 
                { 
                    return a * a; 
                } 
            } 
        } 
    

Implementera en användardefinerad funktion

  1. I Solution Exploreröppnar du filen Script.asaql.

  2. Ersätt den befintliga frågan med följande fråga:

        SELECT machine.temperature, udf.ASAEdgeUDFDemo_Class1_SquareFunction(try_cast(machine.temperature as bigint))
        INTO Output
        FROM Input 
    

Lokal testning

  1. Ladda ned exempeldatafilen för temperatursimulatorn.

  2. I Solution Explorer, expandera Indata, högerklicka på Input.json och välj Lägg till lokala indata.

    Add local input to Stream Analytics job in Visual Studio

  3. Ange den lokala indatafilens sökväg för de exempeldata som du hämtade och spara.

    Local input configuration for Stream Analytics job in Visual Studio

  4. Klicka på Kör lokalt i Skriptredigeraren. När resultatet har sparats för lokal körning trycker du på valfri tangent för att se resultatet i tabellformat.

    Run Azure Stream Analytics job locally with Visual Studio

  5. Du kan också välja Öppna resultatmappen för att se raw-filer i JSON- och CSV-format.

    View results of local Azure Stream Analytics job with Visual Studio

Felsöka en UDF

Du kan felsöka dina C#-UDF:er lokalt på samma sätt som du skulle felsöka standard-C#-kod.

  1. Lägga till brytpunkter i en C#-funktion.

    Add breakpoints to Stream Analytics user-defined function in Visual Studio

  2. Starta felsökningen genom att trycka på F5. Programmet stoppas vid brytpunkterna som förväntat.

    View Stream Analytics user-defined function debugging results

Publicera ditt jobb på Azure

När du har testat din fråga lokalt väljer du skicka till Azure i skriptredigeraren för att publicera projektet på Azure.

Submit your Stream Analytics Edge job to Azure from Visual Studio

Distribuera till IoT Edge-enheter

Om du väljer att skapa ett Stream Analytics Edge-jobb kan det nu distribueras som en IoT Edge-modul. Följ snabbstarten om IoT Edge för att skapa en IoT-hubb, registrera en IoT Edge-enhet och installera och starta IoT Edge-körningen på din enhet. Följ sedan självstudien om att distribuera jobbet om du vill distribuera ditt Stream Analytics-jobb som en IoT Edge-modul.

Nästa steg

I den här självstudien skapade du en enkel C#-användardefinierad funktion med hjälp av CodeBehind, publicerade jobbet till Azure och distribuerade jobbet till Azure- eller IoT Edge-enheten.

Om du vill veta mer om de olika sätten att använda användardefinierade C#-funktioner för Stream Analytics-jobb fortsätter du till den här artikeln: