You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Synapse笔记本中通过Python SDK获取管道运行ID?

如何在Synapse Notebook中通过Python SDK获取当前Pipeline运行ID

完全可以通过Python代码直接获取当前触发Notebook的Pipeline运行ID,以下是两种原生、无额外依赖的实现方式:

方法1:使用Synapse原生工具mssparkutils(推荐)

mssparkutils是Synapse内置的工具集,专门用于处理环境变量、文件操作等场景,直接调用getPipelineRunId()就能拿到运行ID:

import pandas as pd

# 获取Pipeline运行ID(仅当Notebook被Pipeline调用时返回有效值)
pipeline_run_id = mssparkutils.env.getPipelineRunId()

# 处理手动运行场景(可选)
if not pipeline_run_id:
    pipeline_run_id = f"manual_run_{pd.Timestamp.now().strftime('%Y%m%d%H%M%S')}"

# 读取并预处理Parquet文件(你的原有逻辑)
processed_df = pd.read_parquet("abfss://<your-container>@<your-storage-account>.dfs.core.windows.net/<input-path>")

# 将运行ID添加到DataFrame
processed_df['pipeline_run_id'] = pipeline_run_id

# 保存到目标Blob
processed_df.to_parquet("abfss://<your-container>@<your-storage-account>.dfs.core.windows.net/<output-path>")

方法2:读取Spark配置参数

当Notebook被Pipeline活动调用时,Synapse会自动将运行ID注入到Spark配置的spark.synapse.pipelinerunid项中,你可以通过SparkSession读取这个参数:

from pyspark.sql import SparkSession
import pandas as pd

spark = SparkSession.builder.getOrCreate()
# 获取运行ID,默认值设为空字符串
pipeline_run_id = spark.conf.get("spark.synapse.pipelinerunid", "")

# 后续逻辑同方法1:处理手动运行、添加到DataFrame、保存

注意事项

  • 两种方法仅在Notebook被Pipeline活动触发运行时会返回真实的Pipeline运行ID;如果是手动打开Notebook执行,会返回空字符串,建议添加手动运行的 fallback 逻辑。
  • 获取到的运行ID格式和系统变量@pipeline().RunId返回的完全一致,可直接用于关联Pipeline运行日志或数据溯源。

内容的提问来源于stack exchange,提问作者Gabriel Padilha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:40:55