以编程方式监视 Azure 数据工厂
适用于: Azure 数据工厂 Azure Synapse Analytics
提示
试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用!
本文介绍如何使用不同的软件开发工具包 (SDK) 监视数据工厂中的管道。
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
数据范围
数据工厂仅将管道运行数据存储 45 天。 以编程方式查询有关数据工厂管道运行的数据时 - 比如使用 PowerShell 命令 Get-AzDataFactoryV2PipelineRun
来查询,对于可选的 LastUpdatedAfter
和 LastUpdatedBefore
参数,无最大日期限制。 但如果查询例如过去一年的数据,则不会返回错误,而仅返回最近 45 天的管道运行数据。
如果要保留管道运行数据超过 45 天,请使用 Azure Monitor 设置自己的诊断日志记录。
管道运行信息
有关管道运行属性,请参阅 PipelineRun API 参考。 管道运行在其生命周期中具有不同状态,下面列出了可能的运行状态值:
- 已排队
- 正在进行
- 已成功
- 失败
- 正在取消
- 已取消
.NET
有关使用 .NET SDK 创建和监视管道的完整演练,请参阅使用 .NET 创建数据工厂和管道。
添加以下代码以持续检查管道运行状态,直到它完成数据复制为止。
// Monitor the pipeline run Console.WriteLine("Checking pipeline run status..."); PipelineRun pipelineRun; while (true) { pipelineRun = client.PipelineRuns.Get(resourceGroup, dataFactoryName, runResponse.RunId); Console.WriteLine("Status: " + pipelineRun.Status); if (pipelineRun.Status == "InProgress" || pipelineRun.Status == "Queued") System.Threading.Thread.Sleep(15000); else break; }
添加以下代码,用于检索复制活动的运行详细信息,例如,读取/写入的数据大小。
// Check the copy activity run details Console.WriteLine("Checking copy activity run details..."); RunFilterParameters filterParams = new RunFilterParameters( DateTime.UtcNow.AddMinutes(-10), DateTime.UtcNow.AddMinutes(10)); ActivityRunsQueryResponse queryResponse = client.ActivityRuns.QueryByPipelineRun( resourceGroup, dataFactoryName, runResponse.RunId, filterParams); if (pipelineRun.Status == "Succeeded") Console.WriteLine(queryResponse.Value.First().Output); else Console.WriteLine(queryResponse.Value.First().Error); Console.WriteLine("\nPress any key to exit..."); Console.ReadKey();
有关 .NET SDK 的完整文档,请参阅数据工厂 .NET SDK 参考。
Python
有关使用 Python SDK 创建和监视管道的完整演练,请参阅使用 Python 创建数据工厂和管道。
要监视管道的运行,请添加以下代码:
# Monitor the pipeline run
time.sleep(30)
pipeline_run = adf_client.pipeline_runs.get(
rg_name, df_name, run_response.run_id)
print("\n\tPipeline run status: {}".format(pipeline_run.status))
filter_params = RunFilterParameters(
last_updated_after=datetime.now() - timedelta(1), last_updated_before=datetime.now() + timedelta(1))
query_response = adf_client.activity_runs.query_by_pipeline_run(
rg_name, df_name, pipeline_run.run_id, filter_params)
print_activity_run_details(query_response.value[0])
有关 Python SDK 的完整文档,请参阅数据工厂 Python SDK 参考。
REST API
有关使用 REST API 创建和监视管道的完整演练,请参阅使用 REST API 创建数据工厂和管道。
运行以下脚本来持续检查管道运行状态,直到它完成数据复制为止。
$request = "https://management.chinacloudapi.cn/subscriptions/${subsId}/resourceGroups/${resourceGroup}/providers/Microsoft.DataFactory/factories/${dataFactoryName}/pipelineruns/${runId}?api-version=${apiVersion}" while ($True) { $response = Invoke-RestMethod -Method GET -Uri $request -Header $authHeader Write-Host "Pipeline run status: " $response.Status -foregroundcolor "Yellow" if ( ($response.Status -eq "InProgress") -or ($response.Status -eq "Queued") ) { Start-Sleep -Seconds 15 } else { $response | ConvertTo-Json break } }
运行以下脚本来检索复制活动运行详细信息,例如,读取/写入的数据的大小。
$request = "https://management.chinacloudapi.cn/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DataFactory/factories/${factoryName}/pipelineruns/${runId}/queryActivityruns?api-version=${apiVersion}&startTime="+(Get-Date).ToString('yyyy-MM-dd')+"&endTime="+(Get-Date).AddDays(1).ToString('yyyy-MM-dd')+"&pipelineName=Adfv2QuickStartPipeline" $response = Invoke-RestMethod -Method POST -Uri $request -Header $authHeader $response | ConvertTo-Json
有关 REST API 的完整文档,请参阅数据工厂 REST API 参考。
PowerShell
有关使用 PowerShell 创建和监视管道的完整演练,请参阅使用 PowerShell 创建数据工厂和管道。
运行以下脚本来持续检查管道运行状态,直到它完成数据复制为止。
while ($True) { $run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $resourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $runId if ($run) { if ( ($run.Status -ne "InProgress") -and ($run.Status -ne "Queued") ) { Write-Output ("Pipeline run finished. The status is: " + $run.Status) $run break } Write-Output ("Pipeline is running...status: " + $run.Status) } Start-Sleep -Seconds 30 }
运行以下脚本来检索复制活动运行详细信息,例如,读取/写入的数据的大小。
Write-Host "Activity run details:" -foregroundcolor "Yellow" $result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $runId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30) $result Write-Host "Activity 'Output' section:" -foregroundcolor "Yellow" $result.Output -join "`r`n" Write-Host "\nActivity 'Error' section:" -foregroundcolor "Yellow" $result.Error -join "`r`n"
有关 PowerShell cmdlet 的完整文档,请参阅数据工厂 PowerShell cmdlet 参考。
相关内容
若要了解如何使用 Azure Monitor 监视数据工厂管道,请参阅使用 Azure Monitor 监视管道一文。