如何在Databricks环境下通过Azure Data Factory Python SDK使用continuation_token获取管道运行详情的下一页数据
如何在Azure Python SDK中获取ADF管道运行记录的下一页数据
其实你不需要找新的函数——继续使用你已经在调用的query_by_factory方法就可以处理分页,只需要把返回的continuation_token作为参数传入下一次调用即可。
核心逻辑说明
Azure Python SDK中大多数分页场景的设计都是复用同一个查询方法,通过传入上一次响应中的continuation token来获取下一页数据,ADF的管道运行查询也遵循这个规则。你之前尝试的PipelineRun()是数据模型类,用来表示单条管道运行记录,自然无法处理分页请求。
完整代码示例
下面是一个完整的循环获取所有管道运行记录的示例:
from azure.mgmt.datafactory import DataFactoryManagementClient from azure.mgmt.datafactory.models import RunFilterParameters # 假设你已经完成了客户端的身份验证和初始化 adf_client = DataFactoryManagementClient(your_credential, your_subscription_id) resource_group = "your-resource-group-name" factory_name = "your-adf-factory-name" # 定义初始筛选条件(根据你的需求调整时间范围或其他筛选器) filter_params = RunFilterParameters( last_updated_after="2024-01-01T00:00:00Z", last_updated_before="2024-02-01T00:00:00Z" ) all_runs = [] continuation_token = None # 循环获取所有分页数据 while True: # 调用query_by_factory,传入continuation_token(首次调用为None) response = adf_client.pipeline_runs.query_by_factory( resource_group_name=resource_group, factory_name=factory_name, filter_parameters=filter_params, continuation_token=continuation_token ) # 将当前页的记录添加到总列表 all_runs.extend(response.value) # 更新continuation_token为当前响应中的令牌 continuation_token = response.continuation_token # 没有令牌说明所有数据已获取完成,退出循环 if not continuation_token: break print(f"成功获取到 {len(all_runs)} 条管道运行记录")
关键注意点
continuation_token参数是query_by_factory方法的可选参数,首次调用时不需要传(或传None)- 每次调用后,从响应对象的
continuation_token属性获取下一页的令牌,如果该值为空,说明已经没有更多数据了 - 筛选参数(
filter_parameters)在分页过程中保持不变,不要修改,否则会重置分页状态
内容的提问来源于stack exchange,提问作者Vikrant Bhalerao
相关产品推荐
相关产品推荐

