使用 VS Code 對 Kusto 查詢語言內嵌 Python 進行偵錯

Azure Data Explorer 支援使用 python () 外掛程式執行內嵌在 Kusto 查詢語言 中的 Python 程式代碼。 外掛程式運行時間裝載於沙箱中,這是隔離且安全的 Python 環境。 python () 外掛程式功能可透過大型的 OSS Python 套件封存來擴充 Kusto 查詢語言 原生功能。 此延伸模組可讓您執行進階演算法,例如機器學習、人工智慧、統計和時間序列,作為查詢的一部分。

Kusto 查詢語言 工具不適合開發和偵錯 Python 演算法。 因此,在您的慣用 Python 集成開發環境中開發演算法,例如 Jupyter、PyCharm、VS 或 VS Code。 演算法完成時,複製並貼到 KQL。 為了改善和簡化此工作流程,Azure Data Explorer 支援 Kusto Explorer 或 Web UI 用戶端與 VS Code 之間的整合,以撰寫和偵錯 KQL 內嵌 Python 程式代碼。

注意

此工作流程只能用來對相對較小的輸入數據表進行偵錯, (最多 MB) 。 因此,您可能需要限制輸入以進行偵錯。 如果您需要處理大型數據表,請使用 、 | samplewhere rand() < 0.x來限制其偵錯| take

必要條件

在用戶端應用程式中執行查詢

  1. 在用戶端應用程式中,在包含內嵌 Python 的查詢前面加上 set query_python_debug;

  2. 執行查詢。

    • Kusto Explorer:VS Code 會自動使用 debug_python.py 腳本啟動。
    • Kusto Web UI:
      1. 下載並儲存 debug_python.pydf.txtkargs.txt。 在視窗中,選取 [ 允許]。 將檔案儲存 在選取的目錄中。

        Web UI 會下載內嵌 Python 檔案。

      2. 以滑鼠右鍵按兩下 debug_python.py ,然後以 VS Code 開啟。 debug_python.py 文稿包含來自 KQL 查詢的內嵌 Python 程式代碼,前面加上範本程式代碼,從 df.txt 初始化輸入數據框架,以及來自 kargs.txt的參數位典。

  3. 在 VS Code 中,啟動 VS Code 調試 程式:>偵錯 [開始偵錯 (F5) ],選取 [Python 組態]。 調試程式將會啟動並自動斷點,以偵錯內嵌程序代碼。

VS Code 中的內嵌 Python 偵錯如何運作?

  1. 查詢會在伺服器中剖析並執行,直到達到必要的 | evaluate python() 子句為止。
  2. 叫用 Python 沙箱,但不會執行程式碼,而是串行化輸入數據表、參數位典和程式代碼,並將其傳回用戶端。
  3. 這三個物件會儲存在三個檔案中: df.txtkargs.txtdebug_python.py 在選取的目錄 (Web UI) 或用戶端 %TEMP% 目錄中, (Kusto Explorer) 。
  4. VS Code 已啟動,並預先載入包含前置詞程式碼的 debug_python.py 檔案,以從其各自的檔案初始化 df 和 kargs,後面接著內嵌在 KQL 查詢中的 Python 腳本。

查詢範例

  1. 在用戶端應用程式中執行下列 KQL 查詢:

    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))
    

    請參閱產生的數據表:

    x x4
    1 1
    2 16
    3 81
    4 256
  2. 使用 set query_python_debug;在用戶端應用程式中執行相同的 KQL 查詢:

    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))
    
  3. VS Code 已啟動:

    啟動 VS Code。

  4. VS Code 會在偵錯控制台中偵錯並列印「結果」數據框架:

    VS Code 偵錯。

注意

Python 沙盒映像與本機安裝之間可能有差異。 藉由查詢外掛程式來檢查特定套件的沙箱映像

注意

如果啟動 VS 程式代碼偵錯工作階段時發生錯誤,請嘗試將預設終端機設定檔設定為命令提示字元:

  • 按 CTRL + SHIFT + P 以開啟命令選擇區。
  • 搜尋 「終端機:選取預設設定檔」,然後選取 [命令提示字元]