Debuggen von Kusto-Abfragesprache Inline-Python mit Visual Studio Code
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer
Sie können Python-Code mithilfe des Python()-Plug-Ins in Kusto-Abfragesprache Abfragen einbetten. Die Runtime des Plugins wird in einer Sandbox gehostet. Dabei handelt es sich um eine isolierte und sichere Python-Umgebung. Die Python()-Plug-In-Funktion erweitert Kusto-Abfragesprache native Funktionen mit dem riesigen Archiv von OSS Python-Paketen. Mithilfe dieser Erweiterung können Sie erweiterte Algorithmen im Rahmen der Abfrage ausführen, z. B. Maschinelles Lernen, Künstliche Intelligenz, Statistiken und Zeitreihen.
Kusto-Abfragesprache Tools eignen sich nicht für die Entwicklung und das Debuggen von Python-Algorithmen. Entwickeln Sie daher den Algorithmus in Ihrer bevorzugten Python-integrierten Entwicklungsumgebung wie Jupyter, PyCharm, Visual Studio oder Visual Studio Code. Sobald der Algorithmus fertig gestellt ist, kopieren Sie Ihn in KQL. Um diesen Workflow zu verbessern und zu optimieren, können Kusto Explorer- oder Web-UI-Clients in Visual Studio Code zum Erstellen und Debuggen von KQL-Inline-Python-Code integriert werden.
Hinweis
Dieser Workflow kann nur zum Debuggen relativ kleiner Eingabetabellen (nur wenige MB) verwendet werden. Daher müssen Sie die Eingabe für das Debuggen möglicherweise einschränken. Wenn Sie einer große Tabelle verarbeiten müssen, beschränken Sie sie mit | take
, | sample
oder where rand() < 0.x
auf das Debuggen.
Voraussetzungen
- Ein Azure-Abonnement. Erstellen Sie ein kostenloses Azure-Konto.
- Schnellstart: Erstellen eines Azure Data Explorer-Clusters und einer Datenbank. Erstellen eines Clusters und einer Datenbank
- Installieren Sie die Anaconda-Distribution von Python. Klicken Sie in Erweiterte Optionen auf Add Anaconda to my PATH environment variable (Anaconda zu meiner PATH-Umgebungsvariable hinzufügen).
- Installieren Sie Visual Studio Code.
- Installieren Sie die Python-Erweiterung für Visual Studio Code.
- Aktivieren Sie das Python-Plug-In. Weitere Informationen finden Sie unter Verwalten von Spracherweiterungen in Ihrem Azure Data Explorer-Cluster.
- Ein Arbeitsbereich mit einer Microsoft Fabric-fähigen Kapazität.
- Eine Datenbank. Erstellen Sie eine KQL-Datenbank.
- Installieren Sie die Anaconda-Distribution von Python. Klicken Sie in Erweiterte Optionen auf Add Anaconda to my PATH environment variable (Anaconda zu meiner PATH-Umgebungsvariable hinzufügen).
- Installieren Sie Visual Studio Code.
- Installieren Sie die Python-Erweiterung für Visual Studio Code.
- Aktivieren Sie das Python-Plug-In.
Aktivieren des Python-Debuggings in Visual Studio Code
Fügen Sie in Ihrer Clientanwendung mit
set query_python_debug;
eine Abfrage mit Python-Inlinecode als Präfix hinzu.Abfrage ausführen.
- Kusto Explorer: Visual Studio Code wird automatisch mit dem debug_python.py Skript gestartet.
- Kusto Web UI:
- Laden Sie die Dateien debug_python.py, df.txt und kargs.txt herunter, und speichern Sie sie. Klicken Sie im angezeigten Fenster auf Zulassen. Speichern Sie die Dateien im ausgewählten Verzeichnis.
- Klicken Sie mit der rechten Maustaste auf debug_python.py, und öffnen Sie es mit Visual Studio Code. Das Skript debug_python.py enthält Python-Inlinecode aus der KQL-Abfrage mit dem Vorlagencode als Präfix, um den Eingabedatenrahmen aus df.txt und das Parameterverzeichnis aus kargs.txt zu initialisieren.
Starten Sie in Visual Studio Code den Visual Studio Code-Debugger: Starten Sie das Debuggen (F5) ausführen>, wählen Sie die Python-Konfiguration aus. Der Debugger startet und legt automatisch einen Haltepunkt fest, um den Inlinecode zu debuggen.
Fügen Sie in Ihrer Clientanwendung mit
set query_python_debug;
eine Abfrage mit Python-Inlinecode als Präfix hinzu.Abfrage ausführen.
- Kusto Explorer: Visual Studio Code wird automatisch mit dem debug_python.py Skript gestartet.
- KQL-Abfrageset:
- Laden Sie die Dateien debug_python.py, df.txt und kargs.txt herunter, und speichern Sie sie. Klicken Sie im angezeigten Fenster auf Zulassen. Speichern Sie die Dateien im ausgewählten Verzeichnis.
- Klicken Sie mit der rechten Maustaste auf debug_python.py, und öffnen Sie es mit Visual Studio Code. Das Skript debug_python.py enthält Python-Inlinecode aus der KQL-Abfrage mit dem Vorlagencode als Präfix, um den Eingabedatenrahmen aus df.txt und das Parameterverzeichnis aus kargs.txt zu initialisieren.
Starten Sie in Visual Studio Code den Visual Studio Code-Debugger: Starten Sie das Debuggen (F5) ausführen>, wählen Sie die Python-Konfiguration aus. Der Debugger startet und legt automatisch einen Haltepunkt fest, um den Inlinecode zu debuggen.
Wie funktioniert das Inline-Python-Debuggen in Visual Studio Code?
- Die Abfrage wird analysiert und auf dem Server ausgeführt, bis die erforderliche
| evaluate python()
-Klausel erreicht wird. - Die Python-Sandbox wird aufgerufen, anstatt den Code auszuführen, werden jedoch die Eingabetabelle, das Parameterverzeichnis und der Code serialisiert und an den Client zurückgesendet.
- Diese drei Objekte werden in den drei Dateien df.txt, kargs.txt und debug_python.py im ausgewählten Verzeichnis (Webbenutzeroberfläche) oder im Verzeichnis „%TEMP%“ des Clients (Kusto-Explorer) gespeichert.
- Visual Studio Code wird gestartet, vorinstalliert mit der debug_python.py Datei, die einen Präfixcode enthält, um df und kargs aus ihren jeweiligen Dateien zu initialisieren, gefolgt von dem Python-Skript, das in die KQL-Abfrage eingebettet ist.
Abfragebeispiel
Führen Sie die folgende KQL-Abfrage in Ihrer Clientanwendung aus:
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))
Daraus resultiert die folgende Tabelle:
x x4 1 1 2 16 3 81 4 256 Führen Sie dieselbe KQL-Abfrage mit
set query_python_debug;
in Ihrer Clientanwendung aus: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))
Visual Studio Code wird gestartet:
Visual Studio Code Debugs and prints 'result' dataframe in the debug console:
Hinweis
Zwischen dem Python-Sandboximage und Ihrer lokalen Installation können Unterschiede bestehen. Überprüfen Sie das Sandboximage auf bestimmte Pakete, indem Sie das Plugin abfragen.
Hinweis
Falls beim Starten der Visual Studio Code-Debugsitzung Fehler auftreten, versuchen Sie, das Standardterminalprofil auf die Eingabeaufforderung festzulegen:
- Drücken Sie STRG+UMSCHALT+P, um die Befehlspalette zu öffnen.
- Suchen Sie nach "Terminal: Standardprofil auswählen" und wählen Sie "Eingabeaufforderung" aus.