如何使用Azure Data Factory Databricks中的continuation_令牌获取下一页ADF管道运行详细信息?

2024-10-03 21:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用

adf_client.pipeline_runs.query_by_factory(resourceGroupName, factoryName, filter_parameters)

用于获取ADF管道运行详细信息的azure.mgmt.datafactory.DataFactoryManagementClient包的方法

上述函数的响应一次返回100条管道运行记录。与响应一起,它返回continuation\u token,我相信它应该用于获取下一组/页的记录

我不确定该使用哪个函数。我尝试使用azure.mgmt.datafactory.models.PipelineRun()函数(尝试和错误)来查看是否满足要求。不幸的是,事实并非如此。MS文档理解起来也非常抽象

那么,Azure的Python SDK中的哪个函数可以用来获取下一页的运行记录呢


Tags: 函数clientby管道pipelinefactory记录runs
1条回答
网友
1楼 · 发布于 2024-10-03 21:31:11

当您有下一页结果时,您将获得continuation_token,如果存在任何剩余结果,则为null

下面是它的用法示例,但是我目前没有足够的管道运行来显示令牌本身

enter image description here

现在在您的案例中,您已经收到了一个,下面是如何使用它

考虑到pipeline_runs保存的是结果,pipeline_runs.continuation_token是我们需要获取并在另一个请求中传递回的内容,以获取下一页

添加一个简单的循环,例如While检查pipeline_runs.continuation_token是否存在,并请求下一页,直到返回的令牌值为Null-结果结束

enter image description here

完成工作执行:

from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.datafactory import DataFactoryManagementClient
from azure.mgmt.datafactory.models import *
from datetime import datetime, timedelta
from azure.identity import ClientSecretCredential 


subscription_id = "b83c1wd3-xxxx-xxxx-xxxx-2b83a074c23f"
rg_name = "My-rg"
df_name = "ktestadf"

tenant_id = "12f978bf-xxxx-xxxx-xxxx-2d7cd011db47"
client_id = "a71ad3ca-xxxx-xxxx-xxxx-af0c2a3fdae1"
client_secret = "Nym7Q~j5YMyxxxxxx3tAk879y9vLrxAQqaI8n"

credentials = ServicePrincipalCredentials(client_id=client_id, secret=client_secret, tenant=tenant_id)
adf_client = DataFactoryManagementClient(credentials, subscription_id)

filter_params = PipelineRunFilterParameters(last_updated_after=datetime.now() - timedelta(30), last_updated_before=datetime.now() + timedelta(1))
pipeline_runs = adf_client.pipeline_runs.query_by_factory(resource_group_name=rg_name, factory_name=df_name, filter_parameters = filter_params)


for pipeline_run in pipeline_runs.value:

    print(pipeline_run)

while (pipeline_runs.continuation_token):

    pipeline_runs = adf_client.pipeline_runs.query_by_factory(
    resource_group_name=rg_name, factory_name=df_name, filter_parameters=filter_params, continuation_token = pipeline_runs.continuation_token)
    print(pipeline_runs.value)

您可以选择不在for循环中打印前面的调用pipeline_runs,我让它们在代码中显示以供参考

相关问题 更多 >