如何在Azure Databricks笔记本中动态获取当前命令编号?
在Azure Databricks笔记本里获取当前命令编号的办法
先说结论:没有现成的dbutils命令能直接拿到单元格左侧显示的命令编号(比如你示例里的数字1)。不过有两种间接方式可以实现需求:
方式1:通过笔记本元数据+Workspace API解析
这个方法需要你有调用Databricks Workspace API的权限,步骤如下:
- 先获取当前笔记本的路径:
notebook_path = dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get() - 调用Workspace API读取笔记本源码内容(需要生成认证令牌):
import requests # 获取API令牌与工作区地址 token = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiToken().get() workspace_host = dbutils.notebook.entry_point.getDbutils().notebook().getContext().browserHostName().get() # 导出笔记本源码(SOURCE格式适合解析,针对Python笔记本) resp = requests.get( f"https://{workspace_host}/api/2.0/workspace/export", headers={"Authorization": f"Bearer {token}"}, params={"path": notebook_path, "format": "SOURCE"} ) - 解析返回的源码内容:按单元格分隔符
# COMMAND ----------分割内容,找到当前单元格对应的位置,索引值加1就是命令编号(编号从1开始)。
注:不同语言的笔记本可能使用不同的单元格分隔符,需要根据实际情况调整。
方式2:手动维护编号(简单易操作)
如果笔记本规模不大,直接在每个单元格开头手动定义编号变量是最省事的方案:
command_num = 1 print(command_num)
这种方式不需要额外权限或复杂逻辑,唯一的缺点是需要手动更新编号。
补充说明
单元格左侧的命令编号本质是笔记本内单元格的位置序号(或执行顺序),Databricks官方并未提供直接获取该编号的API,因此上述方法均为间接实现方案。
内容的提问来源于stack exchange,提问作者Mohammed Arif
相关产品推荐
相关产品推荐

