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

适用于:✅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 Explorer:Visual Studio Code 是通过 debug_python.py 脚本自动启动的。
    • 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 配置。 调试器随即启动,并自动设置断点来调试内联代码。

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 将进行调试并在调试控制台中输出“result”数据帧:

    VS Code 调试。

注意

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

注意

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

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