Tutoriel : Écrire une fonction C# définie par l’utilisateur pour un travail Azure Stream Analytics (préversion)

Important

Les fonctions définies par l’utilisateur .Net Standard pour Azure Stream Analytics seront supprimées le 30 septembre 2024. Après cette date, il ne sera pas possible d’utiliser la fonctionnalité. Veuillez effectuer la transition vers les fonctions définies par l’utilisateur JavaScript pour Azure Stream Analytics.

Les fonctions C# définies par l’utilisateur créées dans Visual Studio vous permettent d’étendre le langage de requête Azure Stream Analytics avec vos propres fonctions. Vous pouvez réutiliser le code existant (y compris les DLL) et utiliser une logique mathématique ou complexe avec C#. Il existe trois façons d’implémenter des fonctions définies par l’utilisateur :

  • Fichiers code-behind dans un projet Stream Analytics
  • UDF d’un projet C# local
  • UDF d’un package existant à partir d’un compte de stockage.

Ce tutoriel utilise la méthode code-behind pour implémenter une fonction C# de base. La fonctionnalité de fonction définie par l’utilisateur pour les travaux Stream Analytics est actuellement disponible en préversion et ne doit pas être utilisée dans des charges de travail de production.

Dans ce tutoriel, vous allez apprendre à :

  • Créer une fonction définie par l’utilisateur C# à l’aide de code-behind.
  • Tester votre travail Stream Analytics localement.
  • Publier votre travail sur Azure.

Prérequis

Avant de commencer, veillez à effectuer les prérequis suivants :

Créez un conteneur dans votre compte Stockage Azure.

Le conteneur que vous créez sert à stocker le package C# compilé. Si vous créez un travail de périphérie, ce compte de stockage est également utilisé pour déployer le package sur votre appareil IoT Edge. Utilisez un conteneur dédié pour chaque travail Stream Analytics. La réutilisation du même conteneur pour plusieurs travaux de périphérie Stream Analytics n’est pas prise en charge. Si vous avez déjà un compte de stockage avec des conteneurs existants, vous pouvez les utiliser. Sinon, vous devez créer un conteneur.

Créer un projet Stream Analytics dans Visual Studio

  1. Démarrez Visual Studio.

  2. Sélectionnez Fichier > Nouveau > Projet.

  3. Dans la liste des modèles sur la gauche, sélectionnez Stream Analytics, puis Application de périphérie Azure Stream Analytics ou Application Azure Stream Analytics.

  4. Entrez les éléments Nom, Emplacement et Nom de la solution de votre projet, puis sélectionnez OK.

    Create an Azure Stream Analytics Edge project in Visual Studio

Configurer le chemin du package d’assembly

  1. Ouvrez Visual Studio et accédez à l’Explorateur de solutions.

  2. Double-cliquez sur le fichier de configuration du travail, JobConfig.json.

  3. Développez la section Configuration du code défini par l’utilisateur et remplissez la configuration avec les valeurs suggérées suivantes :

    Paramètre Valeur suggérée
    Ressource des paramètres de stockage généraux Choisir une source de données du compte actuel
    Abonnement des paramètres de stockage généraux < votre abonnement >
    Compte de stockage des paramètres de stockage généraux < votre compte de stockage >
    Ressource des paramètres de stockage de code personnalisé Choisir une source de données du compte actuel
    Compte de stockage des paramètres de stockage de code personnalisé < votre compte de stockage >
    Conteneur des paramètres de stockage de code personnalisé < votre conteneur de stockage >

Écrire une fonction C# définie par l’utilisateur avec du code-behind

Un fichier code-behind est un fichier C# associé à un seul script de requête ASA. Visual Studio Tools compresse automatiquement le fichier code-behind et le charge sur votre compte de stockage Azure au moment de l’envoi. Toutes les classes doivent être définies en tant que classes publiques et tous les objets doivent être définis en tant qu’objets publics statiques.

  1. Dans l’Explorateur de solutions, développez Script.asql pour rechercher le fichier code-behind Script.asaql.cs.

  2. Remplacez le code par l’exemple suivant :

        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; 
                } 
            } 
        } 
    

Implémenter la fonction définie par l’utilisateur

  1. Dans l’Explorateur de solutions, ouvrez le fichier Script.asaql.

  2. Remplacez la requête existante par la requête suivante :

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

Test local

  1. Téléchargez l’exemple de fichier de données du simulateur de température.

  2. Dans l’Explorateur de solutions, développez Entrées, cliquez avec le bouton droit sur Input.json, puis sélectionnez Ajouter une entrée locale.

    Add local input to Stream Analytics job in Visual Studio

  3. Spécifiez le chemin du fichier de l’entrée locale pour les exemples de données que vous avez téléchargées et cliquez sur Enregistrer.

    Local input configuration for Stream Analytics job in Visual Studio

  4. Cliquez sur Exécuter localement dans l’éditeur de script. Une fois que l’exécution locale a enregistré les résultats de la sortie, appuyez sur n’importe quelle touche pour les afficher sous forme de tableau.

    Run Azure Stream Analytics job locally with Visual Studio

  5. Vous pouvez également sélectionner Ouvrir le dossier de résultats pour voir les fichiers bruts au format JSON et CSV.

    View results of local Azure Stream Analytics job with Visual Studio

Déboguer une fonction définie par l’utilisateur

Vous pouvez déboguer votre fonction C# définie par l’utilisateur localement de la même façon que du code C# standard.

  1. Ajoutez des points d’arrêt à votre fonction C#.

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

  2. Appuyez sur F5 pour démarrer le débogage. Le programme s’arrête sur vos points d’arrêt comme prévu.

    View Stream Analytics user-defined function debugging results

Publier votre travail sur Azure

Une fois que vous avez testé votre requête localement, sélectionnez Envoyer sur Azure dans l’éditeur de script pour publier le travail sur Azure.

Submit your Stream Analytics Edge job to Azure from Visual Studio

Déployer sur des appareils IoT Edge

Si vous avez choisi de générer un travail de périphérie Stream Analytics, vous pouvez à présent le déployer en tant que module IoT Edge. Suivez le guide de démarrage rapide sur IoT Edge pour créer un hub IoT, inscrire un appareil IoT Edge, et installer et démarrer le runtime IoT Edge sur votre appareil. Ensuite, suivez le tutoriel Déployer la tâche pour déployer votre travail Stream Analytics en tant que module IoT Edge.

Étapes suivantes

Dans ce tutoriel, vous avez créé une fonction C# définie par l’utilisateur simple à l’aide de code-behind, publié votre travail sur Azure, puis déployé celui-ci sur Azure ou sur un appareil IoT Edge.

Pour en savoir plus sur les différentes façons d’utiliser des fonctions C# définies par l’utilisateur pour des travaux Stream Analytics, passez à cet article :