Search code examples
azure-devopspowerbidax

How to count direct and indirect test cases for Features, Requirements, and Change Requests in Power BI using DAX?


I have below work item hierarchy in Azure DevOps

enter image description here

I have imported the data to Power BI

enter image description here

I am trying to use Power BI to visualize the data as shown below

enter image description here

I successfully obtained the Change Request Count and Requirement Count, but I'm unable to calculate the Test Case Count. As shown above, Features 1 and 2 have a Test Case Count of ZERO!

Here is my DAX code

 Total Number of Testcases = 
 // Step 1: Directly linked test cases
 VAR DirectTestCases = 
 CALCULATE(
    COUNTROWS(SoftwareFacoryData),
    FILTER(
        SoftwareFacoryData,
        SoftwareFacoryData[Parent Work Item Id] = EARLIER(SoftwareFacoryData[Work Item ID]) &&
        SoftwareFacoryData[Work Item Type] = "Test Case" &&
        SoftwareFacoryData[Is Current] = TRUE()
    )
)

 // Step 2: Find all indirectly linked work items (Requirements, Change Requests, etc.)
 VAR IndirectLinks = 
 FILTER(
    SoftwareFacoryData,
    SoftwareFacoryData[Parent Work Item Id] = EARLIER(SoftwareFacoryData[Work Item ID]) &&
    SoftwareFacoryData[Is Current] = TRUE()
)

    // Step 3: Gather test cases indirectly linked through intermediate items
    VAR IndirectTestCases =
    CALCULATE(
      COUNTROWS(SoftwareFacoryData),
    FILTER(
        SoftwareFacoryData,
        SoftwareFacoryData[Work Item Type] = "Test Case" &&
        SoftwareFacoryData[Is Current] = TRUE() &&
        SoftwareFacoryData[Parent Work Item Id] IN 
        SELECTCOLUMNS(
            IndirectLinks,
            "WorkItemID", SoftwareFacoryData[Work Item ID]
        )
    )
)

   // Step 4: Total test cases (Direct + Indirect)
    VAR TotalTestCases = DirectTestCases + IndirectTestCases

    // Step 5: Return total count, ensuring 0 for BLANK
 RETURN
 IF(
   SoftwareFacoryData[Work Item Type] IN {"Feature", "Change Request", "Requirement"} &&
  SoftwareFacoryData[Is Current] = TRUE(),
  COALESCE(TotalTestCases, 0),
  0
)

I am not able to solve this :(, I am suspecting that Feature do not have any Parent work item Id and may be its causing the issue.

Basically I want DAX code to go through hierarchy and count the testcases for every work item

Based on Sam Nseir answer, I have created Item Path which gave me below data , Now I want to know how to get the Test Case Count using this PATH?

enter image description here

This is my data source (Analytical view from Azure DevOps)

enter image description here


Solution

  • Check out Parent and Child functions.

    Create a new calculated column with:

    Item Path = PATH(SoftwareFactoryData[Work Item Id], SoftwareFactoryData[Parent Work Item Id])
    

    Then in your calculations, you would use it like so:

    Test Cases # =
      var thisId = SoftwareFactoryData[Work Item Id]
      return CALCULATE(
        COUNTROWS(SoftwareFactoryData),
        FILTER(
          SoftwareFactoryData,
          PATHCONTAINS(SoftwareFactoryData[Item Path], thisId) && 
          SoftwareFactoryData[Work Item Type] = "Test Case"
        )
      )