如何在Azure Data Factory中创建遍历Databricks指定文件夹Notebook的ForEach活动
实现方案:用ForEach活动自动执行Databricks指定文件夹下的所有Notebook
步骤1:获取Databricks指定文件夹的Notebook列表
在Synapse管道中添加Web活动,配置参数如下:
- URL:
https://<你的Databricks工作区URL>/api/2.0/workspace/list
(工作区URL格式通常为adb-xxxxxxx.azuredatabricks.net,替换为实际值) - 请求方法:POST
- 请求头:添加键
Authorization,值为Bearer <你的Databricks令牌>
(令牌需在Databricks工作区的用户设置中生成,权限需包含工作区读取权限) - 请求体:以JSON格式指定目标文件夹路径:
例如目标文件夹是{ "path": "/<目标文件夹路径>" }/ETL/Production,直接填入该路径即可。
- URL:
添加Set Variable活动处理Web活动的返回结果:
- 先创建一个数组类型的管道变量(如
notebookList) - 在Set Variable的值中使用表达式过滤出仅Notebook类型的对象:
@filter(activity('Web活动名称').output.objects, item().object_type == 'NOTEBOOK')
- 先创建一个数组类型的管道变量(如
步骤2:用ForEach活动遍历执行Notebook
添加ForEach活动,核心配置:
- 遍历项:选择刚才创建的数组变量
@variables('notebookList') - 执行模式:勾选
Sequential则按顺序执行Notebook,取消勾选则并行执行(默认最多20个并发)
- 遍历项:选择刚才创建的数组变量
在ForEach活动内部添加Databricks Notebook活动,配置执行参数:
- Notebook路径:用表达式引用当前遍历项的路径
@item().path - 集群、参数等其他配置,与你手动添加Notebook活动时的设置保持一致即可。
- Notebook路径:用表达式引用当前遍历项的路径
额外注意事项
- 确保Databricks令牌拥有读取目标文件夹、执行Notebook的足够权限
- 可在ForEach内部添加错误处理逻辑(如失败时触发通知活动),避免单个Notebook执行失败导致整个管道终止
- 确认Databricks路径格式正确,必须以
/开头,与Web活动中填写的路径规则一致 - 管道启动前需初始化数组变量,避免空值导致ForEach活动无法执行
内容的提问来源于stack exchange,提问作者Salah K.
相关产品推荐
相关产品推荐

