从Azure函数访问管道活动状态

从Azure函数访问管道活动状态,azure,azure-functions,azure-data-factory,Azure,Azure Functions,Azure Data Factory,我有一个Azure函数,它可以触发管道,并且我能够轮询管道状态以检查它何时完成,使用:Pipeline.Properties.RuntimeInfo.PipelineState 我的管道使用多个并行复制活动,我希望能够在这些活动失败时访问它们的状态。Azure文档描述了如何访问管道活动,但您只能获取名称和描述等静态属性,而不能获取状态等动态属性(就像您可以通过其RuntimeInfo属性获取管道) 为了完整起见,我使用以下方法访问了活动列表: IList<Microsoft.Azure.M

我有一个Azure函数,它可以触发管道,并且我能够轮询管道状态以检查它何时完成,使用:
Pipeline.Properties.RuntimeInfo.PipelineState

我的管道使用多个并行复制活动,我希望能够在这些活动失败时访问它们的状态。Azure文档描述了如何访问管道活动,但您只能获取名称和描述等静态属性,而不能获取状态等动态属性(就像您可以通过其RuntimeInfo属性获取管道)

为了完整起见,我使用以下方法访问了活动列表:

IList<Microsoft.Azure.Management.DataFactories.Models.Activity> activityList = plHandle.Pipeline.Properties.Activities;
IList activityList=plHandle.Pipeline.Properties.Activities;

是否可以通过编程方式检查单个活动状态?

当然可以

我在Azure模块中使用ADF PowerShell cmdlet来监视我们的数据工厂

使用Get-AzureRmDataFactoryActivityWindow命令,您可能需要执行以下操作

例如:

这将为您提供活动级别的详细信息,包括状态。是:

  • 准备好了吗
  • 进行中
  • 等待
  • 失败
。。。我之所以列出它们,是因为它们与您在门户刀片中看到的略有不同

如果您有多个特定活动的输入和输出,那么数据集也是数组

此处提供了更多ADF cmdlet:


希望这有帮助

我已通过访问管道的数据许可运行(即活动)来解决此问题,如下所示:

var datasets = client.Datasets.ListAsync(<resourceGroupName>, <DataFactoryName>).Result;

    foreach (var dataset in datasets.Datasets)
    {
        // Check the activity statuses for the pipelines activities.
        var datasliceRunlistResponse = client.DataSliceRuns.List(<resourceGroupName>, <dataFactoryName>,<DataSetName>, new DataSliceRunListParameters()
                                                                        {
                                                                            DataSliceStartTime = PipelineStartTime.ConvertToISO8601DateTimeString()
                                                                        });

        foreach (DataSliceRun run in datasliceRunlistResponse.DataSliceRuns)
        {
            // Do stuff...
        }
    }
var-datasets=client.datasets.ListAsync(,).Result;
foreach(dataset.dataset中的var数据集)
{
//检查管道活动的活动状态。
var dataslicerunlistress=client.DataSliceRuns.List(,,新DataSliceRunListParameters()
{
DataSliceStartTime=PipelineStartTime.ConvertToISO8601DateTimeString()
});
foreach(DataSlicerRunListResponse.DataSlicerRuns中的DataSlicerRun运行)
{
//做些事情。。。
}
}

您好,谢谢您的回复。使用您的Powershell示例,我已经能够找到相应REST API调用的以下链接:[因为我正试图使用C#实现这一点。如果我能让它工作,我将发布另一个回复。谢谢。
var datasets = client.Datasets.ListAsync(<resourceGroupName>, <DataFactoryName>).Result;

    foreach (var dataset in datasets.Datasets)
    {
        // Check the activity statuses for the pipelines activities.
        var datasliceRunlistResponse = client.DataSliceRuns.List(<resourceGroupName>, <dataFactoryName>,<DataSetName>, new DataSliceRunListParameters()
                                                                        {
                                                                            DataSliceStartTime = PipelineStartTime.ConvertToISO8601DateTimeString()
                                                                        });

        foreach (DataSliceRun run in datasliceRunlistResponse.DataSliceRuns)
        {
            // Do stuff...
        }
    }