Power BI 보고서에 Time-In-State 측정값 추가

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

작업 항목이 특정 워크플로 상태 또는 일련의 상태에서 소비하는 시간은 효율성을 이해하는 데 중요한 측면입니다. 주기 시간 및 리드 타임 분석 위젯은 시간 내 상태의 몇 가지 측정값을 제공합니다. 그러나 이러한 위젯에는 원하는 세부 정보가 없을 수 있습니다.

이 문서에서는 DAX(데이터 분석 식)를 사용하여 작업 항목에서 소요된 시간을 상태 조합으로 평가하는 레시피를 제공합니다. 특히 Power BI 보고서에 다음 측정값 및 계산 열을 추가하고 이를 사용하여 다양한 추세 차트를 생성하는 방법을 알아봅니다. 나열된 첫 번째 필드를 제외한 모든 필드는 계산 열입니다.

Count 설명
작업 항목 수 (측정값) 작업 항목의 마지막 날 항목을 기준으로 고유 작업 항목 수를 계산합니다.
상태 정렬 순서 상태 범주 시퀀스에 따라 워크플로 상태를 정렬하는 데 사용할 열을 추가합니다.
이전 날짜 날짜 열을 기반으로 이전 날짜를 계산하는 열을 추가합니다.
날짜 차이(일) Date 및 Date Previous 열 사이의 일 수를 계산하는 열을 추가합니다.
상태의 마지막 날입니다. 날짜 값이 작업 항목이 상태에 있었던 마지막 날인지 여부를 결정하는 열을 추가합니다.
일 단위의 상태 시간 작업 항목이 각 주에서 소요된 일 수를 계산하는 열을 추가합니다.
이전 상태 데이터 테이블의 각 행에 대한 이전 상태를 식별하는 열을 추가합니다.
상태 변경됨 작업 항목이 한 상태에서 다른 상태로 전환된 날짜를 결정하는 열을 추가합니다.
상태 흐름 작업 항목이 한 상태에서 다른 상태로 전환됨에 따라 상태 흐름을 보여 주는 열을 추가합니다.
상태 변경 횟수 작업 항목이 한 상태에서 다른 상태로 전환된 횟수를 계산하는 열을 추가합니다.
상태 변경 횟수 - 처음 완료됨 작업 항목이 처음으로 완료됨 상태로 전환되는 횟수를 결정하는 열을 추가합니다. 즉, 다른 상태에서 완료됨 상태로 이동할 때입니다.
상태 변경 횟수 - 마지막으로 제안된 항목 작업 항목이 이후 상태로 전환된 후 이전에 제안된 상태인지 여부를 결정하는 열을 추가합니다.
상태 다시 시작 시간(일) 작업 항목이 다시 시작 상태에서 소요된 일을 계산하는 열을 추가합니다.
일 단위의 상태 재작업 시간 작업 항목이 완료된 상태가 아닌 상태에서 소비하는 일을 계산하는 열을 추가합니다.

Important

  • 이 문서에 표시된 예제에 따라 계산 열 또는 측정값을 추가할 때 뷰 이름을 분석 뷰 또는 데이터 테이블의 테이블 이름으로 바꿉니다. 예를 들어 보기 이름을 활성 버그로 대체합니다.
    Power BI 테이블 도구 탭의 스크린샷, 데이터 테이블 이름.
  • Analytics는 일별 수정 버전을 지원하지 않습니다. 이러한 예제는 분석 보기를 참조할 때 일별 간격을 사용할 때 가장 정밀도가 높습니다.
  • 모든 일별 또는 기간 내(매주/매월) 수정은 계산에서 무시됩니다. 이로 인해 작업 항목이 하루 이내에 "진행 중"일 때 시간 "진행 중"이 표시되지 않는 작업 항목과 같은 특정 시나리오에 대한 예기치 않은 결과가 발생할 수 있습니다.
  • Power BI 기본 집계는 측정값을 작성하는 대신 가능할 때마다 사용됩니다.
  • 일부 계산에는 BLANK 대신 모든 행에 숫자 값이 포함되도록 하는 +0이 포함됩니다. 프로젝트에서 사용하는 워크플로 상태에 따라 계산된 열 정의 중 일부를 수정해야 할 수 있습니다. 예를 들어 프로젝트에서 제안됨, 진행 중완료 대신 새로 만들기, 활성닫힘을 사용하는 경우입니다.

필수 조건

  • 분석 데이터를 보고 서비스를 쿼리하려면 기본 액세스 이상의 프로젝트 멤버여야 합니다. 기본적으로 모든 프로젝트 멤버에는 분석을 쿼리하고 분석 뷰를 정의할 수 있는 권한이 부여됩니다.
  • 서비스 및 기능 사용 및 일반 데이터 추적 활동과 관련된 다른 필수 구성 요소에 대해 알아보려면 분석에 액세스하기 위한 사용 권한 및 필수 구성 요소를 참조 하세요.

참고 항목

이 문서에 설명된 모든 시간 단위 측정값을 실행하려면 분석 뷰, 파워 쿼리 또는 OData 쿼리에 다음 필드를 포함해야 합니다. 기본 필드 외에도 만든 날짜상태 범주( 영역 경로, 할당 대상, 반복 경로, 상태, 제목, 작업 항목 ID 및 작업 항목 형식)

또한 일일 세분성을 기반으로 분석 보기를 사용하는 것이 좋습니다. 이 문서의 예제는 60일간의 기록 및 일별 세분성이 선택된다는 점을 제외하고 사용자 지정 분석 보기를 기반으로 Power BI에서 활성 버그 보고서 만들기에 정의된 활성 버그 분석 보기를 기반으로 합니다. 완료된 작업 항목 또는 닫힌 작업 항목을 검토할지 여부도 결정합니다.

작업 항목 수 측정값 추가

보고서를 빠르게 생성하는 작업을 간소화하기 위해 Power BI에서 기본 집계를 사용하도록 Analytics 뷰를 디자인했습니다. 기본 집계와 측정값의 차이를 설명하기 위해 간단한 작업 항목 수 측정값부터 시작합니다.

  1. Power BI Desktop에 분석 보기를 로드합니다. 자세한 내용은 분석 보기에 커넥트 Power BI Data 커넥트or를 사용하여 커넥트 참조하세요.

  2. 데이터 테이블을 선택한 다음 표 도구 탭에서 리본 메뉴의 계산 섹션에서 새 측정값을 선택합니다.

    새 측정값인 Power BI 테이블 도구 탭의 스크린샷.

  3. 기본 텍스트를 다음 코드로 바꾼 다음 검사mark를 선택합니다.

    Work Items Count=CALCULATE(COUNTROWS ('View Name'),LASTDATE ('View Name'[Date]))
    

    작업 항목 수 측정값은 이 문서의 뒷부분에서 자세히 설명하는 , COUNTROWSLASTDATE DAX 함수를 사용합니다CALCULATE.

    참고 항목

    뷰 이름을 분석 보기의 테이블 이름으로 바꿔야 합니다. 예를 들어 여기서는 보기 이름을 활성 버그로 대체합니다.

    Power BI 측정값 도구 탭의 작업 항목 수 구문 스크린샷

측정값이 계산 열과 어떻게 다른가요?

측정값은 계산 열이 단일 행과 관련된 전체 테이블을 항상 평가합니다. 자세한 내용은 DAX의 계산 열 및 측정값을 참조하세요.

작업 항목 수 측정값을 작업 항목 ID따라 기본 개수 집계와 비교합니다. 다음 이미지는 첫 번째 카드 카드 시각적 개체와 작업 항목 수 측정값을 추가하고 두 번째 카드 작업 항목 ID 속성을 추가하여 만듭니다.

작업 항목 수 측정값과 작업 항목 ID 속성을 보여 주는 두 카드 Power BI 보고서 페이지의 스크린샷

기본 집계를 사용하여 올바른 개수를 얻으려면 필터 Is Current를 'True'로 적용합니다. 기본 집계에 필터를 적용하는 이 패턴은 이 문서에 제공된 많은 예제의 기초입니다.

필터링된 작업 항목 ID 수인 Power BI 보고서 페이지의 스크린샷

상태 정렬 순서 추가

기본적으로 Power BI는 시각화에서 사전순으로 정렬된 상태를 표시합니다. 상태의 시간을 시각화하려는 경우 오해의 소지가 있을 수 있으며 진행 중 이후에 제안된 시간이 표시됩니다. 다음 단계는 이 문제를 해결하는 데 도움이 됩니다.

  1. 상태 범주 필드가 분석 보기에 포함되어 있는지 확인합니다. 이 필드는 모든 기본 공유 보기에 포함됩니다.

  2. 데이터 테이블을 선택한 다음 표 도구 탭에서 리본 메뉴의 계산 섹션에서 새 열을 선택합니다.

    Power BI 테이블 도구 탭, 새 열의 스크린샷

  3. 기본 텍스트를 다음 코드로 바꾼 다음 검사mark를 선택합니다.

    State Sort Order =  
    SWITCH (  
        'View Name'[State Category],  
        "Proposed", 1,  
        "InProgress", 2,  
        "Resolved", 3,  
        4  
    )  
    

    다음 예제를 참조하십시오.

    Power BI 테이블 도구 탭, 상태 범주 항목의 스크린샷

    참고 항목

    상태 범주에서 제공하는 것보다 더 세분성이 필요한 경우 정의를 수정해야 할 수 있습니다. 상태 범주는 상태 사용자 지정에 관계없이 모든 작업 항목 유형에서 올바른 정렬을 제공합니다.

  4. 데이터 뷰를 열고 상태 열을 선택합니다.

  5. 열 도구에서 열별로 정렬을 선택한 다음 상태 정렬 순서 필드를 선택합니다.

    열별 정렬 선택 Power BI 열 도구 탭의 스크린샷

이전 날짜 추가

상태를 계산하기 위한 다음 단계에서는 데이터 세트의 각 데이터 행에 대해 이전 간격(일, 주, 월)을 매핑해야 합니다. 계산 열을 사용하는 간단한 계산입니다. 일반적으로 표시된 대로 이 열을 정의합니다.

Date Previous  = 
PREVIOUSDAY ( 'View Name'[Date] )

그러나 이 방법에는 두 가지 기본 문제가 있습니다.

  • 그것은 매일 기간에 대해서만 작동합니다.
  • 데이터의 간격을 처리하지 않습니다. 예를 들어 작업 항목이 프로젝트 간에 이동되는 경우입니다.

이러한 문제를 해결하려면 날짜 필드를 검사하여 계산 열이 전날을 찾아야 합니다.

Date Previous 계산 열을 추가하려면 테이블 도구 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사mark를 선택합니다.

Date Previous =
CALCULATE (
    MAX ( 'View Name'[Date] ),
        ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
        'View Name'[Date] < EARLIER ( 'View Name'[Date] )
)

Date Previous 계산 열은 이 문서의 뒷부분에 ALLEXCEPT설명된 세 가지 MAXDAX 함수 및 EARLIER이 함수를 사용합니다. 열은 계산되므로 테이블의 모든 행에 대해 실행되며, 열이 실행 될 때마다 해당 특정 행의 컨텍스트가 있습니다.

날짜 및 이전 날짜에 대한 Power BI 테이블 차트 및 시각화 탭의 스크린샷

날짜 및 이전 날짜 필드의 상황에 맞는 메뉴에서 날짜 계층 대신 날짜를 선택하여 이러한 필드에 대한 단일 날짜를 확인합니다.

일 단위로 날짜 차이 추가

Date Previous 는 각 행의 이전 날짜와 현재 날짜 간의 차이를 계산합니다. 날짜 차이(일)를 사용하여 각 기간 사이의 일 수를 계산합니다. 일별 스냅샷 대부분의 행의 경우 값은 1같습니다. 그러나 데이터 세트에 간격이 있는 많은 작업 항목의 경우 값이 1보다 큽니다.

Important

테이블에 Date Previous 계산 열을 추가해야 합니다.

이전 날짜가 비어 있는 데이터 세트의 첫 날을 고려하는 것이 중요합니다. 이 예제에서는 계산을 일관성 있게 유지하기 위해 해당 행에 표준 값 1을 제공합니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

Date Diff in Days =
IF (
    ISBLANK ( 'View Name'[Date Previous] ),
    1,
    DATEDIFF (
        'View Name'[Date Previous],
        'View Name'[Date],
        DAY
    )
)

이 계산 열은 이 문서의 뒷부분에 ISBLANK 설명된 DAX 함수와 DATEDIFF DAX 함수를 사용합니다.

상태의 마지막 날 추가

다음 단계에서는 지정된 행이 특정 작업 항목이 상태에 있었던 마지막 날을 나타내는지 계산합니다. 다음 섹션에서 추가한 Power BI의 기본 집계를 지원합니다. 여기서는 State Time in Days 열을 추가합니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

Is Last Day in State = 
ISBLANK (CALCULATE (
    COUNTROWS ( 'View Name' ),
        ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
        'View Name'[Date] > EARLIER ( 'View Name'[Date] ),
        'View Name'[State] = EARLIER ( 'View Name'[State] )
))

일 단위로 상태 시간 추가

이제 작업 항목이 특정 상태에 소요된 시간을 각 작업 항목의 날짜 차이(일)로 합산하여 계산할 수 있습니다. 이 계산에는 상태 간에 여러 번 전환한 경우에도 특정 상태에서 소요된 모든 시간이 포함됩니다. Is Last Day In State를 사용하여 날짜 또는 최신 정보를 사용하여 각 행을 추세로 평가할 수 있습니다.

Important

날짜 차이(일)와 상태 계산 열의 마지막 날(일)을 테이블에 추가해야 합니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

State Time in Days = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State] = EARLIER ( 'View Name'[State] )
) + 0

상태 시간(일)을 기준으로 누적 세로 막대형 추세 차트 만들기

State Time in Days 열을 보여 주려면 다음과 같은 누적 세로 막대형 차트가 만들어집니다. 첫 번째 차트는 시간에 따른 각 상태의 작업 항목 수를 보여줍니다.

날짜 및 상태별 작업 항목 제목 수를 보여 주는 Power BI 누적 세로 막대형 차트 및 시각화 탭의 스크린샷

두 번째 차트는 활성 작업 항목이 특정 상태에 있는 평균 일수 추세를 보여 줍니다.

날짜별 작업 항목의 상태 평균 일 수를 보여 주는 Power BI 누적 세로 막대형 차트 및 시각화 탭의 스크린샷

일 단위의 상태 시간 추가 - 최신 날짜(상태의 마지막 날임)

테이블의 각 작업 항목에 대한 Time-in-State를 평가하거나 영역 경로와 같은 필드로 필터링할 때 집계에 State Time in Days 열을 사용하지 마세요. 집계는 작업 항목이 상태에 있던 매일의 값을 사용합니다. 예를 들어 작업 항목이 월요일에 진행 중이고 목요일에 완료됨으로 이동한 경우 시간(time-in-state)은 3일이지만 주 시간(일) 열의 합계는 6일1+2+3이며 잘못된 것입니다.

일 단위로 상태 시간을 추가합니다.

이 문제를 해결하려면 주 시간(일)을 사용하고 필터를 적용합니다. 마지막 날의 상태는 'True'입니다. 추세에 필요한 모든 기록 데이터를 제거하고 각 상태에 대한 최신 값에만 중점을 둡니다.

일 단위의 상태 시간을 사용하고 필터가 마지막 날인 상태를 'True'로 적용합니다.

일 단위로 상태 시간 추가 - 진행 중

이전 예제 에서 지정된 작업 항목의 주 시간(일 )은 작업 항목이 특정 상태인 경우에만 계산됩니다. 지정된 작업 항목 수에 대한 시간 상태를 평균으로 지속적으로 지정하는 것이 목표인 경우 계산을 변경해야 합니다. 예를 들어 "진행 중" 상태를 추적하려면 State Time in Days - In Progress 계산 열을 추가합니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

State Time in Days - In Progress = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
   'View Name'[Date] <= EARLIER('View Name'[Date]),
   'View Name'[State] = "In Progress"
) + 0

참고 항목

프로젝트에서 사용하는 워크플로 상태에 따라 정의를 수정해야 할 수 있습니다. 예를 들어 이 문서의 예제에 사용된 프로젝트는 '진행 중' 워크플로 상태를 사용하며, Agile, 스크럼 및 CMMI 프로세스는 일반적으로 '활성' 또는 '커밋됨' 상태를 사용하여 진행 중인 작업을 나타냅니다. 개요는 워크플로 상태 및 상태 범주를 참조 하세요.

다음 이미지는 모든 기존 작업 항목(왼쪽 표시)에 대해 모든 시간-상태를 고려하는 효과와 지정된 날짜(오른쪽 표시)의 특정 상태에 있는 작업 항목만 고려하는 효과를 보여 줍니다.

추세 상태의 평균 시간 비교

여러 상태의 일별 상태 시간 추세

"연속" 패턴을 사용하여 여러 상태에서 성능을 분석할 수도 있습니다. 그러나 이 방법은 추세 차트에서만 작동합니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

State Time in Days - Working States = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
   'View Name'[Date] <= EARLIER('View Name'[Date]),
   'View Name'[State] IN { "Committed", "In Progress" }
) + 0

참고 항목

프로젝트에서 사용하는 워크플로 상태에 따라 정의를 수정해야 할 수 있습니다. 예를 들어 프로젝트에서 '커밋됨' 또는 '제안됨' 대신 '활성'을 사용하는 경우입니다.

왼쪽 차트는 결합된 평균을 표시하고 오른쪽은 각 개별 상태를 표시합니다.

여러 상태의 추세 비교

여러 상태의 상태 시간(일) - 최신 상태 가져오기

추세를 만들 때 상태 시간(일) - 최신 계산 열을 사용합니다. 상태에 대한 필터를 사용하여 State Time in Days 열과 Is Last Day in State 는 모든 작업 항목 또는 작업 항목 그룹이 일련의 상태에서 보낸 총 시간을 가져오는 간단한 방법을 제공합니다.

상태의 최신 시간

이전 상태 추가

Date Previous 계산 열을 사용하여 각 작업 항목에 대한 이전 상태와 같은 과거 값을 조회할 수도 있습니다.

Important

테이블에 Date Previous 계산 열을 추가해야 합니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

State Previous =
LOOKUPVALUE (
    'View Name'[State],
    'View Name'[Work Item Id], 'View Name'[Work Item Id],
    'View Name'[Date], 'View Name'[Date Previous]
)

이 계산 열은 이 문서의 뒷부분에 LOOKUPVALUE설명된 내용을 사용합니다.

첫 번째 LOOKUPVALUE 매개 변수는 'View Name'[State][State]의 값을 반환하도록 지정합니다.

다음 매개 변수 'View Name'[Work Item Id], 'View Name'[Work Item Id]는 현재 행과 일치하는 작업 항목 ID가 있는 행만 고려되도록 지정합니다.

또한 마지막 매개 변수 'View Name'[Date], 'View Name'[Date Previous]는 반환되는 행의 날짜에 현재 행의 [이전 날짜]와 일치하는 [Date]가 있어야 한다고 지정합니다. 스냅샷 한 행만 이 조건을 충족할 수 있습니다.

변경된 상태 추가

상태 이전 열을 사용하여 상태 전환이 발생한 각 작업 항목의 행에 플래그를 지정할 수 있습니다. 스테이지 변경 계산 열에는 두 가지 특별한 고려 사항이 있습니다.

  • 작업 항목의 만든 날짜설정한 *State Previous의 빈 값
  • 작업 항목 만들기는 상태 전환으로 간주됩니다.

Important

테이블에 이전 상태 계산 열을 추가해야 합니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

State Changed =
IF (
    ISBLANK ( 'View Name'[State Previous] ),
    'View Name'[Created Date].[Date] = 'View Name'[Date],
    'View Name'[State Previous] <> 'View Name'[State]
)

계산 열은 행이 상태 전환인지 여부를 식별하는 부울 값입니다. 연산자를 Not Equal To 사용하면 이전 상태가 현재 상태와 일치하지 않는 행을 올바르게 catch합니다. 즉, 비교가 예상대로 True를 반환합니다.

상태 흐름 추가

이전 상태 및 상태 변경 계산 열을 사용하여 지정된 작업 항목의 상태 흐름을 보여 주는 열을 만들 수 있습니다. 이 열 만들기는 이 문서의 목적에 따라 선택 사항입니다.

Important

이전 상태 및 상태 변경된 계산 열을 테이블에 추가해야 합니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

State Flow = 
IF([State Changed], [State Previous], [State]) & " => " & [State]

상태 변경 횟수 추가

더 복잡한 측정값으로 전환할 때 지정된 작업 항목에 대한 데이터 행을 비교하려면 총 상태 변경 횟수를 표현해야 합니다. 상태 변경 횟수 계산 열을 추가하여 표현을 가져옵니다.

Important

상태 변경 계산 열을 테이블에 추가해야 합니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

State Change Count = 
CALCULATE (
    COUNTROWS ( 'View Name' ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State Changed]
) + 0

상태 변경 횟수 추가 - 마지막으로 제안된 시간 및 주 다시 시작 시간(일)

상태 다시 시작 시간(일 )은 매우 복잡한 계산입니다. 첫 번째 단계는 작업 항목이 마지막으로 제안된 상태에 있었던 시간을 찾는 것입니다. 상태 변경 횟수 - 마지막으로 제안된 계산 열을 추가합니다.

참고 항목

프로젝트에서 사용하는 워크플로 상태에 따라 다음 정의를 수정해야 할 수 있습니다. 예를 들어 프로젝트에서 '제안됨' 대신 'New'를 사용하는 경우입니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

State Change Count - Last Proposed = 
CALCULATE (
    MAX ( 'View Name'[State Change Count] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State] = "Proposed"
)

그런 다음, 과거를 더 자세히 살펴보고 이 제안된 상태 이전에 활성 상태가 있는지 확인합니다. 마지막으로 마지막으로 제안된 작업 항목이 활성 상태였던 모든 일을 요약합니다.

모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

State Restart Time in Days = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State Change Count] < EARLIER('View Name'[State Change Count - Last Proposed] ),
    'View Name'[State] <"Proposed"
) + 0

각 데이터 행에 대해 상태 다시 시작 시간(일)이 업데이트되므로 특정 스프린트에서 재작업을 평가하거나 Is Current를 사용하여 개별 작업 항목에 대한 재작업을 검사하는 추세를 만들 수 있습니다.

일 단위의 상태 재작업 시간 추가

주 재시작 시간(일)과 마찬가지로 작업 항목이 완료된 상태 범주에 처음 있을 때의 주 재작업 시간(일)을 찾습니다. 이 시간 이후에는 작업 항목이 완료된 상태가 아닌 상태에서 매일 소비하며 재작업으로 계산됩니다.

  1. "상태 변경 횟수 - 처음 완료됨" 열을 만듭니다. 이 열은 작업 항목이 다른 상태에서 완료됨 상태로 전환되는 횟수를 추적합니다.

    State Change Count - First Completed =
    VAR CompletedState = "Completed"
    RETURN
    CALCULATE(
       COUNTROWS('YourTable'),
       FILTER(
           'YourTable',
           'YourTable'[State] = CompletedState
           && 'YourTable'[State Change Date] = MIN('YourTable'[State Change Date])
       )
    )
    
  2. 모델링 탭에서 새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 검사 표시를 선택합니다.

    State Rework Time in Days = 
    IF (
        ISBLANK ( 'View Name'[State Change Count - First Completed] ),
        0,
        CALCULATE (
            SUM ( 'View Name'[Date Diff in Days] ),
            ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
            'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
            'View Name'[State Change Count] EARLIER ( 'View Name'[State Change Count - First Completed] ),
            'View Name'[State] IN {"Completed", "Closed", "Cut" } = FALSE()
        ) + 0
    )
    

    참고 항목

    프로젝트에서 사용하는 워크플로 상태에 따라 위의 정의를 수정해야 할 수 있습니다. 예를 들어 프로젝트에서 Closed 대신 완료를 사용하는 경우 등이 있습니다.

DAX 함수

이 문서에 추가된 계산 열 및 측정값을 만드는 데 사용되는 DAX 함수에 대한 추가 정보가 이 섹션에 제공됩니다. DAX, 시간 인텔리전스 함수도 참조하세요.

함수 설명
ALLEXCEPT 지정한 열에 적용된 필터를 제외하고 테이블의 모든 컨텍스트 필터를 제거합니다. 기본적으로 ALLEXCEPT ('View Name'', 'View Name'[Work Item Id]) 테이블의 행을 현재 행과 동일한 작업 항목 ID를 공유하는 행으로만 줄입니다.
CALCULATE 이 함수는 거의 모든 예제의 기초입니다. 기본 구조는 식 뒤에 식에 적용되는 일련의 필터입니다.
COUNTROWS 이 함수는 COUNTROWS ( 'View Name' )필터가 적용된 후 다시 기본 행 수를 계산합니다.
DATEDIFF 두 날짜 사이에 교차된 간격 경계의 수를 반환합니다. DATEDIFF 날짜에서 이전날짜를 빼서 날짜 사이의 일 수를 결정합니다.
EARLIER 멘션 열의 외부 평가 패스에서 지정된 열의 현재 값을 반환합니다. 예를 들어 함수 'View Name'[Date] < EARLIER ( 'View Name'[Date] ) 를 사용하여 참조되는 현재 행의 날짜 이전에 발생한 행으로만 데이터 집합을 EARLIER 줄입니다. EARLIER 는 이전 날짜를 참조하지 않습니다. 특히 계산 열의 행 컨텍스트를 정의합니다.
ISBLANK 값이 비어 있는지 여부를 확인하고 TRUE 또는 FALSE를 반환합니다. ISBLANK는 현재 행을 계산하여 Date Previous에 값이 있는지 확인합니다. 그렇지 않은 경우 If 문은 날짜 차이(일)를 1로 설정합니다.
LASTDATE 예를 들어 LASTDATE ( 'View Name'[Date] )식에 LASTDATE 필터를 적용하여 테이블의 모든 행에서 최신 날짜를 찾고 동일한 날짜를 공유하지 않는 행을 제거합니다. 분석 보기에서 생성된 스냅샷 테이블을 사용하여 이 필터는 선택한 기간의 마지막 날을 효과적으로 선택합니다.
LOOKUPVALUE search_columnName 및 search_value 지정된 모든 조건을 충족하는 행의 result_columnName 값을 반환합니다.
MAX 열에서 또는 두 스칼라 식 사이에서 가장 큰 숫자 값을 반환합니다. 모든 필터가 적용된 후 가장 최근 날짜를 결정하기 위해 적용 MAX ( 'View Name'[Date] )합니다.