2017-03-08 37 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; 
      } 
     } 
    }