Déboguer le code Python inline dans le langage de requête Kusto avec VS Code
Azure Data Explorer prend en charge l’exécution de code Python incorporé dans Langage de requête Kusto à l’aide du plug-in python(). Le runtime du plug-in est hébergé dans un bac à sable, un environnement Python isolé et sécurisé. La fonctionnalité de plug-in Python() étend Langage de requête Kusto fonctionnalités natives avec l’énorme archive des packages OsS Python. Cette extension vous permet d’exécuter des algorithmes avancés (machine learning, intelligence artificielle, statistiques et série chronologique) dans le cadre de la requête.
Langage de requête Kusto outils ne sont pas pratiques pour développer et déboguer des algorithmes Python. Par conséquent, développez l’algorithme dans votre environnement de développement intégré Python préféré, comme Jupyter, PyCharm, VS ou VS Code. Une fois l’algorithme terminé, copiez et collez dans KQL. Pour améliorer et rationaliser ce workflow, Azure Data Explorer prend en charge l’intégration entre Kusto Explorer ou les clients d’interface utilisateur web et VS Code pour la création et le débogage du code Python inline dans KQL.
Notes
Ce workflow peut uniquement être utilisé pour déboguer des tables d’entrée relativement petites (jusqu’à quelques Mo). C’est pourquoi vous devrez peut-être limiter l’entrée pour le débogage. Si vous avez besoin de traiter une table volumineuse, limitez-la au débogage à l’aide de | take
, | sample
ou where rand() < 0.x
.
Prérequis
- Un abonnement Azure. Créez un compte Azure gratuit.
- Un cluster et une base de données Azure Data Explorer. Créez un cluster et une base de données.
- Installez la distribution Anaconda Python. Dans Options avancées, sélectionnez Ajouter Anaconda à ma variable d’environnement PATH.
- Installez Visual Studio Code.
- Installez l’extension Python pour Visual Studio Code.
Exécuter votre requête dans votre application cliente
Dans votre application cliente, préfixez une requête contenant du code Python inline avec
set query_python_debug;
Exécute la requête.
- Kusto Explorer : VS Code se lance automatiquement avec le script debug_python.py.
- Interface utilisateur web Kusto :
Téléchargez et enregistrez debug_python.py, df.txt et kargs.txt. Dans la fenêtre, sélectionnez Autoriser. Enregistrez les fichiers dans le répertoire sélectionné.
Cliquez avec le bouton droit sur debug_python.py et ouvrez avec VS Code. Le script debug_python.py contient le code Python inline, issu de la requête KQL, préfixé par le code de modèle pour initialiser le dataframe d’entrée à partir de df.txt et le dictionnaire de paramètres à partir de kargs.txt.
Dans VS Code, lancez le débogueur de VS Code : Déboguer>Démarrer le débogage (F5) et sélectionnez la configuration Python. Le débogueur démarre et accède automatiquement à un point d’arrêt pour déboguer le code inline.
Comment le débogage de code Python inclus fonctionne-t-il dans VS Code ?
- La requête est analysée et exécutée sur le serveur jusqu’à ce que la clause
| evaluate python()
nécessaire soit atteinte. - Le bac à sable Python est appelé, mais au lieu d’exécuter le code, il sérialise la table d’entrée, le dictionnaire de paramètres et le code, puis les renvoie au client.
- Ces trois objets sont enregistrés dans trois fichiers : df.txt, kargs.txt et debug_python.py dans le répertoire sélectionné (interface utilisateur web) ou dans le répertoire %TEMP% du client (Kusto Explorer).
- VS Code se lance, préchargé avec le fichier debug_python.py qui contient un code de préfixe pour initialiser df et kargs à partir de leurs fichiers respectifs, suivi du script Python incorporé dans la requête KQL.
Exemple de requête
Exécutez la requête KQL suivante dans votre application cliente :
range x from 1 to 4 step 1 | evaluate python(typeof(*, x4:int), 'exp = kargs["exp"]\n' 'result = df\n' 'result["x4"] = df["x"].pow(exp)\n' , bag_pack('exp', 4))
Consultez le tableau de résultats :
x x4 1 1 2 16 3 81 4 256 Exécutez la même requête KQL dans votre application cliente en utilisant
set query_python_debug;
:set query_python_debug; range x from 1 to 4 step 1 | evaluate python(typeof(*, x4:int), 'exp = kargs["exp"]\n' 'result = df\n' 'result["x4"] = df["x"].pow(exp)\n' , bag_pack('exp', 4))
VS Code se lance :
VS Code débogue et imprime le dataframe 'result' dans la console de débogage :
Notes
Il peut y avoir des différences entre l’image du bac à sable Python et votre installation locale. Vérifiez l’image du bac à sable pour obtenir des packages spécifiques en interrogeant le plug-in.
Notes
En cas d’erreurs lors du lancement de la session de débogage vs code, essayez de définir le profil de terminal par défaut sur l’invite de commandes :
- Appuyez sur Ctrl + Maj + P pour ouvrir la palette de commandes.
- Recherchez « Terminal : Sélectionner le profil par défaut », puis sélectionnez « Invite de commandes »