Partager via


Fonctions définies par l’utilisateur dans Azure Stream Analytics

Le langage de requête de type SQL dans Azure Stream Analytics facilite la mise en œuvre d’une logique d’analytique en temps réel sur les données de streaming. Stream Analytics offre une flexibilité supplémentaire par le biais de fonctions personnalisées qui sont appelées dans votre requête. L’exemple de code suivant est une fonction définie par l’utilisateur appelée sampleFunction qui accepte un paramètre, chaque enregistrement d’entrée que le travail reçoit, et le résultat est écrit dans la sortie en tant que sampleResult.

SELECT 
    UDF.sampleFunction(InputStream) AS sampleResult 
INTO 
    output 
FROM 
    InputStream 

Types de fonctions

Azure Stream Analytics prend en charge les quatre types de fonction suivants :

  • Fonctions JavaScript définies par l’utilisateur
  • Agrégats JavaScript définis par l’utilisateur
  • Fonctions C# définies par l’utilisateur (à l’aide de Visual Studio)
  • Azure Machine Learning

Vous pouvez utiliser ces fonctions pour des scénarios tels que l’évaluation en temps réel à l’aide de modèles Machine Learning, de manipulations de chaînes, de calculs mathématiques complexes, d’encodage et de décodage de données.

Important

Les fonctions définies par l’utilisateur C# pour Azure Stream Analytics seront supprimées le 30 septembre 2024. Après cette date, il ne sera pas possible d’utiliser la fonctionnalité.

Limites

Les fonctions définies par l’utilisateur sont sans état et la valeur de retour ne peut être qu’une valeur scalaire. Vous ne pouvez pas appeler des points de terminaison REST externes à partir de ces fonctions définies par l’utilisateur, car cela impacterait probablement les performances de votre travail.

Azure Stream Analytics ne conserve pas un enregistrement de tous les appels de fonctions et des résultats retournés. Pour garantir la répétabilité (par exemple, la réexécution de votre travail à partir d’un horodatage plus ancien reproduit les mêmes résultats), n’utilisez pas de fonctions telles que Date.GetData() ou Math.random(), car ces fonctions ne retournent pas le même résultat pour chaque appel.

Journaux d’activité de ressources

Toutes les erreurs d’exécution sont considérées comme irrécupérables et remontées par le biais des journaux d’activité et de ressources. Il est recommandé que votre fonction gère toutes les exceptions et erreurs et retourne un résultat valide à votre requête. Cela empêche votre travail de passer à un état d’échec.

Gestion des exceptions

Toute exception pendant le traitement des données est considérée comme un échec catastrophique lors de l’utilisation de données dans Azure Stream Analytics. Les fonctions définies par l’utilisateur ont un potentiel plus élevé de lever des exceptions et de provoquer l’arrêt du traitement. Pour éviter ce problème, utilisez un bloc try-catch en JavaScript ou C# afin d’intercepter les exceptions pendant l’exécution du code. Les exceptions interceptées peuvent être journalisées et traitées sans entraîner de défaillance du système. Il est recommandé de toujours encapsuler votre code personnalisé dans un bloc try-catch pour éviter de lever des exceptions inattendues pour le moteur de traitement.

Étapes suivantes