![](/img/trans.png)
[英]How to log successful run of ADF pipeline to a table using databricks
[英]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.