你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Visual Studio Code 调试 Kusto 查询语言中的内联 Python

使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息
适用于: ✅ Microsoft Fabric ✅ Azure 数据资源管理器

可以使用 python() 插件在 Kusto 查询语言查询中嵌入 Python 代码。 插件运行时托管在沙盒中,这是一个独立且安全的 Python 环境。 python() 插件功能扩展了 Kusto 查询语言的本机功能,并提供了大量的 OSS Python 包。 使用此扩展,你可以在查询中运行高级算法,例如机器学习、人工智能、统计和时间系列。

Kusto 查询语言工具不适用于开发和调试 Python 算法。 因此,在喜欢的 Python 集成开发环境(如 Jupyter、PyCharm、Visual Studio 或 Visual Studio Code)上开发算法。 算法完成后,将其复制并粘贴到 KQL 中。 为了改进和简化此工作流,Kusto Explorer 或 Web UI 客户端可以与 Visual Studio Code 集成,以便创作和调试 KQL 内联 Python 代码。

注意

此工作流仅可用来调试相对较小的输入表(最大为几 MB)。 因此,可能需要限制用于调试的输入。 如果需要处理大型表,可以通过使用| take| samplewhere rand() < 0.x进行限制来调试它。

先决条件

在 Visual Studio Code 中启用 Python 调试

  1. 在客户端应用程序中,为包含内联 Python 的查询添加 set query_python_debug; 前缀

  2. 运行该查询。

    • Kusto 资源管理器:使用 debug_python.py 脚本自动启动 Visual Studio Code。
    • Kusto Web UI:
      1. 下载并保存 debug_python.pydf.txtkargs.txt。 在窗口中,选择“允许”。 将文件保存到所选目录中。
      2. 右键单击 debug_python.py 并使用 Visual Studio Code 打开。 debug_python.py 脚本包含来自 KQL 查询的内联 Python 代码(以模板代码作为前缀,用以初始化来自 df.txt 的数据帧和来自 kargs.txt 的参数字典)。
  3. 在 Visual Studio Code 中,启动 Visual Studio Code 调试器:运行>启动调试(F5),选择 Python 配置。 调试器启动并自动设置断点以调试内联代码。

  1. 在客户端应用程序中,为包含内联 Python 的查询添加 set query_python_debug; 前缀

  2. 运行该查询。

    • Kusto 资源管理器:使用 debug_python.py 脚本自动启动 Visual Studio Code。
    • KQL 查询集:
      1. 下载并保存 debug_python.pydf.txtkargs.txt。 在窗口中,选择“允许”。 将文件保存到所选目录中。
      2. 右键单击 debug_python.py 并使用 Visual Studio Code 打开。 debug_python.py 脚本包含来自 KQL 查询的内联 Python 代码(以模板代码作为前缀,用以初始化来自 df.txt 的数据帧和来自 kargs.txt 的参数字典)。
  3. 在 Visual Studio Code 中,启动 Visual Studio Code 调试器:运行>启动调试(F5),选择 Python 配置。 调试器启动并自动设置断点以调试内联代码。

Visual Studio Code 中的内联 Python 调试的工作原理是什么?

  1. 查询将在服务器中进行分析和执行,直至到达所需的 | evaluate python() 子句。
  2. 将调用 Python 沙盒,但不运行代码,而是对输入表、参数字典和代码进行序列化,然后将其发送回客户端。
  3. 这三个对象保存在三个文件中:df.txtkargs.txtdebug_python.py,这些文件位于所选目录 (Web UI) 或客户端 %TEMP% 目录 (Kusto Explorer) 中。
  4. Visual Studio 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. Visual Studio Code 已启动:

    启动 Visual Studio Code。

  4. Visual Studio Code 在调试控制台中调试并打印“结果”数据帧:

    VS Code 调试。

注意

Python 沙盒映像与你的本地安装之间可能存在差异。 通过对插件进行查询来检查特定包的沙盒映像

注意

如果启动 Visual Studio Code 调试会话时出错,请尝试将默认终端配置文件设置为命令提示符:

  • 按 CTRL + SHIFT + P 打开命令面板。
  • 搜索“终端: 选择默认配置文件”,然后选择“命令提示符”