Zelfstudie: Een door de gebruiker gedefinieerde C#-functie schrijven voor een Azure Stream Analytics-taak (preview)
Belangrijk
Door de gebruiker gedefinieerde .Net Standard-functies voor Azure Stream Analytics worden op 30 september 2024 buiten gebruik gesteld. Na die datum is het niet mogelijk om de functie te gebruiken. Overgang naar door de gebruiker gedefinieerde JavaScript-functies voor Azure Stream Analytics.
Met door de gebruiker gedefinieerde C#-functies (UDF’s) die zijn gemaakt in Visual Studio kunt u de Azure Stream Analytics-querytaal uitbreiden met uw eigen functies. U kunt bestaande code (inclusief DLL-bestanden) opnieuw gebruiken en wiskundige of complexe logica gebruiken met C#. Er zijn drie manieren waarop UDF's kunnen worden geïmplementeerd:
- CodeBehind-bestanden in een Stream Analytics-project
- UDF's van een lokaal C#-project
- UDF's van een bestaand pakket vanuit een opslagaccount.
In deze zelfstudie wordt de CodeBehind-methode gebruikt om een eenvoudige C#-functie te implementeren. De UDF-functie voor Stream Analytics-taken is momenteel in de previewfase en mag niet worden gebruikt voor productieworkloads.
In deze zelfstudie leert u het volgende:
- Een door de gebruiker gedefinieerde C#-functie maken met CodeBehind.
- Uw Stream Analytics-taak lokaal testen.
- Uw job naar Azure publiceren.
Vereisten
Voordat u begint, moet aan de volgende vereisten zijn voldaan:
- Als u nog geen Azure-abonnement hebt, maakt u een gratis account.
- Installeer Stream Analytics-hulpprogramma’s voor Visual Studio en de workload Azure-ontwikkeling of Gegevensopslag en verwerking.
- Bekijk de bestaande ontwikkelhandleiding voor Stream Analytics Edge als u een IoT Edge-taak bouwt.
Een container in uw Azure Storage-account maken
De container die u maakt, wordt gebruikt om het gecompileerde C#-pakket op te slaan. Als u een Edge-taak maakt, wordt dit opslagaccount ook gebruikt om het pakket te implementeren op uw IoT Edge-apparaat. Gebruik een specifieke container voor elke Stream Analytics-taak. Het hergebruik van dezelfde container voor meerdere Stream Analytics Edge-taken wordt niet ondersteund. Als u al een opslagaccount met bestaande containers hebt, kunt u die gebruiken. Zo niet, dan moet u een nieuwe container maken.
Een Stream Analytics-project in Visual Studio aanmaken
Start Visual Studio.
Selecteer Bestand > nieuw > project.
Selecteer Stream Analyticsin de sjablonenlijst aan de linkerkant en selecteer vervolgens Azure Stream Analytics Edge Application of Azure Stream Analytics Application.
Voer de Naam, Locatieen Oplossingsnaam van het project in en selecteer OK.
Pad van assembly-pakket configureren
Open Visual Studio en ga naar de Solution Explorer.
Dubbelklik op het taakconfiguratiebestand
JobConfig.json
.Vouw de sectie Configuratie van de door de gebruiker gedefinieerde code uit en vul de configuratie in met de volgende voorgestelde waarden:
Instelling Voorgestelde waarde Resource globale opslaginstellingen Kies gegevensbron van het huidige account Abonnement voor globale opslaginstellingen < uw abonnement > Globale opslaginstellingen opslagaccount < uw opslagaccount > Resource aangepaste code opslaginstellingen Kies gegevensbron van het huidige account Aangepaste code opslaginstellingen opslagaccount < uw opslagaccount > Container aangepaste code opslaginstellingen < uw opslagcontainer >
Een C#-UDF schrijven met CodeBehind
Een CodeBehind-bestand is een C#-bestand dat is gekoppeld aan een enkel ASA-queryscript. Visual Studio-hulpprogramma's zipt automatisch het CodeBehind-bestand en uploadt het naar uw Azure-opslagaccount na verzending. Alle klassen moeten zijn gedefinieerd als openbaar en alle objecten moeten zijn gedefinieerd als statisch openbaar.
Vouw in Solution ExplorerScript.asql uit om het CodeBehind-bestand Script.asaql.cs te zoeken.
Vervang de code door het volgende voorbeeld:
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; } } }
De UDF implementeren
Open in Solution Explorer het bestand Script.asaql.
Vervang de bestaande query door de volgende query:
SELECT machine.temperature, udf.ASAEdgeUDFDemo_Class1_SquareFunction(try_cast(machine.temperature as bigint)) INTO Output FROM Input
Lokaal testen
Download het bestand met voorbeeldgegevens voor de temperatuursimulator.
Vouw in Solution ExplorerInvoer uit, klik met de rechtermuisknop op Input.json en selecteer Lokale invoer toevoegen.
Geef het pad van het lokale invoerbestand op voor de voorbeeldgegevens die u hebt gedownload en selecteer Opslaan.
Klik op Lokaal uitvoeren in de scripteditor. Nadat de resultaten van het uitvoeren zijn opgeslagen, drukt u op een willekeurige toets om de resultaten weer te geven in tabelindeling.
U kunt ook Map met resultaten openen om de onbewerkte bestanden in JSON- en CSV-indeling weer te geven.
Fouten opsporen in een UDF
U kunt lokaal fouten opsporen in uw C# UDF, op dezelfde manier als dat u fouten opspoort in standaard C#-code.
Onderbrekingspunten in uw C#-functie toevoegen.
Druk op F5 om de foutopsporing te starten. Het programma stopt op uw onderbrekingspunten zoals verwacht.
Uw taak publiceren naar Azure
Nadat u de query lokaal hebt getest, selecteert u Verzenden naar Azure in de scripteditor om de taak naar Azure te publiceren.
Implementeren naar IoT Edge-apparaten
Als u ervoor kiest om een Stream Analytics Edge-taak te bouwen, kan deze nu worden geïmplementeerd als een IoT Edge-module. Volg de IoT Edge-snelstart om een IoT Hub te maken, een IoT Edge-apparaat te registeren en de IoT Edge-runtime op uw apparaat te installeren en starten. Volg vervolgens de zelfstudie de taak implementeren om uw Stream Analytics-taak als een IoT Edge-module te implementeren.
Volgende stappen
In deze zelfstudie hebt u een eenvoudige door de gebruiker gedefinieerde C#-functie aangemaakt met CodeBehind, uw taak gepubliceerd naar Azure en de taak geïmplementeerd op Azure of IoT Edge-apparaten.
Als u meer wilt weten over de verschillende manieren waarop u door de gebruiker gedefinieerde C#-functies voor Stream Analytics-taken kunt gebruiken, gaat u verder met het volgende artikel: