共用方式為

从任务访问参数值

本文介绍如何从任务中的代码访问参数值,包括 Databricks 笔记本、Python 脚本和 SQL 文件。

参数包括用户定义的参数、来自上游任务的值以及作业生成的元数据值。 请参阅参数化作业

虽然详细信息因 任务类型而异,但有四种常用方法用于从源代码引用参数值:

在每种情况下,都引用参数的键来访问其值。 该键有时称为参数的名称。

在笔记本中的代码中使用 dbutils

任务中运行的笔记本代码可以使用 dbutils 库访问参数的值。 以下示例演示如何使用 Python 中的 dbutils 来获取传递到笔记本任务 year_param 任务参数的值。

# Retrieve a job-level parameter
year_value = dbutils.widgets.get("year_param")

# Use the value in your code
display(babynames.filter(babynames.Year == year_value))

按名称访问参数。 如果你有具有相同名称的任务参数和作业参数,则会提取作业参数。

上述代码在独立笔记本中运行时生成错误,而不是作为作业的一部分运行,因为参数不会发送到独立笔记本中。 可以使用以下代码为 year_param 参数设置默认值:

# Set a default (for when not running in a job)
dbutils.widgets.text("year_param", "2012", "Year Parameter")

# Retrieve a job-level parameter (will use default if it doesn't exist)
year_value = dbutils.widgets.get("year_param")

# Use the value in your code
display(babynames.filter(babynames.Year == year_value))

虽然这有助于在作业外部进行测试,但当任务或作业参数未正确设置时,它也有隐藏的缺点。

在 SQL 笔记本中使用命名参数

在笔记本任务中运行 SQL 时,可以使用 命名参数 语法来访问任务参数。 例如,若要访问名为 year_param的任务参数,可以在查询中使用 :year_param 来获取其值:

SELECT *
FROM baby_names_prepared
WHERE Year_Of_Birth = :year_param
GROUP BY First_Name

以代码参数的形式访问

对于某些任务类型参数,将作为参数传递给代码。 以下任务类型具有向其传递的参数:

  • Python script
  • Python Wheel
  • JAR
  • Spark Submit

有关详细信息,请参阅本文后面的任务类型 的详细信息。

对于 dbt 任务,参数是通过在任务中调用 dbt 命令传递的。

配置任务时使用动态值引用

在 Azure Databricks UI 中配置任务时,请使用 动态值引用 语法来访问作业参数或其他动态值。 若要访问作业参数,请使用语法:{{job.parameters.<name>}}。 例如,配置 Python wheel 任务时,可以设置参数的 输入来引用名为 year_param的 Job 参数,例如 year / Year_{{job.parameters.year_param}}。 除了在配置中提供对参数的访问权限外,动态值还可以访问有关作业或任务的其他数据,例如 {{job.id}}。 可以在任务配置中单击 {} 以获取可能的动态值列表,并将其插入到配置中。

按任务类型排序的详细信息

你使用的哪一种方法取决于任务类型。

任务类型 配置中的访问 在代码中访问
笔记本电脑 可以使用 Azure Databricks UI 中的动态值引用来配置笔记本(例如,引用任务参数值中的作业参数)。 当您手动运行任务时,可以使用使用不同设置的运行作业选项来覆盖或添加额外参数。 可以在笔记本中为 SQL 使用命名参数,也可以在代码中使用 dbutils.widgets
Python 脚本 任务中定义的参数作为参数传递给脚本。 可以在 参数 文本框中使用动态值引用。 参数可以读取为位置参数,也可以使用 Python 中的 argparse 模块进行分析。
Python wheel 任务定义中定义的参数作为关键字参数传递给代码。 Python wheel 文件必须配置为接受关键字参数。 可以在参数的值中使用动态值引用。 作为脚本的关键字参数访问。 若要查看在 Python 滚轮文件中打包的 Python 脚本中读取参数的示例,请参阅 在 Azure Databricks 作业中使用 Python 滚轮文件。
SQL 可以在任务配置中使用动态值引用。 使用命名参数访问参数值。
管道 管道不支持将参数传递给任务。 不支持。
仪表板 仪表板任务不支持将参数传递给任务。 不支持。
Power BI Power BI 任务不支持将参数传递给任务。 不支持。
dbt 配置任务时,可以使用动态值引用将参数作为 dbt 命令传递。 dbt 命令的形式访问。
配置任务时,可以使用动态值引用将参数作为参数传递到 参数 文本框中。 形参作为 main 类的 main 方法的实参访问。
Spark 提交 配置任务时,可以使用动态值引用将参数作为参数传递到 参数 文本框中。 形参作为 main 类的 main 方法的实参访问。
运行作业 配置任务时,可以使用动态值引用创建一组 作业参数。 这些值可以包括动态值引用。 不適用。
If/else 条件 可以在配置任务时使用动态值引用,例如,在 条件中。 不適用。
对于每个 在为任务配置输入时,可以使用动态值引用。 嵌套任务接收一个输入作为每个嵌套任务迭代的任务参数。 嵌套任务根据任务类型来访问参数。