2017-03-08 67 views
1

是否有人知道如何(或者如果可能)访问Azure门户中“详细信息”下显示的每个活动运行的这些指标?Azure Data Factory .NET SDK活动指标

Screenshot from Azure Portal

最初的计划是使用.NET SDK但这些指标似乎被包括在内。这是我迄今为止设法找到的。

var datasliceRunListResponse = client.DataSliceRuns.List(
       _resourceGroupName, 
       dataFactoryName, 
       Dataset_Destination, 
       new DataSliceRunListParameters() 
       { 
        DataSliceStartTime = PipelineActivePeriodStartTime.ConvertToISO8601DateTimeString() 
       } 
      ); 

     foreach (DataSliceRun run in datasliceRunListResponse.DataSliceRuns) 
     { 
      Console.WriteLine("Status: \t\t{0}", run.Status); 
      Console.WriteLine("DataSliceStart: \t{0}", run.DataSliceStart); 
      Console.WriteLine("DataSliceEnd: \t\t{0}", run.DataSliceEnd); 
      Console.WriteLine("ActivityId: \t\t{0}", run.ActivityName); 
      Console.WriteLine("ProcessingStartTime: \t{0}", run.ProcessingStartTime); 
      Console.WriteLine("ProcessingEndTime: \t{0}", run.ProcessingEndTime); 
      Console.WriteLine("ErrorMessage: \t{0}", run.ErrorMessage); 
      Console.WriteLine("Has logse: \t\t{0}", run.HasLogs.ToString()); 
      Console.WriteLine("Id: \t\t\t{0}", run.Id); 
      Console.WriteLine("Log uri: \t{0}", run.LogUri); 
      Console.WriteLine("Properties: \t{0}", run.Properties.Count); 

     } 
+0

刚才检查的PowerShell命令获取-AzureRmDataFactoryActivityWindow和Get-AzureRmDataFactoryRun。他们不包括这一级别的细节。然而! –

+0

你为此提出了一个MS连接项目吗? –

+0

已经做了一些更深入的研究,实际上可以使用.NET SDK,但需要执行两步提取。我已经发布了下面的答案。 – soderstromOlov

回答

0

经过一番挖掘,我在.NET SDK中找到了解决方案。你需要做一个“两步取”。

获取切片细节

enter image description here

DateTime PipelineActivePeriodStartTime; 
    DataSliceRunListResponse sliceList = new DataSliceRunListResponse(); 
    DataSliceRunGetResponse sliceResponse = new DataSliceRunGetResponse(); 
    PipelineActivePeriodStartTime = new DateTime(2017, 3, 20, 07, 00, 0, 0, DateTimeKind.Utc); 

    DataFactoryManagementClient client = new DataFactoryManagementClient(_aadTokenCredentials, _resourceManagerUri); 

    sliceList = client.DataSliceRuns.List(
       _resourceGroupName, 
       _dataFactoryName, 
       _datasetDestination, 
       new DataSliceRunListParameters() 
       { 
        DataSliceStartTime = PipelineActivePeriodStartTime.ConvertToISO8601DateTimeString() 
       } 
    ); 

    foreach (DataSliceRun run in sliceList.DataSliceRuns) 
    { 
     sliceResponse = client.DataSliceRuns.Get(_resourceGroupName, dataFactoryName, run.Id.ToString()); 

     foreach (KeyValuePair<string, string> entry in sliceResponse.DataSliceRun.Properties) 
     { 
      switch (entry.Key.Trim()) 
      { 
       case "rows": 
        rows = Convert.ToInt32(entry.Value); 
        break; 
       case "dataRead": 
        dataRead = entry.Value; 
        break; 
       case "dataWritten": 
        dataWritten = entry.Value; 
        break; 
       case "throughput": 
        throughtput = entry.Value; 
        break; 
       case "totalDuration": 
        totalDuration = entry.Value; 
        break; 
       default: 
        break; 
      } 
     } 
    }