使用 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
、| sample
或 where rand() < 0.x
限制对该表的调试。
先决条件
- Azure 订阅。 创建 Azure 帐户。
- Azure 数据资源管理器群集和数据库。 创建群集和数据库。
- 安装 Python Anaconda 分发版。 在“高级选项”中,选择“将 Anaconda 添加到我的 PATH 环境变量”。
- 安装 Visual Studio Code。
- 安装适用于 Visual Studio Code 的 Python 扩展。
- 启用 Python 插件。 有关详细信息,请参阅管理 Azure 数据资源管理器群集中的语言扩展。
在 Visual Studio Code 中启用 Python 调试
在客户端应用程序中,为包含内联 Python 的查询添加
set query_python_debug;
前缀运行该查询。
- Kusto Explorer:Visual Studio Code 是通过 debug_python.py 脚本自动启动的。
- Kusto Web UI:
- 下载并保存 debug_python.py、df.txt 和 kargs.txt。 在窗口中,选择“允许”。 将文件保存到所选目录中。
- 右键单击 debug_python.py 并使用 Visual Studio Code 将其打开。 debug_python.py 脚本包含来自 KQL 查询的内联 Python 代码(以模板代码作为前缀,用以初始化来自 df.txt 的数据帧和来自 kargs.txt 的参数字典)。
在 Visual Studio Code 中,启动 Visual Studio Code 调试器:运行>启动调试 (F5),选择 Python 配置。 调试器随即启动,并自动设置断点来调试内联代码。
Visual Studio Code 中的内联 Python 调试如何工作?
- 查询将在服务器中进行分析和执行,直至到达所需的
| evaluate python()
子句。 - 将调用 Python 沙盒,但不运行代码,而是对输入表、参数字典和代码进行序列化,然后将其发送回客户端。
- 这三个对象保存在三个文件中:df.txt、kargs.txt 和 debug_python.py,这些文件位于所选目录 (Web UI) 或客户端 %TEMP% 目录 (Kusto Explorer) 中。
- Visual Studio Code 会启动并预加载 debug_python.py 文件,该文件包含一个前缀代码用于初始化来自对应文件的 df 和 kargs,该代码后面是嵌入 KQL 查询的 Python 脚本。
查询示例
在客户端应用程序中运行以下 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 使用
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))
Visual Studio Code 启动:
Visual Studio Code 将进行调试并在调试控制台中输出“result”数据帧:
注意
Python 沙盒映像与你的本地安装之间可能存在差异。 通过对插件进行查询来检查特定包的沙盒映像。
注意
如果在启动 Visual Studio Code 调试会话时出错,请尝试将默认终端配置文件设置为命令提示符:
- 按 CTRL + SHIFT + P 打开命令面板。
- 搜索“终端: 选择默认配置文件”,然后选择“命令提示符”