我正在 Databricks Workflow UI 中设置作业,并且我想在每次作业运行时动态地传递参数值,例如当前日期 (run_date)。在 Azure 数据工厂中,我可以使用 @utcnow() 等表达式在运行时计算此值。但是,我想在 Databricks 中实现相同的目标,其中 run_date 参数将在运行时自动计算并传递,而无需对其进行硬编码或手动更新。
比如笔记本中,我目前就是用这个来获取参数的:
run_date = dbutils.widgets.get("run_date")
有没有办法在 Databricks 工作流 UI 中配置动态参数,或者这是否需要外部处理(例如,通过脚本或 API)?
当前日期 (run_date) 您可以使用语法
{{runtime.parameters.parameterName}}
并在 UI 中创建一个参数并传递密钥。我已经尝试过以下代码:
import datetime
import requests
Datetoday = datetime.datetime.utcnow().strftime('%Y-%m-%d')
job_params = {
"job_id": 308445560035795,
"parameters": {
"parameterName": Datetoday
}
}
response = requests.post(
'https://<Your Databricks instance>/api/2.0/jobs/run-now',
json=job_params,
auth=('token', '<Databricks token>')
)
print(response.json())
结果:
{'run_id': 40676880654841, 'number_in_job': 40676880654841}
在上面将当前日期格式化为所需的格式 定义作业参数,包括动态设置的参数 使用动态参数调用 API 来触发作业