Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
작업 항목이 특정 워크플로 상태 또는 일련의 상태에서 소비하는 시간은 효율성을 이해하는 데 중요한 측면입니다. 주기 시간 및 리드 타임 분석 위젯은 시간 내 상태의 몇 가지 측정값을 제공합니다. 그러나 이러한 위젯에는 원하는 세부 정보가 없을 수 있습니다.
이 문서에서는 DAX(데이터 분석 식)를 사용하여 작업 항목에서 소요된 시간을 상태 조합으로 평가하는 레시피를 제공합니다. 특히 Power BI 보고서에 다음 측정값 및 계산 열을 추가하고 이를 사용하여 다양한 추세 차트를 생성하는 방법을 알아봅니다. 나열된 첫 번째 필드를 제외한 모든 필드는 계산 열입니다.
| 개수 | 설명 |
|---|---|
| 작업 항목 수 (측정값) | 작업 항목의 마지막 날 항목을 기준으로 고유 작업 항목 수를 계산합니다. |
| 상태 정렬 순서 | 상태 범주 시퀀스에 따라 워크플로 상태를 정렬하는 데 사용할 열을 추가합니다. |
| 이전 날짜 | 날짜 열을 기반으로 이전 날짜를 계산하는 열을 추가합니다. |
| 날짜 차이(일) | Date 및 Date Previous 열 사이의 일 수를 계산하는 열을 추가합니다. |
| 상태의 마지막 날입니다. | 날짜 값이 작업 항목이 상태에 있었던 마지막 날인지 여부를 결정하는 열을 추가합니다. |
| 일 단위의 상태 시간 | 작업 항목이 각 주에서 소요된 일 수를 계산하는 열을 추가합니다. |
| 이전 상태 | 데이터 테이블의 각 행에 대한 이전 상태를 식별하는 열을 추가합니다. |
| 상태 변경됨 | 작업 항목이 한 상태에서 다른 상태로 전환된 날짜를 결정하는 열을 추가합니다. |
| 스테이트 플로우 | 작업 항목이 한 상태에서 다른 상태로 전환됨에 따라 상태 흐름을 보여 주는 열을 추가합니다. |
| 상태 변경 횟수 | 작업 항목이 한 상태에서 다른 상태로 전환된 횟수를 계산하는 열을 추가합니다. |
| 상태 변경 횟수 - 처음 완료됨 | 작업 항목이 처음으로 완료됨 상태로 전환되는 횟수를 결정하는 열을 추가합니다. 즉, 다른 상태에서 완료됨 상태로 이동할 때입니다. |
| 상태 변경 횟수 - 마지막으로 제안된 항목 | 작업 항목이 이후 상태로 전환된 후 이전에 제안된 상태인지 여부를 결정하는 열을 추가합니다. |
| 상태 다시 시작 시간(일) | 작업 항목이 다시 시작 상태에서 소요된 일을 계산하는 열을 추가합니다. |
| 일 단위의 상태 재작업 시간 | 작업 항목이 완료된 상태가 아닌 상태에서 소비하는 일을 계산하는 열을 추가합니다. |
중요한
- 이 문서에 표시된 예제에 따라 계산 열 또는 측정값을 추가할 때 뷰 이름을 분석 뷰 또는 데이터 테이블의 테이블 이름으로 바꿉니다. 예를 들어 보기 이름을 활성 버그로 대체합니다.
- Analytics는 일별 수정 버전을 지원하지 않습니다. 이러한 예제는 분석 보기를 참조할 때 일별 간격을 사용할 때 가장 정밀도가 높습니다.
- 모든 일별 또는 기간 내(매주/매월) 수정은 계산에서 무시됩니다. 이로 인해 작업 항목이 하루보다 짧은 기간 동안 "진행 중"인 경우, 시간 "진행 중"이 표시되지 않는 작업 항목과 같은 특정 시나리오에서 예기치 않은 결과가 발생할 수 있습니다.
- Power BI 기본 집계는 측정값을 작성하는 대신 가능할 때마다 사용됩니다.
- 일부 계산에는 BLANK 대신 모든 행에 숫자 값이 포함되도록 하는 +0이 포함됩니다.
- 프로젝트에서 사용하는 워크플로 상태에 따라 계산된 열 정의 중 일부를 수정해야 할 수 있습니다. 예를 들어 프로젝트에서 제안됨, 진행 중 및 완료 대신 새로 만들기, 활성 및 닫힘을 사용하는 경우입니다.
- 이 문서에서 참조하는 날짜 열은 Azure DevOps의 네이티브 열이 아닙니다. 상태의 시간 보고서를 용이하게 하기 위해 PowerBI 내에서 만든 파생 열입니다. "변경된 날짜" 또는 "상태 변경 날짜"와 같은 기존 날짜 관련 열을 사용하여 이 열을 작성할 수 있습니다.
필수 조건
| 범주 | 요구 사항 |
|---|---|
| 접근 수준 |
-
프로젝트 멤버. - 적어도 기본 접근 권한. |
| 사용 권한 | 기본적으로 프로젝트 멤버는 분석을 쿼리하고 뷰를 만들 수 있는 권한이 있습니다. 서비스 및 기능 사용 및 일반 데이터 추적 활동과 관련된 기타 필수 구성 요소에 대한 자세한 내용은 Analytics에 액세스하기 위한 사용 권한 및 필수 구성 요소를 참조 하세요. |
참고
이 문서에 설명된 모든 시간 단위 측정값을 실행하려면 분석 뷰, 파워 쿼리 또는 OData 쿼리에 다음 필드를 포함해야 합니다. 기본 필드 외에도 만든 날짜 및 상태 범주( 영역 경로, 할당 대상, 반복 경로, 상태, 제목, 작업 항목 ID 및 작업 항목 형식)
일 단위의 세분성을 기반으로 하는 분석 보기를 고려하는 것이 좋습니다. 이 문서의 예제는 60일간의 기록 및 일별 세분성이 선택된다는 점을 제외하고 사용자 지정 분석 보기를 기반으로 Power BI에서 활성 버그 보고서 만들기에 정의된 활성 버그 분석 보기를 기반으로 합니다. 완료된 작업 항목 또는 닫힌 작업 항목을 검토할지 여부도 결정합니다.
작업 항목 수 측정값 추가
보고서를 빠르게 생성하는 작업을 간소화하기 위해 Power BI에서 기본 집계를 사용하도록 Analytics 뷰를 디자인했습니다. 기본 집계와 측정값의 차이를 설명하기 위해 간단한 작업 항목 수 측정값부터 시작합니다.
Power BI Desktop에 분석 보기를 로드합니다. 자세한 내용은 Power BI Data Connector 연결, 분석 보기 연결를 참조하세요.
데이터 테이블을 선택한 다음 표 도구 탭에서 리본 메뉴의 계산 섹션에서 새 측정값을 선택합니다.
기본 텍스트를 다음 코드로 바꾼 다음 확인 표시를
선택합니다.Work Items Count=CALCULATE(COUNTROWS ('View Name'),LASTDATE ('View Name'[Date]))작업 항목 수
측정값은 , , DAX 함수를 사용하며 이에 대해 자세한 내용은 이 문서의 뒷부분에서 설명합니다 .참고
뷰 이름을 분석 보기의 테이블 이름으로 바꿔야 합니다. 예를 들어, 여기서 보기 이름을 활성 버그로 대체합니다.
측정값이 계산 열과 어떻게 다른가요?
측정값은 전체 테이블을 평가하는 반면, 계산 열은 특정 단일 행에 관련됩니다. 자세한 내용은 DAX의 계산 열 및 측정값을 참조하세요.
작업 항목 수 측정값을 작업 항목 ID에 따라 기본 개수 집계와 비교합니다. 다음 이미지는 카드 시각적 개체와 작업 항목 수 측정값을 첫 번째 카드에 추가하고 두 번째 카드에 작업 항목 ID 속성을 추가하여 만듭니다.
기본 집계를 사용하여 올바른 개수를 얻으려면 Is Current 필터를 'True'로 설정합니다. 기본 집계에 필터를 적용하는 이 패턴은 이 문서에 제공된 많은 예제의 기초입니다.
상태 정렬 순서 추가
기본적으로 Power BI는 시각화에서 사전순으로 정렬된 상태를 표시합니다. 상태에서 시간을 시각화할 때 제안됨이 진행 중 뒤에 나타나면 오해를 불러일으킬 수 있습니다. 다음 단계는 이 문제를 해결하는 데 도움이 됩니다.
상태 범주 필드가 분석 보기에 포함되어 있는지 확인합니다. 이 필드는 모든 기본 공유 보기에 포함됩니다.
데이터 테이블을 선택한 다음 표 도구 탭에서 리본 메뉴의 계산 섹션에서 새 열을 선택합니다.
기본 텍스트를 다음 코드로 바꾼 다음 확인 표시를
선택합니다.State Sort Order = SWITCH ( 'View Name'[State Category], "Proposed", 1, "InProgress", 2, "Resolved", 3, 4 )다음 예제를 참조하십시오.
참고
상태 범주에서 제공하는 것보다 더 세분성이 필요한 경우 정의를 수정해야 할 수 있습니다. 상태 범주는 상태 사용자 지정에 관계없이 모든 작업 항목 유형에서 올바른 정렬을 제공합니다.
데이터 뷰를 열고 상태 열을 선택합니다.
열 도구 탭에서 열별로 정렬을 선택한 다음 상태 정렬 순서 필드를 선택합니다.
이전 날짜 추가
상태를 계산하기 위한 다음 단계에서는 데이터 세트의 각 데이터 행에 대해 이전 간격(일, 주, 월)을 매핑해야 합니다. 계산 열을 사용하는 간단한 계산입니다. 일반적으로 표시된 대로 이 열을 정의합니다.
Date Previous =
PREVIOUSDAY ( 'View Name'[Date] )
그러나 이 방법에는 두 가지 주요 문제가 있습니다.
- 그것은 매일 기간에 대해서만 작동합니다.
- 데이터의 간격을 처리하지 않습니다. 예를 들어 작업 항목이 프로젝트 간에 이동되는 경우입니다.
이러한 문제를 해결하려면, 날짜 필드를 스캔하여 계산 열을 통해 전날을 찾아야 합니다.
날짜 이전 계산 열을 추가하려면 테이블 도구 탭에서 새 열을 선택하고, 기본 텍스트를 다음 코드로 바꾼 다음, 확인 표시를
선택합니다.
Date Previous =
CALCULATE (
MAX ( 'View Name'[Date] ),
ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
'View Name'[Date] < EARLIER ( 'View Name'[Date] )
)
Date Previous 계산된 열은 세 가지 MAXDAX 함수 ALLEXCEPT, EARLIER를 사용하며, 이 함수들에 대한 더 자세한 내용은 이 문서의 후반부에 설명되어 있습니다. 열은 계산되므로 테이블의 모든 행에 대해 실행되며, 열이 실행 될 때마다 해당 특정 행의 컨텍스트가 있습니다.
팁
날짜 및 이전 날짜 필드의 상황에 맞는 메뉴에서 날짜 계층 대신 날짜를 선택하여 이러한 필드에 대한 단일 날짜를 확인합니다.
일 단위로 날짜 차이 추가
Date Previous 는 각 행의 이전 날짜와 현재 날짜 간의 차이를 계산합니다. 날짜 차이(일)를 사용하여 각 기간 사이의 일 수를 계산합니다. 일별 스냅샷에 있는 대부분의 행의 경우 값은 1과 같습니다. 그러나 데이터 세트에 간격이 있는 많은 작업 항목의 경우 값이 1보다 큽니다.
중요한
테이블에 Date Previous 계산 열을 추가했는지 확인해야 합니다.
이전 날짜가 비어 있는 데이터 세트의 첫 날을 고려하는 것이 중요합니다. 이 예제에서는 계산을 일관성 있게 유지하기 위해 해당 행에 표준 값 1을 제공합니다.
모델링 탭에서
새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 확인 표시를 선택합니다.
Date Diff in Days =
IF (
ISBLANK ( 'View Name'[Date Previous] ),
1,
DATEDIFF (
'View Name'[Date Previous],
'View Name'[Date],
DAY
)
)
이 계산 열은 이 문서의 뒷부분에 설명된 ISBLANK 및 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를 사용하여 날짜 또는 최신 정보를 사용하여 각 행을 추세로 평가할 수 있습니다.
중요한
날짜 차이(일) 및 상태의 마지막 날인지 여부 계산 열을 테이블에 추가해야 합니다.
모델링 탭에서
새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 확인 표시를 선택합니다.
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
상태 시간(일)을 기준으로 누적 열형 추세 차트 만들기
다음은 상태 시간을 일 단위로 표시하는 누적 세로 막대형 차트입니다. 첫 번째 차트는 시간에 따른 각 상태의 작업 항목 수를 보여줍니다.
두 번째 차트는 활성 작업 항목이 특정 상태에 있는 평균 일수 추세를 보여 줍니다.
일 단위의 상태 시간 추가 - 최신 날짜(상태의 마지막 날임)
테이블의 각 작업 항목에 대한 Time-in-State를 평가하거나 영역 경로와 같은 필드로 필터링할 때 집계에 State Time in Days 열을 사용하지 마세요. 집계는 작업 항목이 상태에 있던 매일의 값을 사용합니다. 예를 들어, 작업 항목이 월요일에 진행 중 상태였고 목요일에 완료됨으로 이동한 경우, 상태에 머문 시간은 3일이지만 상태 시간 (일) 열의 합계는 6일입니다. 이는 잘못된 계산입니다.
이 문제를 해결하려면 State Time in Days을 사용하고 Is Last Day In State 필터를 '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 계산 열을 사용하여 각 작업 항목에 대한 이전 상태와 같은 과거 값을 조회할 수도 있습니다.
모델링 탭에서
새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 확인 표시를 선택합니다.
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의 빈 값을 작업 항목의 만든 날짜로 설정함
- 작업 항목 만들기는 상태 전환으로 간주됩니다.
중요한
State Previous 계산 열을 테이블에 추가해야 합니다.
모델링 탭에서
새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 확인 표시를 선택합니다.
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를 반환합니다.
상태 흐름 추가
이전 상태 및 상태 변경 계산 열을 사용하여 지정된 작업 항목의 상태 흐름을 보여 주는 열을 만들 수 있습니다. 이 열 만들기는 이 문서의 목적에 따라 선택 사항입니다.
모델링 탭에서
새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 확인 표시를 선택합니다.
State Flow =
IF([State Changed], [State Previous], [State]) & " => " & [State]
상태 변경 횟수 추가
더 복잡한 측정값으로 전환할 때 지정된 작업 항목에 대한 데이터 행을 비교하려면 총 상태 변경 횟수를 표현해야 합니다. 상태 변경 횟수 계산 열을 추가하여 표현을 얻습니다.
중요한
상태 변경 계산 열을 테이블에 추가해야 합니다.
모델링 탭에서
새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 확인 표시를 선택합니다.
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를 사용하여 개별 작업 항목에 대한 재작업을 검사하는 추세를 만들 수 있습니다.
일 단위의 상태 재작업 시간 추가
상태 재시작 시간(일수)과 마찬가지로, 상태 재작업 시간(일수)은 작업 항목이 '완료된' 상태 범주에 처음으로 들어갔을 때의 시간을 찾습니다. 그 시간 이후, 작업 항목이 완료되지 않은 상태에 있는 날마다 재작업으로 간주됩니다.
"상태 변경 횟수 - 처음 완료됨" 열을 만듭니다. 이 열은 작업 항목이 다른 상태에서 완료됨 상태로 전환되는 횟수를 추적합니다.
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]) ) )모델링 탭에서
새 열을 선택한 다음 기본 텍스트를 다음 코드로 바꾸고 확인 표시를 선택합니다.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식에 LASTDATE ( 'View Name'[Date] ) 필터를 적용하여 테이블의 모든 행에서 최신 날짜를 찾고 동일한 날짜를 공유하지 않는 행을 제거합니다. 분석 뷰에서 생성된 스냅샷 테이블을 사용하여 이 필터는 선택한 기간의 마지막 날을 효과적으로 선택합니다. |
LOOKUPVALUE |
search_columnName 및 search_value로 지정된 모든 조건을 충족하는 행의 result_columnName 값을 반환합니다. |
MAX |
열에서 또는 두 스칼라 식 사이에서 가장 큰 숫자 값을 반환합니다. 모든 필터가 적용된 후 가장 최근 날짜를 결정하기 위해 적용 MAX ( 'View Name'[Date] )합니다. |