如何在Azure Data Factory中单次调用获取所有管道的活动信息
Azure Data Factory批量获取管道活动信息导出Parquet实现方案
核心逻辑:ADF暂无支持单次调用拉取所有pipelineRun对应全量活动数据的接口,你可以用ForEach并行迭代调用+动态输出的方案实现,适配你现有120条管道的量级完全无压力。
- 第一步:对已经通过Get Pipeline Run获取的全量管道运行数据做预处理,提取所有去重后的
pipelineRunId字段组成数组,作为后续迭代的输入参数。 - 第二步:添加
ForEach活动,将上一步输出的pipelineRunId数组设置为迭代项,将ForEach活动的并发度调整为最高值50,120个迭代项仅需2轮即可完成调用,效率远高于串行执行。 - 第三步:在ForEach活动内部添加Web活动,调用Get Pipeline Activities官方接口,接口配置如下:
接口请求地址:https://management.azure.com/subscriptions/{你的订阅ID}/resourceGroups/{你的资源组名称}/providers/Microsoft.DataFactory/factories/{你的ADF实例名称}/pipelineruns/@{item().pipelineRunId}/queryActivityRuns?api-version=2018-06-01
认证方式选择系统分配托管身份,资源参数填https://management.azure.com,需提前为该托管身份分配对应ADF实例的只读访问权限。 - 第四步:在Web活动后挂载Copy活动,将接口返回的活动列表数据集作为源,接收器指定你的ADLS Gen2存储路径,使用动态表达式
@{concat('activity_output/',item().pipelineRunId,'.parquet')}作为输出文件名,即可实现每个pipelineRunId对应生成独立的活动数据Parquet文件。 - 第五步:如果后续Power BI需要统一查询全量活动数据,可以额外新增一个Copy活动,将该输出目录下的所有Parquet文件合并为单个全量Parquet文件,或直接让PBI读取该目录下的所有文件做自动合并即可。
注意:ADF查询接口的限流阈值为每分钟15000次,你现有120条管道的量级完全不会触发限流,若后续pipelineRun数据量级过万,可按运行时间做分区查询,进一步降低限流风险。
内容的提问来源于stack exchange,提问作者igi -iwe
相关产品推荐
相关产品推荐

