簡體   English   中英

如何使用 Azure 數據工廠 - Databricks 中的 continuation_token 獲取 ADF 管道運行詳細信息的下一頁?

[英]How to get next Page of ADF Pipeline run details using continuation_token in Azure Data Factory - Databricks?

我在用

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

azure.mgmt.datafactory.DataFactoryManagementClient package 獲取 ADF 管道運行詳細信息的方法。

上述 function 的響應一次返回 100 條流水線運行記錄。 與響應一起,它返回continuation_token ,我相信它應該用於獲取下一組/頁面記錄。

我不確定要為此使用哪個 function。 我嘗試使用azure.mgmt.datafactory.models.PipelineRun() function (反復試驗)來查看是否滿足要求。 不幸的是,事實並非如此。 MS 文檔也很抽象,很難理解。

那么,Azure 的 Python SDK 中的哪個 function 可以用來獲取下一頁的運行記錄?

當您獲得下一頁結果時,您將獲得continuation_token ,如果存在任何剩余結果,否則為 null。

這是其用法的示例,但是我目前沒有足夠的管道運行來顯示令牌本身。

在此處輸入圖片說明

現在,在您的情況下,您已經收到了一個,所以這是您可以使用它的方法。

考慮到pipeline_runs持有結果, pipeline_runs.continuation_token是我們需要獲取並在另一個請求中傳回以獲取下一頁的內容。

添加一個簡單的循環,說While檢查pipeline_runs.continuation_token存在,並請求下一個頁面,直到令牌返回的值是Null -結果結束。

在此處輸入圖片說明

完整的工作實施:

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-c5c6-44fb-b5ca-2b83a074c23f"
rg_name = "My-rg"
df_name = "ktestadf"

tenant_id = "12f978bf-86f1-41af-91aa-2d7cd011db47"
client_id = "a71ad3ca-bf3a-4i7e-9c11-af0c2a3fdae1"
client_secret = "Nym7Q~j5YMy2aihvC3tAk879y9vLrxAQqaI8n"

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 ,我將它們僅顯示在代碼中以供參考。

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"

credential = ClientSecretCredential(
tenant_id=tenant_id ,
client_id=client_id ,
client_secret=client_secret)
adf_client = DataFactoryManagementClient( credential=credential,
subscription_id=subscription_id)

pipe_run = []
dsb = datetime.now()
dsa = dsb - timedelta(hours = 24)
filter_params = RunFilterParameters(last_updated_after=dsa, last_updated_before=dsb)
pipeline_runs = adf_client.pipeline_runs.query_by_factory(resource_group_name=rg_name, factory_name=df_name, filter_parameters = filter_params)
pipe_run.append(pipeline_runs.value)
while (pipeline_runs.continuation_token):
   filter_params = RunFilterParameters(last_updated_after=dsa, last_updated_before=dsb,continuation_token = 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)
   pipe_run.append(pipeline_runs.value)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM